class Chef::Provider::AwsInternetGateway
Public Instance Methods
action_detach()
click to toggle source
# File lib/chef/provider/aws_internet_gateway.rb, line 9 def action_detach internet_gateway = Chef::Resource::AwsInternetGateway.get_aws_object(new_resource.name, resource: new_resource) detach_vpc(internet_gateway) end
Protected Instance Methods
create_aws_object()
click to toggle source
# File lib/chef/provider/aws_internet_gateway.rb, line 16 def create_aws_object desired_vpc = Chef::Resource::AwsVpc.get_aws_object(new_resource.vpc, resource: new_resource) if new_resource.vpc converge_by "create internet gateway #{new_resource.name} in region #{region}" do ec2_resource = ::Aws::EC2::Resource.new(new_resource.driver.ec2) internet_gateway = ec2_resource.create_internet_gateway retry_with_backoff(::Aws::EC2::Errors::InvalidInternetGatewayIDNotFound) do internet_gateway.create_tags(tags: [{ key: "Name", value: new_resource.name }]) end attach_vpc(desired_vpc, internet_gateway) if desired_vpc internet_gateway end end
destroy_aws_object(internet_gateway)
click to toggle source
# File lib/chef/provider/aws_internet_gateway.rb, line 47 def destroy_aws_object(internet_gateway) converge_by "delete internet gateway #{new_resource.name} in region #{region}" do detach_vpc(internet_gateway) internet_gateway.delete end end
update_aws_object(internet_gateway)
click to toggle source
# File lib/chef/provider/aws_internet_gateway.rb, line 32 def update_aws_object(internet_gateway) ec2_resource = new_resource.driver.ec2.describe_internet_gateways(internet_gateway_ids: [internet_gateway.id]) current_vpc = ec2_resource.internet_gateways.first.attachments.first if new_resource.vpc desired_vpc = Chef::Resource::AwsVpc.get_aws_object(new_resource.vpc, resource: new_resource) current_vpc_id = current_vpc.vpc_id unless current_vpc.nil? desired_vpc_id = desired_vpc.vpc_id unless desired_vpc.nil? if current_vpc_id != desired_vpc_id detach_vpc(internet_gateway) attach_vpc(desired_vpc, internet_gateway) end end end
Private Instance Methods
attach_vpc(vpc, desired_gateway)
click to toggle source
# File lib/chef/provider/aws_internet_gateway.rb, line 56 def attach_vpc(vpc, desired_gateway) if vpc.internet_gateways.first && vpc.internet_gateways.first != desired_gateway current_driver = new_resource.driver current_chef_server = new_resource.chef_server Cheffish.inline_resource(self, action) do aws_vpc vpc.id do cidr_block vpc.cidr_block internet_gateway false driver current_driver chef_server current_chef_server end end end converge_by "attach vpc #{vpc.id} to #{desired_gateway.id}" do desired_gateway.attach_to_vpc(vpc_id: vpc.id) end end
detach_vpc(internet_gateway)
click to toggle source
# File lib/chef/provider/aws_internet_gateway.rb, line 74 def detach_vpc(internet_gateway) ec2_resource = new_resource.driver.ec2.describe_internet_gateways(internet_gateway_ids: [internet_gateway.id]) vpcid = ec2_resource.internet_gateways.first.attachments.first vpc_id = vpcid.vpc_id unless vpcid.nil? if vpc_id converge_by "detach vpc #{vpc_id} from internet gateway #{internet_gateway.id}" do internet_gateway.detach_from_vpc(vpc_id: vpc_id) end end end