knife-digital_ocean 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +7 -1
- data/README.md +5 -0
- data/lib/chef/knife/digital_ocean_droplet_create.rb +11 -2
- data/lib/knife-digital_ocean/version.rb +1 -1
- data/spec/lib/chef/knife/digital_ocean_droplet_create_spec.rb +22 -8
- data/spec/spec_helper.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 332005be8bd3b557afeaf4951fef63555ae0b425
|
4
|
+
data.tar.gz: 627025c5258c0b5536bd624249f7bfd29ac65e4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 471b6fa0448224595f7f72ca7e957f75fc6411c858c7ac9c429e283d10d449cac7a3ceff8885e0344d00484390508b0502cae468e1437dbba6b814c776095ea0
|
7
|
+
data.tar.gz: 979834d8308f3ca504eb7b5cd43bdf8e9bc49a3b353352b791d67801956f0bc87384e510458bd9869101e3a5feb6c463dafaf7366e54a54118e3da5b3631800d
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
## unreleased
|
2
2
|
|
3
|
-
* [Full Changelog](https://github.com/rmoriz/knife-digital_ocean/compare/v0.
|
3
|
+
* [Full Changelog](https://github.com/rmoriz/knife-digital_ocean/compare/v0.7.0...master)
|
4
|
+
|
5
|
+
|
6
|
+
## 0.7.0 / 2014-05-21
|
7
|
+
|
8
|
+
* [Full Changelog](https://github.com/rmoriz/knife-digital_ocean/compare/v0.6.0...v0.7.0)
|
9
|
+
* added --ssh-port option (thanks @popsikle)
|
4
10
|
|
5
11
|
|
6
12
|
## 0.6.0 / 2014-05-02
|
data/README.md
CHANGED
@@ -74,6 +74,7 @@ __Examples__
|
|
74
74
|
--location 2 \
|
75
75
|
--size 66 \
|
76
76
|
--ssh-keys 1234,1235 \
|
77
|
+
--ssh-port 22
|
77
78
|
```
|
78
79
|
|
79
80
|
```shell
|
@@ -85,6 +86,8 @@ __Examples__
|
|
85
86
|
--bootstrap \
|
86
87
|
--run-list "role[base],role[webserver]" \
|
87
88
|
--secret-file "~/.ssh/secret_file" \
|
89
|
+
--ssh-port 22 \
|
90
|
+
--identity-file "~/.ssh/id_rsa" \
|
88
91
|
--private_networking
|
89
92
|
```
|
90
93
|
|
@@ -96,6 +99,7 @@ __Syntax__
|
|
96
99
|
--location <REGION ID> \
|
97
100
|
--size <SIZE ID> \
|
98
101
|
--ssh-keys <SSH KEY-ID(s), comma-separated> \
|
102
|
+
--ssh-port <SSH PORT> \
|
99
103
|
--bootstrap \
|
100
104
|
--run-list "<RUNLIST>" \
|
101
105
|
--secret-file "<FILENAME>" \
|
@@ -110,6 +114,7 @@ __Short Syntax__
|
|
110
114
|
-L <REGION ID> \
|
111
115
|
-S <SIZE ID> \
|
112
116
|
-K <SSH KEY-ID(s), comma-separated> \
|
117
|
+
-p <SSH PORT> \
|
113
118
|
-B \
|
114
119
|
-r "<RUNLIST>"
|
115
120
|
```
|
@@ -138,6 +138,13 @@ class Chef
|
|
138
138
|
:description => "A file containing the secret key to use to encrypt data bag item values",
|
139
139
|
:proc => Proc.new { |sf| Chef::Config[:knife][:secret_file] = sf }
|
140
140
|
|
141
|
+
option :ssh_port,
|
142
|
+
:short => "-p PORT",
|
143
|
+
:long => "--ssh-port PORT",
|
144
|
+
:description => "The ssh port",
|
145
|
+
:default => "22",
|
146
|
+
:proc => Proc.new { |port| Chef::Config[:knife][:ssh_port] = port }
|
147
|
+
|
141
148
|
def run
|
142
149
|
$stdout.sync = true
|
143
150
|
|
@@ -203,7 +210,7 @@ class Chef
|
|
203
210
|
puts ui.color("IPv4 address is: #{ip_address}", :green)
|
204
211
|
|
205
212
|
print ui.color('Waiting for sshd:', :magenta)
|
206
|
-
print('.') until tcp_test_ssh(ip_address
|
213
|
+
print('.') until tcp_test_ssh(ip_address) {
|
207
214
|
sleep 2
|
208
215
|
puts 'done'
|
209
216
|
}
|
@@ -228,7 +235,8 @@ class Chef
|
|
228
235
|
end
|
229
236
|
end
|
230
237
|
|
231
|
-
def tcp_test_ssh(hostname
|
238
|
+
def tcp_test_ssh(hostname)
|
239
|
+
port = Chef::Config[:knife][:ssh_port] || config[:ssh_port]
|
232
240
|
tcp_socket = TCPSocket.new(hostname, port)
|
233
241
|
readable = IO.select([tcp_socket], nil, nil, 5)
|
234
242
|
if readable
|
@@ -258,6 +266,7 @@ class Chef
|
|
258
266
|
bootstrap.config.merge! config
|
259
267
|
bootstrap.config[:chef_node_name] = locate_config_value(:server_name)
|
260
268
|
bootstrap.config[:bootstrap_version] = locate_config_value(:bootstrap_version)
|
269
|
+
bootstrap.config[:ssh_port] = Chef::Config[:knife][:ssh_port] || config[:ssh_port]
|
261
270
|
bootstrap.config[:distro] = locate_config_value(:distro)
|
262
271
|
bootstrap.config[:use_sudo] = true unless config[:ssh_user] == 'root'
|
263
272
|
bootstrap.config[:template_file] = locate_config_value(:template_file)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
def mock_api_response(data = {})
|
4
|
-
Hashie::
|
4
|
+
Hashie::Mash.new(data)
|
5
5
|
end
|
6
6
|
|
7
7
|
describe Chef::Knife::DigitalOceanDropletCreate do
|
8
8
|
|
9
9
|
subject {
|
10
10
|
s = Chef::Knife::DigitalOceanDropletCreate.new
|
11
|
-
s.stub(:client).and_return
|
11
|
+
s.stub(:client).and_return double(DigitalOcean::API)
|
12
12
|
s
|
13
13
|
}
|
14
14
|
|
@@ -64,8 +64,8 @@ describe Chef::Knife::DigitalOceanDropletCreate do
|
|
64
64
|
let(:subject) {
|
65
65
|
s = super()
|
66
66
|
s.client.stub_chain(:droplets, :create).and_return mock_api_response(api_response)
|
67
|
-
s.stub
|
68
|
-
s.stub
|
67
|
+
s.stub(:ip_address_available).and_return '123.123.123.123'
|
68
|
+
s.stub(:tcp_test_ssh).and_return true
|
69
69
|
s
|
70
70
|
}
|
71
71
|
|
@@ -97,8 +97,8 @@ describe Chef::Knife::DigitalOceanDropletCreate do
|
|
97
97
|
let(:subject) {
|
98
98
|
s = super()
|
99
99
|
s.client.stub_chain(:droplets, :create).and_return mock_api_response(api_response)
|
100
|
-
s.stub
|
101
|
-
s.stub
|
100
|
+
s.stub(:ip_address_available).and_return '123.123.123.123'
|
101
|
+
s.stub(:tcp_test_ssh).and_return true
|
102
102
|
s
|
103
103
|
}
|
104
104
|
|
@@ -136,8 +136,8 @@ describe Chef::Knife::DigitalOceanDropletCreate do
|
|
136
136
|
let(:subject) {
|
137
137
|
s = super()
|
138
138
|
s.client.stub_chain(:droplets, :create).and_return mock_api_response(api_response)
|
139
|
-
s.stub
|
140
|
-
s.stub
|
139
|
+
s.stub(:ip_address_available).and_return '123.123.123.123'
|
140
|
+
s.stub(:tcp_test_ssh).and_return true
|
141
141
|
s
|
142
142
|
}
|
143
143
|
|
@@ -183,5 +183,19 @@ describe Chef::Knife::DigitalOceanDropletCreate do
|
|
183
183
|
end
|
184
184
|
end
|
185
185
|
|
186
|
+
context 'passing ssh_port (--ssh-port)' do
|
187
|
+
let(:ssh_port) { 22 }
|
188
|
+
let(:custom_config) {
|
189
|
+
{
|
190
|
+
:ssh_port => ssh_port
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
it 'ssh_port should be available to Bootstrap' do
|
195
|
+
bootstrap = subject.bootstrap_for_node('123.123.123.123')
|
196
|
+
bootstrap.config[:ssh_port].should eql(ssh_port)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
186
200
|
end
|
187
201
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-digital_ocean
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roland Moriz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|