kitchen-digitalocean 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7d5bd11d573f8cd1d5b9f7d298ce216e501b74dc
4
- data.tar.gz: adce4e30accf397ac559e5c31b053cf5f520360d
5
- SHA512:
6
- metadata.gz: ee1cb1862d944b0255822c009723c8c5e706e22ee2232dbe0a4e73bcb2af2a5cf802391bb2ade6c66526803707b46622558ddb4f332514b3eac605c0169cfe70
7
- data.tar.gz: 1dcc1561e8b9fd35681b3707c52cab21b6ae5e28844b23e1c5b146c9ef1b9f194c05225261d53e25b557b5e5d0265ea426dc6c033373e0faac7e60a7952cf83c
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDdiZTUzMjdkZGE0NjNjY2IwM2Q4M2RhNzhlMjk1YmUyYmJhN2JlZQ==
5
+ data.tar.gz: !binary |-
6
+ ODA4ZTE4MzYzYjQxNDM4YTIxM2QxY2YzZjExOGNmNDM4ZTA5YTc4NQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZjhkZGM2YTZjODkyN2YzM2MzZDBmNTYwN2JmNWYwNDEzNjAxMDk5MDRhNjI3
10
+ NzgwMWU4MGIzNjA1ZDgwNTYzYmViMjdjNTc1N2RmYTk1MTMwMjY1MTEzZDAy
11
+ MWJkOTkzMjgwZGIxODU2ZDFmZGRjZmUzNWFlYzIyMTIzM2I0YjM=
12
+ data.tar.gz: !binary |-
13
+ MDUxYTZjYjA2YTkyMDgxNzgyNjc2OWNkYTI5NmMxZTJlOTVhZDAxMjZlOTRl
14
+ Y2YwZWU1Zjc3NmU0NjgxZmJmNzhjOTVlMDIyMzU4NGM3MmNiOGFkMTNkMzc2
15
+ MWY2Y2NkZDNhZjU0MmYyNTMyMDFiMzk3NGNkZjkzMTllNjBlYmY=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.2.0 / 2013-06-19
2
+
3
+ * Provide debug output for test-kitchen
4
+ * Visual feedback during server creation
5
+ * Use ruby 1.9 hash syntax
6
+ * Bump fog dependency to 1.12
7
+
1
8
  # 0.1.0 / 2013-05-12
2
9
 
