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_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
#add(name) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/cloudstack-cli/commands/load_balancer.rb', line 68 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): #{[: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
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/cloudstack-cli/commands/load_balancer.rb', line 46 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 #{[: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
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/cloudstack-cli/commands/load_balancer.rb', line 7 def list resolve_project rules = client.list_load_balancer_rules() if rules.size < 1 puts "No load balancer rules found." else case [:format].to_sym when :yaml puts({rules: rules}.to_yaml) when :json puts JSON.pretty_generate(rules: rules) 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 end |