beaker 1.20.1 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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!