1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Rackspace Load Balancers: requests for virtual ips

This commit is contained in:
Brian Hartsock 2011-07-14 21:07:29 -07:00
parent e0722dbce0
commit c19cd4003f
6 changed files with 115 additions and 0 deletions

View file

@ -60,6 +60,9 @@ module Fog
request :update_node
request :delete_node
request :delete_nodes
request :create_virtual_ip
request :list_virtual_ips
request :delete_virtual_ip
class Real
def initialize(options={})

View file

@ -0,0 +1,25 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def create_virtual_ip(load_balancer_id, type)
data = {
'type' => type,
'ipVersion' => 'IPV6'
}
request(
:body => data.to_json,
:expects => [200, 202],
:method => 'POST',
:path => "loadbalancers/#{load_balancer_id}/virtualips.json"
)
end
end
class Mock
def create_virtual_ip(load_balancer_id, type)
Fog::Mock.not_implemented
end
end
end
end
end

View file

@ -0,0 +1,20 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def delete_virtual_ip(load_balancer_id, virtual_ip_id)
request(
:expects => [200, 202],
:path => "loadbalancers/#{load_balancer_id}/virtualips/#{virtual_ip_id}",
:method => 'DELETE'
)
end
end
class Mock
def delete_virtual_ip(load_balancer_id, virtual_ip_id)
Fog::Mock.not_implemented
end
end
end
end
end

View file

@ -0,0 +1,20 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def list_virtual_ips(load_balancer_id)
request(
:expects => 200,
:method => 'GET',
:path => "loadbalancers/#{load_balancer_id}/virtualips.json"
)
end
end
class Mock
def list_virtual_ips(load_balancer_id)
Fog::Mock.not_implemented
end
end
end
end
end

View file

@ -2,6 +2,7 @@ SINGLE_NODE_FORMAT = {'address' => String, 'id' => Integer, 'status' => String,
NODE_FORMAT = {'node' => SINGLE_NODE_FORMAT}
NODES_FORMAT = {'nodes' => [SINGLE_NODE_FORMAT]}
VIRTUAL_IP_FORMAT = {'type' => String, 'id' => Integer, 'type' => String, 'ipVersion' => String, 'address' => String}
VIRTUAL_IPS_FORMAT = { 'virtualIps' => [VIRTUAL_IP_FORMAT] }
STATUS_ACTIVE = 'ACTIVE'

View file

@ -0,0 +1,46 @@
Shindo.tests('Fog::Rackspace::LoadBalancer | virtual_ip_tests', ['rackspace']) do
@service = Fog::Rackspace::LoadBalancer.new
@lb = @service.load_balancers.create({
:name => ('fog' + Time.now.to_i.to_s),
:protocol => 'HTTP',
:port => 80,
:virtual_ips => [{ :type => 'PUBLIC'}],
:nodes => [{ :address => '10.0.0.1', :port => 80, :condition => 'ENABLED'}]
})
tests('success') do
@lb.wait_for { ready? }
tests('#create_virtual_ip').formats(VIRTUAL_IP_FORMAT) do
data = @service.create_virtual_ip(@lb.id, 'PUBLIC').body
@virtual_ip_id = data['id']
data
end
@lb.wait_for { ready? }
tests("list_virtual_ips").formats(VIRTUAL_IPS_FORMAT) do
@service.list_virtual_ips(@lb.id).body
end
end
tests('failure') do
#TODO - I feel like this should really be a BadRequest, need to dig in
tests('create_virtual_ip(invalid type)').raises(Fog::Rackspace::LoadBalancer::ServiceError) do
@service.create_virtual_ip(@lb.id, 'badtype')
end
tests('delete_virtual_ip(0)').raises(Fog::Rackspace::LoadBalancer::NotFound) do
@service.delete_virtual_ip(@lb.id, 0)
end
end
tests('success') do
@lb.wait_for { ready? }
tests("#delete_virtual_ip(#{@lb.id}, #{@virtual_ip_id})").succeeds do
@service.delete_virtual_ip(@lb.id, @virtual_ip_id)
end
end
@lb.wait_for { ready? }
@lb.destroy
end