Class: AmiSpec::AwsKeyPair

Inherits:
Object
  • Object
show all
Defined in:
lib/ami_spec/aws_key_pair.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ec2: Aws::EC2::Resource.new, key_name_prefix: 'ami-spec-', logger: Logger.new(STDOUT)) ⇒ AwsKeyPair

Returns a new instance of AwsKeyPair.



14
15
16
17
18
# File 'lib/ami_spec/aws_key_pair.rb', line 14

def initialize(ec2: Aws::EC2::Resource.new, key_name_prefix: 'ami-spec-', logger: Logger.new(STDOUT))
  @ec2 = ec2
  @key_name = "#{key_name_prefix}#{SecureRandom.uuid}"
  @logger = logger
end

Instance Attribute Details

#key_fileObject (readonly)

Returns the value of attribute key_file.



20
21
22
# File 'lib/ami_spec/aws_key_pair.rb', line 20

def key_file
  @key_file
end

#key_nameObject (readonly)

Returns the value of attribute key_name.



20
21
22
# File 'lib/ami_spec/aws_key_pair.rb', line 20

def key_name
  @key_name
end

Class Method Details

.create(**args) ⇒ Object



10
11
12
# File 'lib/ami_spec/aws_key_pair.rb', line 10

def self.create(**args)
  new(**args).tap(&:create)
end

Instance Method Details

#createObject



22
23
24
25
26
27
28
29
# File 'lib/ami_spec/aws_key_pair.rb', line 22

def create
  @logger.info "Creating temporary AWS key pair: #{@key_name}"
  @key_pair = @ec2.create_key_pair(key_name: @key_name)
  @temp_file = Tempfile.new('key')
  @temp_file.write(@key_pair.key_material)
  @temp_file.close
  @key_file = Pathname.new(@temp_file.path)
end

#deleteObject



31
32
33
34
# File 'lib/ami_spec/aws_key_pair.rb', line 31

def delete
  @logger.info "Deleting temporary AWS key pair: #{@key_name}"
  @key_pair.delete
end