Class: Router

Inherits:
CloudstackCli::Base show all
Defined in:
lib/cloudstack-cli/commands/router.rb

Constant Summary

Constants included from CloudstackCli::Helper

CloudstackCli::Helper::ASYNC_STATES

Instance Attribute Summary

Attributes inherited from CloudstackCli::Base

#config

Instance Method Summary collapse

Methods inherited from CloudstackCli::Base

exit_on_failure?, start

Methods included from CloudstackCli::OptionResolver

#resolve_account, #resolve_cluster, #resolve_compute_offering, #resolve_disk_offering, #resolve_domain, #resolve_host, #resolve_ip_network_list, #resolve_iso, #resolve_iso_for_vm_deployment, #resolve_networks, #resolve_project, #resolve_snapshot, #resolve_template, #resolve_virtual_machine, #resolve_zone, #vm_options_to_params

Methods included from CloudstackCli::Helper

#ask_number, #bootstrap_server, #bootstrap_server_interactive, #create_port_rules, #create_server, #get_server_default_nic, #pf_rule_to_object, #print_job_status, #print_options, #run_background_jobs, #update_job_status, #update_jobs, #watch_jobs

Methods inherited from Thor

banner, basename2, old_subcommand, subcommand

Instance Method Details

#destroy(*names) ⇒ Object



117
118
119
120
121
122
123
124
125
126
# File 'lib/cloudstack-cli/commands/router.rb', line 117

def destroy(*names)
  routers = names.map {|name| get_router(name)}
  print_routers(routers)
  exit unless options[:force] || yes?("\nDestroy router(s) above? [y/N]:", :magenta)
  jobs = routers.map do |router|
    {id: client.destroy_router({id: router['id']}, {sync: true})['jobid'], name: "Destroy router #{router['name']}"}
  end
  puts
  watch_jobs(jobs)
end

#listObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/cloudstack-cli/commands/router.rb', line 21

def list
  resolve_project
  resolve_zone
  

  routers = client.list_routers(options)
  # show all routers unless project or account is set
  if !options[:project] && !options[:account]
    client.list_projects(listall: true).each do |project|
      routers = routers + client.list_routers(
        options.merge(projectid: project['id'])
      )
    end
  end
  options[:listall] = true
  print_routers(routers, options)
  execute_router_commands(options[:command].downcase, routers) if options[:command]
end

#list_from_file(file) ⇒ Object



49
50
51
52
53
# File 'lib/cloudstack-cli/commands/router.rb', line 49

def list_from_file(file)
  routers = parse_file(file)["routers"]
  print_routers(routers, options)
  execute_router_commands(options[:command].downcase, routers) if options[:command]
end

#reboot(*names) ⇒ Object



83
84
85
86
87
88
89
90
91
92
# File 'lib/cloudstack-cli/commands/router.rb', line 83

def reboot(*names)
  routers = names.map {|name| client.list_routers(name: name).first}
  print_routers(routers)
  exit unless options[:force] || yes?("\nReboot router(s) above? [y/N]:", :magenta)
  jobs = routers.map do |router|
    {id: client.reboot_router({id: router['id']}, {sync: true})['jobid'], name: "Reboot router #{router['name']}"}
  end
  puts
  watch_jobs(jobs)
end

#show(*names) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
# File 'lib/cloudstack-cli/commands/router.rb', line 130

def show(*names)
  routers = names.map {|name| get_router(name)}
  table = []
  routers.each do |router|
    router.each do |key, value|
      table << [ set_color("#{key}:", :yellow), "#{value}" ]
    end
    table << [ "-" * 20 ] unless router == routers[-1]
  end
  print_table table
end

#start(*names) ⇒ Object



70
71
72
73
74
75
76
77
78
79
# File 'lib/cloudstack-cli/commands/router.rb', line 70

def start(*names)
  routers = names.map {|name| get_router(name)}
  print_routers(routers)
  exit unless options[:force] || yes?("\nStart router(s) above? [y/N]:", :magenta)
  jobs = routers.map do |router|
    {id: client.start_router({id: router['id']}, {sync: true})['jobid'], name: "Start router #{router['name']}"}
  end
  puts
  watch_jobs(jobs)
end

#stop(*names) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/cloudstack-cli/commands/router.rb', line 57

def stop(*names)
  routers = names.map {|name| get_router(name)}
  print_routers(routers)
  exit unless options[:force] || yes?("\nStop router(s) above? [y/N]:", :magenta)
  jobs = routers.map do |router|
    {id: client.stop_router({id: router['id']}, {sync: true})['jobid'], name: "Stop router #{router['name']}"}
  end
  puts
  watch_jobs(jobs)
end

#stop_start(*names) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/cloudstack-cli/commands/router.rb', line 96

def stop_start(*names)
  routers = names.map {|name| get_router(name)}
  print_routers(routers)
  exit unless options[:force] || yes?("\nRestart router(s) above? [y/N]:", :magenta)
  jobs = routers.map do |router|
    {id: client.stop_router({id: router['id']}, {sync: true})['jobid'], name: "Stop router #{router['name']}"}
  end
  puts
  watch_jobs(jobs)

  jobs = routers.map do |router|
    {id: client.start_router({id: router['id']}, {sync: true})['jobid'], name: "Start router #{router['name']}"}
  end
  puts
  watch_jobs(jobs)

  say "Finished.", :green
end