beaker 1.20.1 → 1.21.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.
@@ -19,12 +19,37 @@ module Beaker
19
19
  @options = options
20
20
  @logger = options[:logger]
21
21
  @hosts = vcloud_hosts
22
+ @credentials = load_credentials(@options[:dot_fog])
22
23
 
23
24
  raise 'You must specify a datastore for vCloud instances!' unless @options['datastore']
24
25
  raise 'You must specify a resource pool for vCloud instances!' unless @options['resourcepool']
25
26
  raise 'You must specify a folder for vCloud instances!' unless @options['folder']
26
27
  end
27
28
 
29
+ def load_credentials(dot_fog = '.fog')
30
+ creds = {}
31
+
32
+ if fog = read_fog_file(dot_fog)
33
+ if fog[:default] && fog[:default][:vmpooler_token]
34
+ creds[:vmpooler_token] = fog[:default][:vmpooler_token]
35
+ else
36
+ @logger.warn "Credentials file (#{dot_fog}) is missing a :default section with a :vmpooler_token value; proceeding without authentication"
37
+ end
38
+ else
39
+ @logger.warn "Credentials file (#{dot_fog}) is empty; proceeding without authentication"
40
+ end
41
+
42
+ creds
43
+
44
+ rescue Errno::ENOENT
45
+ @logger.warn "Credentials file (#{dot_fog}) not found; proceeding without authentication"
46
+ creds
47
+ end
48
+
49
+ def read_fog_file(dot_fog = '.fog')
50
+ YAML.load_file(dot_fog)
51
+ end
52
+
28
53
  def check_url url
29
54
  begin
30
55
  URI.parse(url)
@@ -70,12 +95,16 @@ module Beaker
70
95
  http = Net::HTTP.new( uri.host, uri.port )
71
96
  request = Net::HTTP::Post.new(uri.request_uri)
72
97
 
98
+ if @credentials[:vmpooler_token]
99
+ request['X-AUTH-TOKEN'] = @credentials[:vmpooler_token]
100
+ end
101
+
73
102
  request.set_form_data({'pool' => @options['resourcepool'], 'folder' => 'foo'})
74
103
 
75
104
  attempts = @options[:timeout].to_i / 5
76
105
  response = http.request(request)
77
106
  parsed_response = JSON.parse(response.body)
78
- if parsed_response[h['template']] && parsed_response[h['template']]['ok'] && parsed_response[h['template']]['hostname']
107
+ if parsed_response[h['template']] && parsed_response['ok'] && parsed_response[h['template']]['hostname']
79
108
  hostname = parsed_response[h['template']]['hostname']
80
109
  domain = parsed_response['domain']
81
110
  h['vmhostname'] = domain ? "#{hostname}.#{domain}" : hostname
@@ -112,6 +141,10 @@ module Beaker
112
141
  http = Net::HTTP.new( uri.host, uri.port )
113
142
  request = Net::HTTP::Delete.new(uri.request_uri)
114
143
 
144
+ if @credentials[:vmpooler_token]
145
+ request['X-AUTH-TOKEN'] = @credentials[:vmpooler_token]
146
+ end
147
+
115
148
  begin
116
149
  response = http.request(request)
117
150
  rescue *SSH_EXCEPTIONS => e
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '1.20.1'
3
+ STRING = '1.21.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.1
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-18 00:00:00.000000000 Z
11
+ date: 2015-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -545,7 +545,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
545
545
  version: '0'
546
546
  requirements: []
547
547
  rubyforge_project:
548
- rubygems_version: 2.2.2
548
+ rubygems_version: 2.4.6
549
549
  signing_key:
550
550
  specification_version: 4
551
551
  summary: Let's test Puppet!