mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[AWS|ELB] fetch policy descriptions for elb.policies model call
This commit is contained in:
parent
8128fce600
commit
5c1a859852
3 changed files with 27 additions and 19 deletions
|
@ -117,12 +117,17 @@ module Fog
|
|||
|
||||
def policies
|
||||
Fog::AWS::ELB::Policies.new({
|
||||
:data => attributes['Policies'],
|
||||
:data => policy_descriptions,
|
||||
:service => service,
|
||||
:load_balancer => self
|
||||
})
|
||||
end
|
||||
|
||||
def policy_descriptions
|
||||
requires :id
|
||||
@policy_descriptions ||= service.describe_load_balancer_policies(id).body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"]
|
||||
end
|
||||
|
||||
def set_listener_policy(port, policy_name)
|
||||
requires :id
|
||||
policy_name = [policy_name].flatten
|
||||
|
@ -167,6 +172,7 @@ module Fog
|
|||
def reload
|
||||
super
|
||||
@instance_health = nil
|
||||
@policy_descriptions = nil
|
||||
self
|
||||
end
|
||||
|
||||
|
|
|
@ -17,23 +17,22 @@ module Fog
|
|||
end
|
||||
|
||||
private
|
||||
# Munge a hash like:
|
||||
# {'LBCookieStickinessPolicies' => [policies...],
|
||||
# 'AppCookieStickinessPolicies' => [policies...],
|
||||
# 'OtherPolicies' => [policies...]}
|
||||
# to a single array of policies with an optional cookie_stickiness value
|
||||
def munged_data
|
||||
munged_data = []
|
||||
data['LBCookieStickinessPolicies'].each do |policy|
|
||||
munged_data << policy.merge(:cookie_stickiness => :lb)
|
||||
end
|
||||
data['AppCookieStickinessPolicies'].each do |policy|
|
||||
munged_data << policy.merge(:cookie_stickiness => :app)
|
||||
end
|
||||
data['OtherPolicies'].each do |policy|
|
||||
munged_data << {'PolicyName' => policy}
|
||||
end
|
||||
munged_data
|
||||
data.inject([]){|m,e|
|
||||
m << {
|
||||
:id => e["PolicyName"],
|
||||
:type_name => e["PolicyTypeName"],
|
||||
:policy_attributes => policy_attributes(e["PolicyAttributeDescriptions"])
|
||||
}
|
||||
m
|
||||
}
|
||||
end
|
||||
|
||||
def policy_attributes(policy_attribute_descriptions)
|
||||
policy_attribute_descriptions.inject({}){|m,e|
|
||||
m[e["AttributeName"]] = e["AttributeValue"]
|
||||
m
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -41,4 +40,3 @@ module Fog
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -280,7 +280,11 @@ Shindo.tests('AWS::ELB | models', ['aws', 'elb']) do
|
|||
public_key_policy_id = 'fog-public-key-policy'
|
||||
tests('create public key policy') do
|
||||
elb.policies.create(:id => public_key_policy_id, :type_name => 'PublicKeyPolicyType', :policy_attributes => {'PublicKey' => AWS::IAM::SERVER_CERT_PUBLIC_KEY})
|
||||
returns(public_key_policy_id) { elb.policies.get(public_key_policy_id).id }
|
||||
policy = elb.policies.get(public_key_policy_id)
|
||||
|
||||
returns(public_key_policy_id) { policy.id }
|
||||
returns("PublicKeyPolicyType") { policy.type_name }
|
||||
returns(false) { policy.policy_attributes["PublicKey"].nil? }
|
||||
end
|
||||
|
||||
tests('a malformed policy') do
|
||||
|
|
Loading…
Add table
Reference in a new issue