class Chef::Provider::AwsNatGateway
Protected Instance Methods
create_aws_object()
click to toggle source
# File lib/chef/provider/aws_nat_gateway.rb, line 9 def create_aws_object if new_resource.subnet.nil? raise "Nat Gateway create action for '#{new_resource.name}' requires the 'subnet' attribute." end subnet = Chef::Resource::AwsSubnet.get_aws_object(new_resource.subnet, resource: new_resource) if new_resource.eip_address.nil? # TODO: Ideally it would be nice to automatically manage an eip address but # the lack of tagging support and the limited SDK interaction with these two # resources makes that too hard right now. So we force the user to manage their # eip address as a seperate resource. raise "Nat Gateway create action for '#{new_resource.name}' requires the 'eip_address' attribute." end eip_address = Chef::Resource::AwsEipAddress.get_aws_object(new_resource.eip_address, resource: new_resource) converge_by "create nat gateway #{new_resource.name} in region #{region} for subnet #{subnet}" do options = { subnet_id: subnet.id, allocation_id: eip_address.allocation_id } nat_gateway = new_resource.driver.ec2_resource.create_nat_gateway(options) wait_for_state(nat_gateway, :available) nat_gateway end end
destroy_aws_object(nat_gateway)
click to toggle source
# File lib/chef/provider/aws_nat_gateway.rb, line 50 def destroy_aws_object(nat_gateway) converge_by "delete nat gateway #{new_resource.name} in region #{region} for subnet #{nat_gateway.subnet_id}" do nat_gateway.delete wait_for_state(nat_gateway, :deleted) end end
update_aws_object(nat_gateway)
click to toggle source
# File lib/chef/provider/aws_nat_gateway.rb, line 36 def update_aws_object(nat_gateway) subnet_id = Chef::Resource::AwsSubnet.get_aws_object_id(new_resource.subnet, resource: new_resource) if new_resource.subnet if subnet_id != nat_gateway.subnet_id raise "Nat gateway subnet cannot be changed after being created! Desired subnet for #{new_resource.name} (#{nat_gateway.id}) was \"#{nat_gateway.subnet_id}\" and actual description is \"#{subnet_id}\"" end if new_resource.eip_address eip_address = Chef::Resource::AwsEipAddress.get_aws_object(new_resource.eip_address, resource: new_resource) if eip_address.nil? || (eip_address.allocation_id != nat_gateway.nat_gateway_addresses.first.allocation_id) raise "Nat gateway elastic ip address cannot be changed after being created! Desired elastic ip address for #{new_resource.name} (#{nat_gateway.id}) was \"#{nat_gateway.nat_gateway_addresses.first.allocation_id}\" and actual description is \"#{eip_address.allocation_id}\"" end end end