beaker-aws 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2JhYTYxYzVjMzliNzUxYmM0YzVkMTc1YzYwZWZhMWE5OWZlOTdhMw==
4
+ OGZkMzdjNjc1Y2JkNzVhODczYWU5MTQ2YjZkNzQ0NDlmYjBmZTA2YQ==
5
5
  data.tar.gz: !binary |-
6
- OGQ4MGI4YjVhYmU5NzI4NzY3NDBkODYxY2ZkZTAxNGU3YmEzOThlNg==
6
+ ZWViMzI5MTIxMDRmZDk0NGE3Y2NjNDJmMjY2NzY5MDI0MWEwZmJlMA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzVhYzJhYzMyNjc0NTI3NjI0YzhmMGE0OGM0ZTM1MjI1M2UxMTUxYmJkMmJj
10
- N2FkYjY0ODE1MTcwNjg0NjdhOWE2ZjQzMGMwODZhZDVlNDc0MjcwMjIyNDhk
11
- ZmEwMTAzYTRlYjk1MDA4MjUyYTAxZjFlM2MyNWJjNDMyMmVhYmY=
9
+ OTUwODFlZmZlOGMxZTI4MDdjZDVlNTc1MWI2N2Y5Y2IxYjZiOTEzOGJhNWEx
10
+ YTAwODg5ODI1ZjIxNTI3MDgyYjRlMWIyNzFjMTM4ZDIyNGJkNGFkMDcyYTVh
11
+ MjljZGMzNDJkNTg5NmQ2YjYyZTY5MWI5NzYwMDkwMWQ2NGU0NjY=
12
12
  data.tar.gz: !binary |-
13
- ZDU5ZjU2NzU0ZDQ4NjE4NzM5ZDc4Yzc1NjIzMjYzOThmNzg2NzBlYjdmZDlh
14
- YjY4YjZjYmQ2MmE5OTVmZmZlZGI4YjRhYTlmZTFkOWI2OTlmNTQxNDVhNmNi
15
- NzVkMTA0ZGU1YzgxYTQyYWRhNGU0YjJmMDhhODMzNDMxMmM1ZDA=
13
+ YzVmOGUzOWQ3NTY2ODBkN2I4M2QwNDQ5NGRhYWYyNmQ2MjNiYjYyYWYyNjg3
14
+ YmFiNDA2ZmFjMzk0YThmZGU3OTExNTljY2MxODQ5OTAwYWMxZGNkNzdhMWE2
15
+ ZDIxMDZkNjg4NzZjNTkxNzE3NDAwMTlkYmMwYTRlMWI1YjI4ZGI=
@@ -1,3 +1,3 @@
1
1
  module BeakerAws
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -23,16 +23,17 @@ module Beaker
23
23
  @logger = options[:logger]
24
24
 
25
25
  # Get AWS credentials
26
- creds = load_credentials()
26
+ creds = options[:use_fog_credentials] ? load_credentials() : Hash.new
27
27
 
28
28
  config = {
29
29
  :access_key_id => creds[:access_key],
30
30
  :secret_access_key => creds[:secret_key],
31
+ :session_token => creds[:session_token],
31
32
  :logger => Logger.new($stdout),
32
33
  :log_level => :debug,
33
34
  :log_formatter => AWS::Core::LogFormatter.colored,
34
35
  :max_retries => 12,
35
- }
36
+ }.delete_if{ |k,v| v.nil? }
36
37
  AWS.config(config)
37
38
 
38
39
  @ec2 = AWS::EC2.new()
@@ -643,7 +644,7 @@ module Beaker
643
644
  def set_hostnames
644
645
  if @options[:use_beaker_hostnames]
645
646
  @hosts.each do |host|
646
- host[:vmhostname] = host[:name]
647
+ host[:vmhostname] = host.name
647
648
  if host['platform'] =~ /el-7/
648
649
  # on el-7 hosts, the hostname command doesn't "stick" randomly
649
650
  host.exec(Command.new("hostnamectl set-hostname #{host.name}"))
@@ -961,8 +962,9 @@ module Beaker
961
962
 
962
963
  if provider.set?
963
964
  {
964
- :access_key => provider.access_key_id,
965
- :secret_key => provider.secret_access_key,
965
+ :access_key => provider.access_key_id,
966
+ :secret_key => provider.secret_access_key,
967
+ :session_token => provider.session_token,
966
968
  }
