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