create_load_balancer(name, nodes, options={})
click to toggle source
def create_load_balancer(name, nodes, options={})
response = Excon::Response.new
response.status = 202
nodes.each do |n|
n['id'] = Fog::HP::Mock.uuid.to_s
n['condition'] = 'ENABLED'
n['status'] = 'ONLINE'
end
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'name' => name,
'protocol' => options['protocol'] || 'HTTP',
'port' => options['port'] || '80',
'algorithm' => options['algorithm'] || 'ROUND_ROBIN',
'status' => 'ACTIVE',
'created' => '2012-01-01T13:32:20Z',
'updated' => '2012-01-01T13:32:20Z',
'nodes' => nodes
}
if (!options['virtualIps'].nil? && !options['virtualIps'].empty?)
data['virtualIps'] = options['virtualIps']
else
data['virtualIps'] = [{
'ipVersion' => 'IPV4',
'type' => 'PUBLIC',
'id' => Fog::HP::Mock.uuid.to_s,
'address' => Fog::HP::Mock.ip_address
}]
end
self.data[:lbs][data['id']] = data
response.body = data
response
end
create_load_balancer_node(load_balancer_id, address, port, options={})
click to toggle source
def create_load_balancer_node(load_balancer_id, address, port, options={})
response = Excon::Response.new
if get_load_balancer(load_balancer_id)
response.status = 202
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'address' => address,
'port' => port,
'condition' => options['condition'] || 'ENABLED',
'status' => 'ONLINE'
}
self.data[:lbs][load_balancer_id]['nodes'] << data
response.body = {'nodes' => [data]}
response
else
raise Fog::HP::LB::NotFound
end
end
data()
click to toggle source
def data
self.class.data[@hp_access_key]
end
delete_load_balancer(load_balancer_id)
click to toggle source
def delete_load_balancer(load_balancer_id)
response = Excon::Response.new
if list_load_balancers.body['loadBalancers'].find { |_| _['id'] == load_balancer_id }
response.status = 202
response
else
raise Fog::HP::LB::NotFound
end
end
delete_load_balancer_node(load_balancer_id, node_id)
click to toggle source
def delete_load_balancer_node(load_balancer_id, node_id)
response = Excon::Response.new
if get_load_balancer(load_balancer_id)
if get_load_balancer_node(load_balancer_id, node_id)
response.status = 202
nodes = delete_node(load_balancer_id, node_id)
self.data[:lbs][load_balancer_id]['nodes'] = nodes
response
else
raise Fog::HP::LB::NotFound
end
else
raise Fog::HP::LB::NotFound
end
end
delete_node(load_balancer_id, node_id)
click to toggle source
def delete_node(load_balancer_id, node_id)
nodes = list_load_balancer_nodes(load_balancer_id).body['nodes']
nodes.reject {|n| n['id'] == node_id}
end
find_node(load_balancer_id, node_id)
click to toggle source
def find_node(load_balancer_id, node_id)
nodes = list_load_balancer_nodes(load_balancer_id).body['nodes']
nodes.find {|n| n['id'] == node_id}
end
get_load_balancer(load_balancer_id)
click to toggle source
def get_load_balancer(load_balancer_id)
response = Excon::Response.new
if lb = list_load_balancers.body['loadBalancers'].find { |_| _['id'] == load_balancer_id }
response.status = 200
response.body = lb
response
else
raise Fog::HP::LB::NotFound
end
end
get_load_balancer_node(load_balancer_id, node_id)
click to toggle source
def get_load_balancer_node(load_balancer_id, node_id)
response = Excon::Response.new
if get_load_balancer(load_balancer_id)
if node = find_node(load_balancer_id, node_id)
response.status = 200
response.body = node
response
else
raise Fog::HP::LB::NotFound
end
else
raise Fog::HP::LB::NotFound
end
end
list_algorithms()
click to toggle source
def list_algorithms
response = Excon::Response.new
algorithms = self.data[:algorithms].values
response.status = 200
response.body = { 'algorithms' => algorithms }
response
end
list_limits()
click to toggle source
def list_limits
response = Excon::Response.new
limits = self.data[:limits].values
response.status = 200
response.body = { 'limits' => limits }
response
end
list_load_balancer_nodes(load_balancer_id)
click to toggle source
def list_load_balancer_nodes(load_balancer_id)
response = Excon::Response.new
if lb = get_load_balancer(load_balancer_id).body
response.status = 200
response.body = {'nodes' => lb['nodes']}
response
else
raise Fog::HP::LB::NotFound
end
end
list_load_balancer_virtual_ips(load_balancer_id)
click to toggle source
def list_load_balancer_virtual_ips(load_balancer_id)
response = Excon::Response.new
if lb_data = get_load_balancer(load_balancer_id)
virtual_ips = lb_data.body['virtualIps']
response.status = 200
response.body = { 'virtualIps' => virtual_ips }
response
else
raise Fog::HP::LB::NotFound
end
end
list_load_balancers()
click to toggle source
def list_load_balancers
response = Excon::Response.new
lbs = self.data[:lbs].values
response.status = 200
response.body = { 'loadBalancers' => lbs }
response
end
list_protocols()
click to toggle source
def list_protocols
response = Excon::Response.new
protocols = self.data[:protocols].values
response.status = 200
response.body = { 'protocols' => protocols }
response
end
list_versions()
click to toggle source
def list_versions
response = Excon::Response.new
versions = self.data[:versions].values
response.status = 200
response.body = { 'versions' => versions }
response
end
reset_data()
click to toggle source
def reset_data
self.class.data.delete(@hp_access_key)
end
update_load_balancer(load_balancer_id, options={})
click to toggle source
def update_load_balancer(load_balancer_id, options={})
response = Excon::Response.new
if lb = list_load_balancers.body['loadBalancers'].find { |_| _['id'] == load_balancer_id }
lb['name'] = options['name'] if options['name']
lb['algorithm'] = options['algorithm'] if options['algorithm']
response.status = 202
response.body = ''
response
else
raise Fog::HP::LB::NotFound
end
end
update_load_balancer_node(load_balancer_id, node_id, condition)
click to toggle source
def update_load_balancer_node(load_balancer_id, node_id, condition)
response = Excon::Response.new
if lb_data = get_load_balancer(load_balancer_id)
if get_load_balancer_node(load_balancer_id, node_id)
nodes = update_node(lb_data, node_id, condition)
self.data[:lbs][load_balancer_id]['nodes'] = nodes
response.status = 202
response
else
raise Fog::HP::LB::NotFound
end
else
raise Fog::HP::LB::NotFound
end
end
update_node(lb_data, node_id, condition)
click to toggle source
def update_node(lb_data, node_id, condition)
nodes = lb_data.body['nodes']
node = nodes.select {|n| n['id'] == node_id}.first
if node
node['condition'] = condition
node['status'] = condition == 'ENABLED' ? 'ONLINE' : 'OFFLINE'
end
new_nodes = nodes.reject {|n| n['id'] == node_id}
new_nodes << node
end