967
969
  else
968
970
  {}
@@ -981,8 +983,9 @@ module Beaker
981
983
  raise "You must specify an aws_secret_access_key in your .fog file (#{dot_fog}) for ec2 instances!" unless default[:aws_secret_access_key]
982
984
 
983
985
  {
984
- :access_key => default[:aws_access_key_id],
985
- :secret_key => default[:aws_secret_access_key],
986
+ :access_key => default[:aws_access_key_id],
987
+ :secret_key => default[:aws_secret_access_key],
988
+ :session_token => default[:aws_session_token],
986
989
  }
987
990
  end
988
991
 
@@ -10,6 +10,7 @@ module Beaker
10
10
  and_return({
11
11
  :access_key => fog_file_contents[:default][:aws_access_key_id],
12
12
  :secret_key => fog_file_contents[:default][:aws_secret_access_key],
13
+ :session_token => fog_file_contents[:default][:aws_session_token],
13
14
  })
14
15
 
15
16
 
@@ -60,6 +61,7 @@ module Beaker
60
61
  creds = aws.load_fog_credentials
61
62
  expect( creds[:access_key] ).to eq("IMANACCESSKEY")
62
63
  expect( creds[:secret_key] ).to eq("supersekritkey")
64
+ expect( creds[:session_token] ).to eq('somecrazylongsupersessiontoken!#%^^*(%$^&@$%#!!#$asd;fjapugfrejklvznb;jdgfjiadvij')
63
65
  end
64
66
 
65
67
 
@@ -70,6 +72,30 @@ module Beaker
70
72
  creds = aws.load_env_credentials
71
73
  expect( creds[:access_key] ).to eq("IMANACCESSKEY")
72
74
  expect( creds[:secret_key] ).to eq("supersekritkey")
75
+ expect( creds[:session_token] ).to be_nil
76
+ end
77
+
78
+ it 'from environment variables with session_token' do
79
+ ENV['AWS_ACCESS_KEY_ID'] = "IMANACCESSKEY"
80
+ ENV['AWS_SECRET_ACCESS_KEY'] = "supersekritkey"
81
+ ENV['AWS_SESSION_TOKEN'] = 'somesuperlongsessiontokenspecialcharsblah!#%$#@$^!@qewpofudjsvjm'
82
+
83
+ creds = aws.load_env_credentials
84
+ expect( creds[:access_key] ).to eq("IMANACCESSKEY")
85
+ expect( creds[:secret_key] ).to eq("supersekritkey")
86
+ expect( creds[:session_token] ).to eq('somesuperlongsessiontokenspecialcharsblah!#%$#@$^!@qewpofudjsvjm')
87
+ end
88
+
89
+ end
90
+
91
+ context 'dont read fog credentials' do
92
+ let(:options) { make_opts.merge({ 'use_fog_credentials' => false }) }
93
+
94
+ it 'not using fog' do
95
+ creds = aws.load_env_credentials
96
+ expect( creds[:access_key] ).to eq(nil)
97
+ expect( creds[:secret_key] ).to eq(nil)
98
+ expect( options[:use_fog_credentials] ).to eq(false)
73
99
  end
74
100
  end
75
101
 
@@ -626,11 +652,12 @@ module Beaker
626
652
  it 'sets the the vmhostname to the beaker config name for each host' do
627
653
  options[:use_beaker_hostnames] = true
628
654
  @hosts.each do |host|
629
- host[:name] = "prettyponyprincess"
655
+ host.instance_eval("@name = 'prettyponyprincess'")
630
656
  end
631
657
  expect(set_hostnames).to eq(@hosts)
632
658
  @hosts.each do |host|
633
- expect(host[:vmhostname]).to eq(host[:name])
659
+ expect(host[:vmhostname]).not_to eq(nil)
660
+ expect(host[:vmhostname]).to eq(host.name)
634
661
  expect(host[:vmhostname]).to eq(host.hostname)
635
662
  end
636
663
  end
@@ -949,17 +976,25 @@ module Beaker
949
976
 
950
977
  describe '#load_fog_credentials' do
951
978
  # Receive#and_call_original below allows us to test the core load_fog_credentials method
