Class: Knifecosmic::CosmicServerReboot

Inherits:
Chef::Knife show all
Includes:
Chef::Knife::KnifecosmicBase
Defined in:
lib/chef/knife/cosmic_server_reboot.rb

Instance Method Summary collapse

Methods included from Chef::Knife::KnifecosmicBase

included

Instance Method Details

#confirm_action(question) ⇒ Object



88
89
90
91
92
93
94
95
96
# File 'lib/chef/knife/cosmic_server_reboot.rb', line 88

def confirm_action(question)
  return true if locate_config_value(:yes)
  result = ui.ask_question(question, :default => "Y" )
  if result == "Y" || result == "y" then
    return true
  else
    return false
  end
end

#runObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/chef/knife/cosmic_server_reboot.rb', line 38

def run
  validate_base_options
 
  @name_args.each do |hostname|
    server = connection.get_server(hostname)

    if !server then
      ui.error("Server '#{hostname}' not found")
      next
    end

    rules = connection.list_port_forwarding_rules
 
    show_object_details(server, connection, rules)

    result = confirm_action("Do you really want to reboot this server")
 
    if result
      print "#{ui.color("Rebooting", :magenta)}"
      connection.reboot_server(hostname)
      puts "\n"
      ui.msg("Rebooted server #{hostname}")
    end
  end
end

#show_object_details(s, connection, rules) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/chef/knife/cosmic_server_reboot.rb', line 64

def show_object_details(s, connection, rules)
  return if locate_config_value(:yes)
  
  object_fields = []
  object_fields << ui.color("Name:", :cyan)
  object_fields << s['name'].to_s
  object_fields << ui.color("Public IP:", :cyan)
  object_fields << (connection.get_server_public_ip(s, rules) || '')
  object_fields << ui.color("Service:", :cyan)
  object_fields << s['serviceofferingname'].to_s
  object_fields << ui.color("Template:", :cyan)
  object_fields << s['templatename']
  object_fields << ui.color("Domain:", :cyan)
  object_fields << s['domain']
  object_fields << ui.color("Zone:", :cyan)
  object_fields << s['zonename']
  object_fields << ui.color("State:", :cyan)
  object_fields << s['state']

  puts "\n"
  puts ui.list(object_fields, :uneven_columns_across, 2)
  puts "\n"
end