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

Added access list requests

This commit is contained in:
Brian Hartsock 2011-07-27 16:55:01 -04:00
parent 657b36e795
commit 14a3aab7a5
7 changed files with 145 additions and 0 deletions

View file

@ -70,6 +70,10 @@ module Fog
request :list_algorithms
request :get_connection_logging
request :set_connection_logging
request :create_access_rule
request :list_access_rules
request :delete_access_rule
request :delete_all_access_rules
class Real
def initialize(options={})

View file

@ -0,0 +1,24 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def create_access_rule(load_balancer_id, address, type)
#TODO - This can actually support adding multiple access rules.
data = {
'accessList' => [
{
'address' => address,
'type' => type
}
]}
request(
:body => data.to_json,
:expects => [200, 202],
:method => 'POST',
:path => "loadbalancers/#{load_balancer_id}/accesslist"
)
end
end
end
end
end

View file

@ -0,0 +1,15 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def delete_access_rule(load_balancer_id, access_rule_id)
request(
:expects => [200, 202],
:path => "loadbalancers/#{load_balancer_id}/accesslist/#{access_rule_id}",
:method => 'DELETE'
)
end
end
end
end
end

View file

@ -0,0 +1,15 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def delete_all_access_rules(load_balancer_id)
request(
:expects => [200, 202],
:path => "loadbalancers/#{load_balancer_id}/accesslist",
:method => 'DELETE'
)
end
end
end
end
end

View file

@ -0,0 +1,15 @@
module Fog
module Rackspace
class LoadBalancer
class Real
def list_access_rules(load_balancer_id)
request(
:expects => 200,
:method => 'GET',
:path => "loadbalancers/#{load_balancer_id}/accesslist"
)
end
end
end
end
end

View file

@ -0,0 +1,62 @@
Shindo.tests('Fog::Rackspace::LoadBalancer | access_lists_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_access_rule(#{@lb.id}, '67.0.0.1','ALLOW')").succeeds do
@service.create_access_rule(@lb.id, '67.0.0.1', 'ALLOW').body
end
@lb.wait_for { ready? }
tests("list_access_rules").formats(ACCESS_LIST_FORMAT) do
data = @service.list_access_rules(@lb.id).body
returns(1) { data.size }
@access_list_id = data['accessList'].first['id']
data
end
@lb.wait_for {ready? }
tests("delete_access_rule(#{@lb.id}, #{@access_list_id}").succeeds do
@service.delete_access_rule(@lb.id, @access_list_id)
end
@lb.wait_for {ready? }
tests("delete_all_access_rules(#{@lb.id})").succeeds do
#This could be refactored once we can add multiple access rules at once
@service.create_access_rule(@lb.id, '67.0.0.2', 'ALLOW')
@lb.wait_for {ready? }
@service.create_access_rule(@lb.id, '67.0.0.3', 'ALLOW')
@lb.wait_for {ready? }
returns(2) { @service.list_access_rules(@lb.id).body['accessList'].size }
@service.delete_all_access_rules(@lb.id)
@lb.wait_for {ready? }
returns(0) { @service.list_access_rules(@lb.id).body['accessList'].size }
end
end
tests('failure') do
tests('create_access_rule(invalid ip)').raises(Fog::Rackspace::LoadBalancer::BadRequest) do
@service.create_access_rule(@lb.id, '', 'ALLOW')
end
tests('create_access_rule(invalid type)').raises(Fog::Rackspace::LoadBalancer::BadRequest) do
@service.create_access_rule(@lb.id, '10.10.10.10', 'ENABLED')
end
tests("delete_access_rule(#{@lb.id}, 0)").raises(Fog::Rackspace::LoadBalancer::NotFound) do
@service.delete_access_rule(@lb.id, 0)
end
end
@lb.wait_for { ready? }
@lb.destroy
end

View file

@ -9,6 +9,16 @@ CONNECTION_LOGGING_FORMAT = {
}
}
ACCESS_LIST_FORMAT = {
'accessList' => [
{
'address' => String,
'id' => Integer,
'type' => String
}
]
}
STATUS_ACTIVE = 'ACTIVE'
LOAD_BALANCERS_FORMAT = {