Class: LoadBalancer
- Inherits:
-
CloudstackCli::Base
- Object
- Thor
- CloudstackCli::Base
- LoadBalancer
- Defined in:
- lib/cloudstack-cli/commands/load_balancer.rb
Constant Summary
Constants included from CloudstackCli::Helper
CloudstackCli::Helper::ASYNC_STATES
Instance Attribute Summary
Attributes inherited from CloudstackCli::Base
Instance Method Summary collapse
Methods inherited from CloudstackCli::Base
Methods included from CloudstackCli::OptionResolver
#resolve_account, #resolve_compute_offering, #resolve_disk_offering, #resolve_domain, #resolve_iso, #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, #get_server_fqdn, #get_server_public_ip, #get_ssh_port_forwarding_rule, #print_job_status, #print_options, #run_background_jobs, #update_job_status, #update_jobs, #watch_jobs
Instance Method Details
#add(name) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/cloudstack-cli/commands/load_balancer.rb', line 59 def add(name) resolve_project default_args = .dup default_args.delete(:servers) servers = [:servers].map do |server| client.list_virtual_machines(default_args.merge(name: server)).first end.compact unless servers.size > 0 say "No servers found with the following name(s): #{options[:servers].join(', ')}", :yellow exit 1 end unless rule = client.list_load_balancer_rules(default_args.merge(name: name)).first say "Error: LB rule with name #{name} not found.", :red exit 1 end say "Add #{servers.map{|s| s['name']}.join(', ')} to rule #{name} ", :yellow lb = client.assign_to_load_balancer_rule( { id: rule['id'], virtualmachine_ids: servers.map{|s| s['id']}.join(',') }.merge(default_args) ) if lb['success'] say " OK.", :green else say " Failed.", :red end end |
#create(name) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/cloudstack-cli/commands/load_balancer.rb', line 37 def create(name) resolve_project = {ip_address: [:ip]} [:project_id] = [:project_id] if [:project_id] unless ip = client.list_public_ip_addresses().first say "Error: IP #{options[:ip]} not found.", :red exit 1 end [:private_port] = [:public_port] if [:private_port] == nil [:name] = name [:publicip_id] = ip['id'] say "Create rule #{name}...", :yellow rule = client.create_load_balancer_rule() say " OK!", :green end |
#list ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/cloudstack-cli/commands/load_balancer.rb', line 5 def list resolve_project rules = client.list_load_balancer_rules() if rules.size < 1 puts "No load balancer rules found." else table = [%w(Name Public-IP Public-Port Private-Port Algorithm)] rules.each do |rule| table << [ rule['name'], rule['publicip'], rule['publicport'], rule['privateport'], rule['algorithm'] ] end print_table table say "Total number of rules: #{rules.count}" end end |