mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[aws|elb] update SSL certificates on listeners. 🎄
This commit is contained in:
parent
c20b493885
commit
c09a04e7ce
4 changed files with 42 additions and 0 deletions
|
@ -96,6 +96,12 @@ module Fog
|
|||
reload
|
||||
end
|
||||
|
||||
def set_listener_ssl_certificate(port, ssl_certificate_id)
|
||||
requires :id
|
||||
connection.set_load_balancer_listener_ssl_certificate(id, port, ssl_certificate_id)
|
||||
reload
|
||||
end
|
||||
|
||||
def unset_listener_policy(port)
|
||||
set_listener_policy(port, [])
|
||||
end
|
||||
|
|
|
@ -34,6 +34,33 @@ module Fog
|
|||
end
|
||||
|
||||
class Mock
|
||||
def set_load_balancer_listener_ssl_certificate(lb_name, load_balancer_port, ssl_certificate_id)
|
||||
raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
|
||||
|
||||
certificate_ids = Fog::AWS::IAM::Mock.data[@aws_access_key_id][:server_certificates].map {|n, c| c['Arn'] }
|
||||
if !certificate_ids.include? ssl_certificate_id
|
||||
raise Fog::AWS::IAM::NotFound.new('CertificateNotFound')
|
||||
end
|
||||
|
||||
response = Excon::Response.new
|
||||
|
||||
unless listener = load_balancer['ListenerDescriptions'].find { |listener| listener['Listener']['LoadBalancerPort'] == load_balancer_port }
|
||||
response.status = 400
|
||||
response.body = "<?xml version=\"1.0\"?><Response><Errors><Error><Code>ListenerNotFound</Code><Message>LoadBalancer does not have a listnener configured at the given port.</Message></Error></Errors><RequestID>#{Fog::AWS::Mock.request_id}</RequestId></Response>"
|
||||
raise Excon::Errors.status_error({:expects => 200}, response)
|
||||
end
|
||||
|
||||
listener['Listener']['SSLCertificateId'] = ssl_certificate_id
|
||||
|
||||
response.status = 200
|
||||
response.body = {
|
||||
"ResponseMetadata" => {
|
||||
"RequestId" => Fog::AWS::Mock.request_id
|
||||
}
|
||||
}
|
||||
|
||||
response
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -244,6 +244,11 @@ Shindo.tests('AWS::ELB | models', ['aws', 'elb']) do
|
|||
end
|
||||
end
|
||||
|
||||
tests('setting a new ssl certificate id') do
|
||||
elb.listeners.create(:instance_port => 443, :lb_port => 443, :protocol => 'HTTPS', :ssl_id => @certificate['Arn'])
|
||||
elb.set_listener_ssl_certificate(443, @certificate['Arn'])
|
||||
end
|
||||
|
||||
tests('destroy') do
|
||||
elb.destroy
|
||||
end
|
||||
|
|
|
@ -44,6 +44,10 @@ Shindo.tests('AWS::ELB | listener_tests', ['aws', 'elb']) do
|
|||
Fog::AWS[:elb].create_load_balancer_listeners(@load_balancer_id, listeners).body
|
||||
end
|
||||
|
||||
tests("#set_load_balancer_listener_ssl_certificate").formats(AWS::ELB::Formats::BASIC) do
|
||||
Fog::AWS[:elb].set_load_balancer_listener_ssl_certificate(@load_balancer_id, 443, @certificate['Arn']).body
|
||||
end
|
||||
|
||||
Fog::AWS[:iam].delete_server_certificate(@key_name)
|
||||
Fog::AWS[:elb].delete_load_balancer(@load_balancer_id)
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue