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:
parent
657b36e795
commit
14a3aab7a5
7 changed files with 145 additions and 0 deletions
|
@ -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={})
|
||||
|
|
24
lib/fog/rackspace/requests/create_access_rule.rb
Normal file
24
lib/fog/rackspace/requests/create_access_rule.rb
Normal 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
|
15
lib/fog/rackspace/requests/delete_access_rule.rb
Normal file
15
lib/fog/rackspace/requests/delete_access_rule.rb
Normal 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
|
15
lib/fog/rackspace/requests/delete_all_access_rules.rb
Normal file
15
lib/fog/rackspace/requests/delete_all_access_rules.rb
Normal 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
|
15
lib/fog/rackspace/requests/list_access_rules.rb
Normal file
15
lib/fog/rackspace/requests/list_access_rules.rb
Normal 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
|
62
tests/rackspace/requests/access_list_tests.rb
Normal file
62
tests/rackspace/requests/access_list_tests.rb
Normal 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
|
|
@ -9,6 +9,16 @@ CONNECTION_LOGGING_FORMAT = {
|
|||
}
|
||||
}
|
||||
|
||||
ACCESS_LIST_FORMAT = {
|
||||
'accessList' => [
|
||||
{
|
||||
'address' => String,
|
||||
'id' => Integer,
|
||||
'type' => String
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
STATUS_ACTIVE = 'ACTIVE'
|
||||
|
||||
LOAD_BALANCERS_FORMAT = {
|
||||
|
|
Loading…
Add table
Reference in a new issue