class LoadBalancer
Public Instance Methods
add(name)
click to toggle source
# File lib/cloudstack-cli/commands/load_balancer.rb 68 def add(name) 69 resolve_project 70 default_args = options.dup 71 default_args.delete(:servers) 72 73 servers = options[:servers].map do |server| 74 client.list_virtual_machines(default_args.merge(name: server)).first 75 end.compact 76 77 unless servers.size > 0 78 say "No servers found with the following name(s): #{options[:servers].join(', ')}", :yellow 79 exit 1 80 end 81 82 unless rule = client.list_load_balancer_rules(default_args.merge(name: name)).first 83 say "Error: LB rule with name #{name} not found.", :red 84 exit 1 85 end 86 87 say "Add #{servers.map{|s| s['name']}.join(', ')} to rule #{name} ", :yellow 88 lb = client.assign_to_load_balancer_rule( 89 { 90 id: rule['id'], 91 virtualmachine_ids: servers.map{|s| s['id']}.join(',') 92 }.merge(default_args) 93 ) 94 95 if lb['success'] 96 say " OK.", :green 97 else 98 say " Failed.", :red 99 end 100 end
create(name)
click to toggle source
# File lib/cloudstack-cli/commands/load_balancer.rb 46 def create(name) 47 resolve_project 48 ip_options = {ip_address: options[:ip]} 49 ip_options[:project_id] = options[:project_id] if options[:project_id] 50 unless ip = client.list_public_ip_addresses(ip_options).first 51 say "Error: IP #{options[:ip]} not found.", :red 52 exit 1 53 end 54 options[:private_port] = options[:public_port] if options[:private_port] == nil 55 options[:name] = name 56 options[:publicip_id] = ip['id'] 57 say "Create rule #{name}...", :yellow 58 rule = client.create_load_balancer_rule(options) 59 say " OK!", :green 60 end
list()
click to toggle source
# File lib/cloudstack-cli/commands/load_balancer.rb 7 def list 8 resolve_project 9 rules = client.list_load_balancer_rules(options) 10 if rules.size < 1 11 puts "No load balancer rules found." 12 else 13 case options[:format].to_sym 14 when :yaml 15 puts({rules: rules}.to_yaml) 16 when :json 17 puts JSON.pretty_generate(rules: rules) 18 else 19 table = [%w(Name Public-IP Public-Port Private-Port Algorithm)] 20 rules.each do |rule| 21 table << [ 22 rule['name'], 23 rule['publicip'], 24 rule['publicport'], 25 rule['privateport'], 26 rule['algorithm'] 27 ] 28 end 29 print_table table 30 say "Total number of rules: #{rules.count}" 31 end 32 end 33 end