3
10
  * Initial release
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/gregf/kitchen-digitalocean.png?branch=master)](https://travis-ci.org/gregf/kitchen-digitalocean) [![Code Climate](https://codeclimate.com/github/gregf/kitchen-digitalocean.png)](https://codeclimate.com/github/gregf/kitchen-digitalocean) [![Dependency Status](https://gemnasium.com/gregf/kitchen-digitalocean.png)](https://gemnasium.com/gregf/kitchen-digitalocean)
1
+ [![Gem Version](https://badge.fury.io/rb/kitchen-digitalocean.png)](http://badge.fury.io/rb/kitchen-digitalocean) [![Build Status](https://travis-ci.org/gregf/kitchen-digitalocean.png?branch=master)](https://travis-ci.org/gregf/kitchen-digitalocean) [![Code Climate](https://codeclimate.com/github/gregf/kitchen-digitalocean.png)](https://codeclimate.com/github/gregf/kitchen-digitalocean) [![Dependency Status](https://gemnasium.com/gregf/kitchen-digitalocean.png)](https://gemnasium.com/gregf/kitchen-digitalocean)
2
2
 
3
3
  # Kitchen::Digitalocean
4
4
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'test-kitchen', '~> 1.0.0.alpha'
22
- spec.add_dependency 'fog', '~> 1.11'
22
+ spec.add_dependency 'fog', '~> 1.12'
23
23
 
24
24
  spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'rake'
@@ -41,10 +41,12 @@ module Kitchen
41
41
  config[:name] ||= generate_name(instance.name)
42
42
  server = create_server
43
43
  state[:server_id] = server.id
44
+
44
45
  info("Digital Ocean instance <#{state[:server_id]}> created.")
45
- server.wait_for { ready? } ; puts "(server ready)"
46
+ server.wait_for { print '.'; ready? } ; print '(server ready)'
46
47
  state[:hostname] = server.ip_address
47
- wait_for_sshd(state[:hostname]) ; puts "(ssh ready)"
48
+ wait_for_sshd(state[:hostname]) ; print "(ssh ready)\n"
49
+ debug("digitalocean:create #{state[:hostname]}")
48
50
  rescue Fog::Errors::Error, Excon::Errors::Error => ex
49
51
  raise ActionFailed, ex.message
50
52
  end
@@ -62,21 +64,25 @@ module Kitchen
62
64
  private
63
65
 
64
66
  def compute
67
+ debug_compute_config
68
+
65
69
  server_def = {
66
- :provider => "Digitalocean",
67
- :digitalocean_api_key => config[:digitalocean_api_key],
68
- :digitalocean_client_id => config[:digitalocean_client_id]
70
+ provider: :digitalocean,
71
+ digitalocean_api_key: config[:digitalocean_api_key],
72
+ digitalocean_client_id: config[:digitalocean_client_id]
69
73
  }
70
74
  Fog::Compute.new(server_def)
71
75
  end
72
76
 
73
77
  def create_server
78
+ debug_server_config
79
+
74
80
  compute.servers.create(
75
- :name => config[:name],
76
- :image_id => config[:image_id],
77
- :flavor_id => config[:flavor_id],
78
- :region_id => config[:region_id],
79
- :ssh_key_ids => config[:ssh_key_ids]
81
+ name: config[:name],
82
+ image_id: config[:image_id],
83
+ flavor_id: config[:flavor_id],
84
+ region_id: config[:region_id],
85
+ ssh_key_ids: config[:ssh_key_ids]
80
86
  )
81
87
  end
82
88
 
@@ -85,6 +91,19 @@ module Kitchen
85
91
  rand_str = Array.new(8) { rand(36).to_s(36) }.join
86
92
  "#{base}-#{Etc.getlogin}-#{Socket.gethostname}-#{rand_str}"
87
93
  end
94
+
95
+ def debug_server_config
96
+ debug("digitalocean:name #{config[:name]}")
97
+ debug("digitalocean:image_id #{config[:image_id]}")
98
+ debug("digitalocean:flavor_id #{config[:flavor_id]}")
99
+ debug("digitalocean:region_id #{config[:region_id]}")
100
+ debug("digitalocean:ssh_key_ids #{config[:ssh_key_ids]}")
101
+ end
102
+
103
+ def debug_compute_config
104
+ debug("digitalocean_api_key #{config[:digitalocean_api_key]}")
105
+ debug("digitalocean_client_id #{config[:digitalocean_client_id]}")
106
+ end
88
107
  end
89
108
  end
90
109
  end
@@ -19,7 +19,7 @@
19
19
  module Kitchen
20
20
  module Driver
21
21
  # Version string for Digital Ocean Kitchen driver
22
- DIGITALOCEAN_VERSION = '0.1.1'
22
+ DIGITALOCEAN_VERSION = '0.2.0'
23
23
  end
24
24
  end
25
25
 
@@ -29,7 +29,7 @@ describe Kitchen::Driver::Digitalocean do
29
29
  let(:state) { Hash.new }
30
30
 
31
31
  let(:instance) do
32
- stub(:name => 'potatoes', :logger => logger, :to_str => 'instance')
32
+ stub(name: 'potatoes', logger: logger, to_str: 'instance')
33
33
  end
34
34
 
35
35
  let(:driver) do
@@ -69,13 +69,13 @@ describe Kitchen::Driver::Digitalocean do
69
69
  context 'overridden options' do
70
70
  let(:config) do
71
71
  {
72
- :image_id => '2676',
73
- :flavor_id => '63',
74
- :ssh_key_ids => '1234',
75
- :username => 'admin',
76
- :port => '2222',
77
- :name => 'puppy',
78
- :region_id => '3'
72
+ image_id: '2676',
73
+ flavor_id: '63',
74
+ ssh_key_ids: '1234',
75
+ username: 'admin',
76
+ port: '2222',
77
+ name: 'puppy',
78
+ region_id: '3'
79
79
  }
80
80
  end
81
81
 
@@ -90,8 +90,8 @@ describe Kitchen::Driver::Digitalocean do
90
90
 
91
91
  describe '#create' do
92
92
  let(:server) do
93
- stub(:id => 'test123', :wait_for => true,
94
- :ip_address => '1.2.3.4')
93
+ stub(id: 'test123', wait_for: true,
94
+ ip_address: '1.2.3.4')
95
95
  end
96
96
  let(:driver) do
97
97
  d = Kitchen::Driver::Digitalocean.new(config)
@@ -105,8 +105,8 @@ describe Kitchen::Driver::Digitalocean do
105
105
  context 'Client ID and API key only provided' do
106
106
  let(:config) do
107
107
  {
108
- :digitalocean_client_id => 'Quei4zaey9nijiexoong',
109
- :digitalocean_api_key => 'Eep4eidaiz7chohd4cheyei9peigooyoa9Ek4sua',
108
+ digitalocean_client_id: 'Quei4zaey9nijiexoong',
109
+ digitalocean_api_key: 'Eep4eidaiz7chohd4cheyei9peigooyoa9Ek4sua',
110
110
  }
111
111
  end
112
112
 
@@ -130,10 +130,10 @@ describe Kitchen::Driver::Digitalocean do
130
130
  describe '#destroy' do
131
131
  let(:server_id) { '12345' }
132
132
  let(:hostname) { 'example.com' }
133
- let(:state) { { :server_id => server_id, :hostname => hostname } }
134
- let(:server) { stub(:nil? => false, :destroy => true) }
135
- let(:servers) { stub(:get => server) }
136
- let(:compute) { stub(:servers => servers) }
133
+ let(:state) { { server_id: server_id, hostname: hostname } }
134
+ let(:server) { stub(nil?: false, destroy: true) }
135
+ let(:servers) { stub(get: server) }
136
+ let(:compute) { stub(servers: servers) }
137
137
 
138
138
  let(:driver) do
139
139
  d = Kitchen::Driver::Digitalocean.new(config)
@@ -167,7 +167,7 @@ describe Kitchen::Driver::Digitalocean do
167
167
  s.stub(:get).with('12345').and_return(nil)
168
168
  s
169
169
  end
170
- let(:compute) { stub(:servers => servers) }
170
+ let(:compute) { stub(servers: servers) }
171
171
  let(:driver) do
172
172
  d = Kitchen::Driver::Digitalocean.new(config)
173
173
  d.instance = instance
@@ -185,21 +185,21 @@ describe Kitchen::Driver::Digitalocean do
185
185
  describe '#compute' do
186
186
  let(:config) do
187
187
  {
188
- :digitalocean_client_id => 'Aife3ahkii4oot9oowai',
189
- :digitalocean_api_key => 'yahsh4aesh3oov9daiWach'
188
+ digitalocean_client_id: 'Aife3ahkii4oot9oowai',
189
+ digitalocean_api_key: 'yahsh4aesh3oov9daiWach'
190
190
  }
191
191
  end
192
192
 
193
193
  context 'all requirements provided' do
194
194
  it 'creates a new compute connection' do
195
195
  Fog::Compute.stub(:new) { |arg| arg }
196
- res = config.merge({ :provider => 'Digitalocean' })
196
+ res = config.merge({ provider: :digitalocean })
197
197
  expect(driver.send(:compute)).to eq(res)
198
198
  end
199
199
  end
200
200
 
201
201
  context 'no client id provided' do
202
- let(:config) { { :digitalocean_api_key => 'yahsh4aesh3oov9daiWach' } }
202
+ let(:config) { { digitalocean_api_key: 'yahsh4aesh3oov9daiWach' } }
203
203
 
204
204
  it 'raises an error' do
205
205
  expect { driver.send(:compute) }.to raise_error(ArgumentError)
@@ -207,7 +207,7 @@ describe Kitchen::Driver::Digitalocean do
207
207
  end
208
208
 
209
209
  context 'no API key provided' do
210
- let(:config) { { :digitalocean_client_id => 'Aife3ahkii4oot9oowai' } }
210
+ let(:config) { { digitalocean_client_id: 'Aife3ahkii4oot9oowai' } }
211
211
 
212
212
  it 'raises an error' do
213
213
  expect { driver.send(:compute) }.to raise_error(ArgumentError)
@@ -215,7 +215,7 @@ describe Kitchen::Driver::Digitalocean do
215
215
  end
216
216
 
217
217
  context 'no region id provided' do
218
- let(:config) { { :region_id => '1' } }
218
+ let(:config) { { region_id: '1' } }
219
219
 
220
220
  it 'raises an error' do
221
221
  expect { driver.send(:compute) }.to raise_error(ArgumentError)
@@ -227,11 +227,11 @@ describe Kitchen::Driver::Digitalocean do
227
227
  describe '#create_server' do
228
228
  let(:config) do
229
229
  {
230
- :name => 'hello',
231
- :image_id => '2047',
232
- :flavor_id => '66',
233
- :ssh_key_ids => '1234',
234
- :region_id => '1'
230
+ name: 'hello',
231
+ image_id: '2047',
232
+ flavor_id: '66',
233
+ ssh_key_ids: '1234',
234
+ region_id: '1'
235
235
  }
236
236
  end
237
237
  before(:each) { @config = config.dup }
@@ -240,7 +240,7 @@ describe Kitchen::Driver::Digitalocean do
240
240
  s.stub(:create) { |arg| arg }
241
241
  s
242
242
  end
243
- let(:compute) { stub(:servers => servers) }
243
+ let(:compute) { stub(servers: servers) }
244
244
  let(:driver) do
245
245
  d = Kitchen::Driver::Digitalocean.new(config)
246
246
  d.instance = instance
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-digitalocean
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Fitzgerald
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-11 00:00:00.000000000 Z
11
+ date: 2013-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen
@@ -30,110 +30,110 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '1.11'
33
+ version: '1.12'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '1.11'
40
+ version: '1.12'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: tailor
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: cane
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: countloc
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ! '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ! '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: multi_json
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ! '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ! '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  description: A Test Kitchen Digital Ocean driver
@@ -165,12 +165,12 @@ require_paths:
165
165
  - lib
166
166
  required_ruby_version: !ruby/object:Gem::Requirement
167
167
  requirements:
168
- - - '>='
168
+ - - ! '>='
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  required_rubygems_version: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - '>='
173
+ - - ! '>='
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
176
  requirements: []