Skip to content

Instantly share code, notes, and snippets.

@NAshwini
Created May 11, 2017 07:56
Show Gist options
  • Save NAshwini/88904e6cf83ad81fdf311d4d0e8cf7ba to your computer and use it in GitHub Desktop.
Save NAshwini/88904e6cf83ad81fdf311d4d0e8cf7ba to your computer and use it in GitHub Desktop.
diff --git a/lib/chef/provider/aws_key_pair.rb b/lib/chef/provider/aws_key_pair.rb
index 4af8637..015b667 100644
--- a/lib/chef/provider/aws_key_pair.rb
+++ b/lib/chef/provider/aws_key_pair.rb
@@ -12,8 +12,8 @@ class Chef::Provider::AwsKeyPair < Chef::Provisioning::AWSDriver::AWSProvider
action :destroy do
if current_resource_exists?
- converge_by "delete AWS key pair #{new_resource.name} on region #{region}" do
- driver.ec2.key_pairs[new_resource.name].delete
+ converge_by "delete AWS key pair #{new_resource.name} on region #{new_resource.driver.driver_url}" do
+ driver.ec2.delete_key_pair({key_name:new_resource.name})
end
end
end
@@ -75,8 +75,8 @@ class Chef::Provider::AwsKeyPair < Chef::Provisioning::AWSDriver::AWSProvider
if !new_fingerprints.any? { |f| compare_public_key f }
if new_resource.allow_overwrite
converge_by "update #{key_description} to match local key at #{new_resource.private_key_path}" do
- driver.ec2.key_pairs[new_resource.name].delete
- driver.ec2.key_pairs.import(new_resource.name, Cheffish::KeyFormatter.encode(desired_key, :format => :openssh))
+ driver.ec2.delete_key_pair({key_name:new_resource.name})
+ driver.ec2.import_key_pair({key_name: new_resource.name, public_key_material: Cheffish::KeyFormatter.encode(desired_key, :format => :openssh)})
end
else
raise "#{key_description} with fingerprint #{@current_fingerprint} does not match local key fingerprint(s) #{new_fingerprints}, and allow_overwrite is false!"
@@ -88,7 +88,7 @@ class Chef::Provider::AwsKeyPair < Chef::Provisioning::AWSDriver::AWSProvider
# Create key
converge_by "create #{key_description} from local key at #{new_resource.private_key_path}" do
- driver.ec2.key_pairs.import(new_resource.name, Cheffish::KeyFormatter.encode(desired_key, :format => :openssh))
+ driver.ec2.import_key_pair({key_name: new_resource.name, public_key_material: Cheffish::KeyFormatter.encode(desired_key, :format => :openssh)})
end
end
end
@@ -169,7 +169,7 @@ class Chef::Provider::AwsKeyPair < Chef::Provisioning::AWSDriver::AWSProvider
current_key_pair = new_resource.aws_object
if current_key_pair
- @current_fingerprint = current_key_pair.fingerprint
+ @current_fingerprint = current_key_pair.key_fingerprint
else
current_resource.action [:destroy]
end
diff --git a/lib/chef/provisioning/aws_driver/driver.rb b/lib/chef/provisioning/aws_driver/driver.rb
index 81bc30f..0e870d4 100644
--- a/lib/chef/provisioning/aws_driver/driver.rb
+++ b/lib/chef/provisioning/aws_driver/driver.rb
@@ -768,7 +768,8 @@ EOD
end
def ec2
- @ec2 ||= ::Aws::EC2.new(config: aws_config)
+ aws_config.delete(:proxy_uri)
+ @ec2 ||= ::Aws::EC2::Client.new( aws_config)
end
AWS_V2_SERVICES.each do |load_name, short_name|
diff --git a/lib/chef/resource/aws_key_pair.rb b/lib/chef/resource/aws_key_pair.rb
index ad05aee..b7f5a06 100644
--- a/lib/chef/resource/aws_key_pair.rb
+++ b/lib/chef/resource/aws_key_pair.rb
@@ -14,7 +14,8 @@ class Chef::Resource::AwsKeyPair < Chef::Provisioning::AWSDriver::AWSResource
attribute :allow_overwrite, :kind_of => [TrueClass, FalseClass], :default => false
def aws_object
- result = driver.ec2.key_pairs[name]
- result && result.exists? ? result : nil
+ resource = ::Aws::EC2::Resource.new(driver.ec2)
+ result = resource.key_pairs.find{|b| b.name==name}
+ result && result.nil? ? nil : result
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment