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:
parent
e0722dbce0
commit
c19cd4003f
6 changed files with 115 additions and 0 deletions
|
@ -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={})
|
||||
|
|
25
lib/fog/rackspace/requests/create_virtual_ip.rb
Normal file
25
lib/fog/rackspace/requests/create_virtual_ip.rb
Normal 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
|
20
lib/fog/rackspace/requests/delete_virtual_ip.rb
Normal file
20
lib/fog/rackspace/requests/delete_virtual_ip.rb
Normal 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
|
20
lib/fog/rackspace/requests/list_virtual_ips.rb
Normal file
20
lib/fog/rackspace/requests/list_virtual_ips.rb
Normal 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
|
|
@ -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'
|
||||
|
||||
|
|
46
tests/rackspace/requests/virtual_ip_tests.rb
Normal file
46
tests/rackspace/requests/virtual_ip_tests.rb
Normal 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
|
Loading…
Add table
Reference in a new issue