952
- let(:creds) { {:access_key => 'awskey', :secret_key => 'awspass'} }
953
979
  let(:dot_fog) { '.fog' }
954
980
  subject(:load_fog_credentials) { aws.load_fog_credentials(dot_fog) }
955
981
 
956
982
  it 'returns loaded fog credentials' do
983
+ creds = {:access_key => 'awskey', :secret_key => 'awspass', :session_token => nil}
957
984
  fog_hash = {:default => {:aws_access_key_id => 'awskey', :aws_secret_access_key => 'awspass'}}
958
985
  expect(aws).to receive(:load_fog_credentials).and_call_original
959
986
  expect(YAML).to receive(:load_file).and_return(fog_hash)
960
987
  expect(load_fog_credentials).to eq(creds)
961
988
  end
962
989
 
990
+ it 'returns loaded fog credentials with session token' do
991
+ creds = {:access_key => 'awskey', :secret_key => 'awspass', :session_token => 'sometoken'}
992
+ fog_hash = {:default => {:aws_access_key_id => 'awskey', :aws_secret_access_key => 'awspass', :aws_session_token => 'sometoken'}}
993
+ expect(aws).to receive(:load_fog_credentials).and_call_original
994
+ expect(YAML).to receive(:load_file).and_return(fog_hash)
995
+ expect(load_fog_credentials).to eq(creds)
996
+ end
997
+
963
998
  context 'raises errors' do
964
999
  it 'if missing access_key credential' do
965
1000
  fog_hash = {:default => {:aws_secret_access_key => 'awspass'}}
@@ -0,0 +1,30 @@
1
+ # setup & require beaker's spec_helper.rb
2
+ beaker_gem_spec = Gem::Specification.find_by_name('beaker')
3
+ beaker_gem_dir = beaker_gem_spec.gem_dir
4
+ beaker_spec_path = File.join(beaker_gem_dir, 'spec')
5
+ $LOAD_PATH << beaker_spec_path
6
+ require File.join(beaker_spec_path, 'helpers.rb')
7
+
8
+ module TestFileHelpers
9
+
10
+ def fog_file_contents
11
+ { :default => { :aws_access_key_id => "IMANACCESSKEY",
12
+ :aws_secret_access_key => "supersekritkey",
13
+ :aws_session_token => 'somecrazylongsupersessiontoken!#%^^*(%$^&@$%#!!#$asd;fjapugfrejklvznb;jdgfjiadvij',
14
+ :aix_hypervisor_server => "aix_hypervisor.labs.net",
15
+ :aix_hypervisor_username => "aixer",
16
+ :aix_hypervisor_keyfile => "/Users/user/.ssh/id_rsa-acceptance",
17
+ :solaris_hypervisor_server => "solaris_hypervisor.labs.net",
18
+ :solaris_hypervisor_username => "harness",
19
+ :solaris_hypervisor_keyfile => "/Users/user/.ssh/id_rsa-old.private",
20
+ :solaris_hypervisor_vmpath => "rpoooool/zs",
21
+ :solaris_hypervisor_snappaths => ["rpoooool/USER/z0"],
22
+ :vsphere_server => "vsphere.labs.net",
23
+ :vsphere_username => "vsphere@labs.com",
24
+ :vsphere_password => "supersekritpassword"} }
25
+ end
26
+
27
+ end
28
+
29
+ # Beaker HostHelpers
30
+ include HostHelpers
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rishi Javia, Kevin Imber, Tony Vu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-02 00:00:00.000000000 Z
11
+ date: 2017-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -190,6 +190,7 @@ files:
190
190
  - lib/beaker/hypervisor/ec2_helper.rb
191
191
  - spec/beaker/hypervisor/aws_sdk_spec.rb
192
192
  - spec/beaker/hypervisor/ec2_helper_spec.rb
193
+ - spec/helpers.rb
193
194
  - spec/spec_helper.rb
194
195
  homepage: https://github.com/puppetlabs/beaker-aws
195
196
  licenses:
@@ -211,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
212
  version: '0'
212
213
  requirements: []
213
214
  rubyforge_project:
214
- rubygems_version: 2.4.6
215
+ rubygems_version: 2.4.8
215
216
  signing_key:
216
217
  specification_version: 4
217
218
  summary: Beaker DSL Extension Helpers!