1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/hp/models/lb/load_balancer.rb
Paul Thornthwaite ec8b940b2c Standardise on collection methods
Done with `rubocop --auto-correct --only CollectionMethods`
2014-05-26 16:22:07 +01:00

82 lines
2 KiB
Ruby

require 'fog/core/model'
module Fog
module HP
class LB
class LoadBalancer < Fog::Model
identity :id
attribute :name
attribute :protocol
attribute :port
attribute :algorithm
attribute :status
attribute :status_description, :aliases => 'statusDescription'
attribute :nodes
attribute :virtual_ips, :aliases => 'virtualIps'
attribute :node_count, :aliases => 'nodeCount'
attribute :created_at, :aliases => 'created'
attribute :updated_at , :aliases => 'updated'
def destroy
requires :id
service.delete_load_balancer(id)
true
end
def ready?
self.status == 'ACTIVE'
end
def save
identity ? update : create
end
def nodes
@nodes ||= begin
Fog::HP::LB::Nodes.new({
:service => service,
:load_balancer => self
})
end
end
def nodes=(new_nodes=[])
nodes.load(new_nodes)
end
private
def create
requires :name, :nodes
options = {}
options['virtualIps'] = virtual_ips if virtual_ips
options['port'] = port if port
options['protocol'] = protocol if protocol
options['algorithm'] = algorithm if algorithm
merge_attributes(service.create_load_balancer(name, nodes_to_hash, options).body)
true
end
def update
requires :id
options = {}
options['name'] = name if name
options['algorithm'] = algorithm if algorithm
service.update_load_balancer(id, options).body
true
end
def nodes_to_hash
if nodes
nodes.map do |node|
{ 'address' => node.address, 'port' => node.port, 'condition' => node.condition }
end
end
end
end
end
end
end