Class: CivoCLI::LoadBalancer

Inherits:
Thor
  • Object
show all
Defined in:
lib/loadbalancer.rb

Instance Method Summary collapse

Instance Method Details

#create(*args) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/loadbalancer.rb', line 44

def create(*args)
  CivoCLI::Config.set_api_auth
  backends = {}
  options[:backend].each do | key, value |
    backends[key] = value
  end
  backendarray = []
  backendarray << backends
  loadbalancer = Civo::LoadBalancer.create(hostname: options[:hostname] ||= nil, 
    protocol: options[:protocol], 
    tls_certificate: options[:tls_certificate], 
    tls_key: options[:tls_key], 
    port: options[:port], 
    max_request_size: options[:max_request_size], 
    policy: options[:policy], 
    health_check_path: options[:health_check_path], 
    fail_timeout: options[:fail_timeout], 
    max_conns: options[:max_conns], 
    ignore_invalid_backend_tls: options[:ignore_invalid_backend_tls], 
    backends: backendarray)
  
  puts "Created a new Load Balancer with hostname #{loadbalancer.hostname.colorize(:green)}"
  
rescue Flexirest::HTTPException => e
  puts e.result.reason.colorize(:red)
  exit 1
end

#listObject



4
5
6
7
8
9
10
11
12
# File 'lib/loadbalancer.rb', line 4

def list
  CivoCLI::Config.set_api_auth
  rows = []
  Civo::LoadBalancer.all.items.each do |loadbalancer|
    rows << [loadbalancer.id, loadbalancer.hostname, loadbalancer.protocol, loadbalancer.port, loadbalancer.tls_certificate, loadbalancer.tls_key, loadbalancer.policy, loadbalancer.health_check_path, loadbalancer.fail_timeout, loadbalancer.max_conns, loadbalancer.ignore_invalid_backend_tls, loadbalancer.backends.items.map(&:instance_id).join(", ")]
  end
  
  puts Terminal::Table.new headings: ['ID', 'Hostname', 'Protocol', 'Port', "TLS\nCert", 'TLS key', 'Policy', "Health Check\nPath", "Fail\nTimeout", "Max.\nConnections", "Ignore Invalid\nBackend TLS?", 'Backends'], rows: rows
end

#remove(id) ⇒ Object



131
132
133
134
135
136
137
138
139
# File 'lib/loadbalancer.rb', line 131

def remove(id)
  CivoCLI::Config.set_api_auth
  loadbalancer = Civo::LoadBalancer.all.items.detect {|key| key.id == id}
  Civo::LoadBalancer.remove(id: id)
  puts "Removed the load balancer #{loadbalancer.hostname.colorize(:green)} with ID #{loadbalancer.id.colorize(:green)}"
rescue Flexirest::HTTPException => e
  puts e.result.reason.colorize(:red)
  exit 1
end

#update(id, hostname = nil, protocol = nil, tls_certificate = nil, tls_key = nil, port = nil, max_request_size = nil, policy = nil, health_check_path = nil, fail_timeout = nil, max_conns = nil, ignore_invalid_backend_tls = nil, backend = nil) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/loadbalancer.rb', line 101

def update(id, hostname = nil, protocol = nil, tls_certificate = nil, tls_key = nil, port = nil, max_request_size = nil, policy = nil, health_check_path = nil, fail_timeout = nil, max_conns = nil, ignore_invalid_backend_tls = nil, backend = nil)
  CivoCLI::Config.set_api_auth
  loadbalancer = Civo::LoadBalancer.all.items.detect {|key| key.id == id}
  if options[:backend]
    backends = {}
    options[:backend].each do | key, value |
      backends[key] = value
  end
  backendarray = []
  backendarray << backends
  end
  Civo::LoadBalancer.update(id: loadbalancer.id, 
    hostname: options[:hostname] || loadbalancer.hostname, 
    protocol: options[:protocol] || loadbalancer.protocol, 
    tls_certificate: options[:tls_certificate] || loadbalancer.tls_certificate,
    tls_key: options[:tls_key] || loadbalancer.tls_key,
    port: options[:port] || loadbalancer.port,
    max_request_size: options[:max_request_size] || loadbalancer.max_request_size,
    policy: options[:policy] || loadbalancer.policy,
    health_check_path: options[:health_check_path] || loadbalancer.health_check_path,
    fail_timeout: options[:fail_timeout] || loadbalancer.fail_timeout,
    max_conns: options[:max_conns] || loadbalancer.max_conns, 
    ignore_invalid_backend_tls: options[:ignore_invalid_backend_tls] || loadbalancer.ignore_invalid_backend_tls,
    backends: backendarray || loadbalancer.backends
  )
  puts "Updated Load Balancer #{loadbalancer.hostname.colorize(:green)}"
end