knife-server 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f3438d1a1763d6e1b499924e5d003bbf61bedc1
4
- data.tar.gz: 7e323fdee09dc509f99116e5ac0dd58e367c885e
3
+ metadata.gz: 83b68a283fef42ef77414c6dfc62ad7030769d14
4
+ data.tar.gz: 427955c02665a84a4650a37061d0d987ff3d4321
5
5
  SHA512:
6
- metadata.gz: 1c490bfd6820c94c6e7e3065f36b7265096a81b3474627f92cb253017dc665b66ca90b3f26f5a27a1b717d8d0092ee6d68f3da8366158f8c2d7535aca7dd973d
7
- data.tar.gz: f53bb247487c0cb4f29e6f7fcab5ca3b0049ece1db8bc7a3ecf36c979a19f467f7a9989fe2d77cb4c3fba3b9e25cd25d7adbca727b86aa073c62fd2b28099600
6
+ metadata.gz: e12382dfc1a92aac14191ed3976ed46aaf480c126524990cb4f4cd72defb85b33528526b2aea91c04b931ac891f86b40e9c8576a342e322d731a5f6ee1a89035
7
+ data.tar.gz: f25f254039e81b453051d7ef943672c7058638226fb01cf823950e86e7bcc659c3cdf15f84a32cab940218e7694402449e49f96b3608bb5a8b2130b43dc30a64
@@ -3,14 +3,12 @@ language: ruby
3
3
  rvm:
4
4
  - 2.1
5
5
  - 2.0.0
6
- - 1.9.3
7
6
  - ruby-head
8
7
 
9
8
  env:
10
9
  - "CHEF_VERSION="
11
10
  - "CHEF_VERSION='~> 11.14.2'"
12
11
  - "CHEF_VERSION='~> 11.4.4'"
13
- - "CHEF_VERSION='~> 10.26'"
14
12
 
15
13
  bundler_args: --without guard
16
14
 
@@ -1,3 +1,11 @@
1
+ ## 1.4.0 / 2014-12-03
2
+
3
+ ### Upstream changes
4
+
5
+ * Fix support for knife-openstack >= 1.0.0. ([@fnichol][])
6
+ * Fix support for knife-digtal_ocean >= 2.0.0. ([@fnichol][])
7
+
8
+
1
9
  ## 1.3.0 / 2014-09-14
2
10
 
3
11
  ### New features
data/Gemfile CHANGED
@@ -7,7 +7,6 @@ gemspec
7
7
  group :guard do
8
8
  gem "guard-rspec"
9
9
  gem "guard-rubocop"
10
- gem "guard-cane"
11
10
  end
12
11
 
13
12
  group :test do
data/Guardfile CHANGED
@@ -16,11 +16,6 @@ group :red_green_refactor, :halt_on_fail => true do
16
16
  watch(%r{^spec/spec_helper\.rb}) { "spec" }
17
17
  end
18
18
 
19
- guard :cane do
20
- watch(%r{.*\.rb})
21
- watch(".cane")
22
- end
23
-
24
19
  guard :rubocop, rubocop_opts do
25
20
  watch(%r{.+\.rb$})
26
21
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Code Climate](https://codeclimate.com/github/fnichol/knife-server.png)](https://codeclimate.com/github/fnichol/knife-server)
6
6
  [![Dependency Status](https://gemnasium.com/fnichol/knife-server.png)](https://gemnasium.com/fnichol/knife-server)
7
7
 
8
- An Chef Knife plugin to manage Chef Servers. Bootstrap a new Chef
8
+ A Chef Knife plugin to manage Chef Servers. Bootstrap a new Chef
9
9
  Server on Amazon's EC2, Digital Ocean, Linode, OpenStack or a standalone server.
10
10
  Backup and restore your Chef Server or Hosted Chef's node, role, data bag, and
11
11
  environment JSON data.
@@ -44,11 +44,10 @@ To spin up your Chef Server on [Digital Ocean][do_site]:
44
44
  ```bash
45
45
  knife server bootstrap digitalocean \
46
46
  --node-name chefapalooza.example.com \
47
- --digital_ocean_client_id $DIGITAL_OCEAN_CLIENT_ID \
48
- --digital_ocean_api_key $DIGITAL_OCEAN_API_KEY \
49
- --location 3 \
50
- --size 63 \
51
- --image 5588928 \
47
+ --digital_ocean_access_token $DIGITAL_OCEAN_ACCESS_TOKEN \
48
+ --location sfo1 \
49
+ --size 1gb \
50
+ --image ubuntu-12-04-x64 \
52
51
  --ssh-keys $DIGITAL_OCEAN_SSH_KEY_ID \
53
52
  --identity-file ~/.ssh/id_rsa-do
54
53
  ```
@@ -216,8 +215,7 @@ knife[:flavor] = "t1.micro"
216
215
  knife[:linode_api_key] = "MY_KEY"
217
216
 
218
217
  # for digitalocean
219
- knife[:digital_ocean_client_id] = "MY_CLIENT_ID"
220
- knife[:digital_ocean_api_key] = "MY_KEY"
218
+ knife[:digital_ocean_acceess_token] = "MY_TOKEN"
221
219
  ```
222
220
 
223
221
  Better yet, why not try a more generic [knife.rb][chef_bootstrap_knife_rb] file
@@ -23,10 +23,10 @@ Gem::Specification.new do |gem|
23
23
  gem.add_dependency "chef", ">= 0.10.10"
24
24
 
25
25
  gem.add_development_dependency "rake"
26
- gem.add_development_dependency "knife-digital_ocean"
26
+ gem.add_development_dependency "knife-digital_ocean", ">= 2.0.0"
27
27
  gem.add_development_dependency "knife-ec2", ">= 0.5.12"
28
28
  gem.add_development_dependency "knife-linode"
29
- gem.add_development_dependency "knife-openstack"
29
+ gem.add_development_dependency "knife-openstack", ">= 1.0.0"
30
30
 
31
31
  gem.add_development_dependency "rspec", "~> 3.0"
32
32
  gem.add_development_dependency "fakefs", "~> 0.4"
@@ -36,6 +36,6 @@ Gem::Specification.new do |gem|
36
36
  # style and complexity libraries are tightly version pinned as newer releases
37
37
  # may introduce new and undesireable style choices which would be immediately
38
38
  # enforced in CI
39
- gem.add_development_dependency "finstyle", "1.2.0"
39
+ gem.add_development_dependency "finstyle", "1.3.0"
40
40
  gem.add_development_dependency "cane", "2.6.2"
41
41
  end
@@ -35,7 +35,7 @@ class Chef
35
35
 
36
36
  begin
37
37
  require "chef/knife/digital_ocean_droplet_create"
38
- require "fog"
38
+ require "droplet_kit"
39
39
  Chef::Knife::DigitalOceanDropletCreate.load_deps
40
40
 
41
41
  current_options = options
@@ -96,19 +96,17 @@ class Chef
96
96
  end
97
97
 
98
98
  def digital_ocean_connection
99
- @digital_ocean_connection ||= Fog::Compute.new(
100
- :provider => "DigitalOcean",
101
- :digitalocean_client_id => config_val(:digital_ocean_client_id),
102
- :digitalocean_api_key => config_val(:digital_ocean_api_key)
99
+ @digital_ocean_connection ||= DropletKit::Client.new(
100
+ :access_token => config_val(:digital_ocean_access_token)
103
101
  )
104
102
  end
105
103
 
106
104
  def server_ip_address
107
- server = digital_ocean_connection.servers.find do |s|
108
- s.state == "active" && s.name == config_val(:chef_node_name)
105
+ server = digital_ocean_connection.droplets.all.find do |s|
106
+ s.status == "active" && s.name == config_val(:chef_node_name)
109
107
  end
110
108
 
111
- server && server.public_ip_address
109
+ server && server.public_ip
112
110
  end
113
111
 
114
112
  private
@@ -28,6 +28,14 @@ class Chef
28
28
 
29
29
  include Knife::ServerBootstrapBase
30
30
 
31
+ def self.wrapped_plugin_class
32
+ Chef::Knife::Cloud::OpenstackServerCreate
33
+ end
34
+
35
+ def wrapped_plugin_class
36
+ self.class.wrapped_plugin_class
37
+ end
38
+
31
39
  deps do
32
40
  require "knife/server/ssh"
33
41
  require "knife/server/credentials"
@@ -35,10 +43,10 @@ class Chef
35
43
  begin
36
44
  require "chef/knife/openstack_server_create"
37
45
  require "fog"
38
- Chef::Knife::OpenstackServerCreate.load_deps
46
+ wrapped_plugin_class.load_deps
39
47
 
40
48
  current_options = options
41
- self.options = Chef::Knife::OpenstackServerCreate.options.dup
49
+ self.options = wrapped_plugin_class.options.dup
42
50
  options.merge!(current_options)
43
51
  rescue LoadError => ex
44
52
  ui.error [
@@ -63,8 +71,8 @@ class Chef
63
71
  ENV["WEBUI_PASSWORD"] = config_val(:webui_password)
64
72
  ENV["AMQP_PASSWORD"] = config_val(:amqp_password)
65
73
  ENV["NO_TEST"] = "1" if config[:no_test]
66
- bootstrap = Chef::Knife::OpenstackServerCreate.new
67
- Chef::Knife::OpenstackServerCreate.options.keys.each do |attr|
74
+ bootstrap = wrapped_plugin_class.new
75
+ wrapped_plugin_class.options.keys.each do |attr|
68
76
  val = config_val(attr)
69
77
  next if val.nil?
70
78
 
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Knife
21
21
  module Server
22
- VERSION = "1.3.0"
22
+ VERSION = "1.4.0"
23
23
  end
24
24
  end
@@ -38,7 +38,7 @@ describe Chef::Knife::ServerBootstrapDigitalocean do
38
38
  @knife.config[:ssh_user] = "root"
39
39
  end
40
40
 
41
- let(:connection) { double(Fog::Compute::AWS) }
41
+ let(:connection) { double(DropletKit::Client) }
42
42
 
43
43
  describe "#digital_ocean_bootstrap" do
44
44
 
@@ -46,8 +46,7 @@ describe Chef::Knife::ServerBootstrapDigitalocean do
46
46
  @knife.config[:chef_node_name] = "shave.yak"
47
47
  @knife.config[:ssh_user] = "jdoe"
48
48
  @knife.config[:identity_file] = "~/.ssh/mykey_dsa"
49
- @knife.config[:digital_ocean_client_id] = "clientxyz"
50
- @knife.config[:digital_ocean_api_key] = "do123"
49
+ @knife.config[:digital_ocean_access_token] = "do123"
51
50
  @knife.config[:distro] = "distro-praha"
52
51
  @knife.config[:webui_password] = "daweb"
53
52
  @knife.config[:amqp_password] = "queueitup"
@@ -79,12 +78,8 @@ describe Chef::Knife::ServerBootstrapDigitalocean do
79
78
  expect(bootstrap.config[:identity_file]).to eq("~/.ssh/mykey_dsa")
80
79
  end
81
80
 
82
- it "configs the bootstrap's digital_ocean_client_id" do
83
- expect(bootstrap.config[:digital_ocean_client_id]).to eq("clientxyz")
84
- end
85
-
86
- it "configs the bootstrap's digital_ocean_api_key" do
87
- expect(bootstrap.config[:digital_ocean_api_key]).to eq("do123")
81
+ it "configs the bootstrap's digital_ocean_access_token" do
82
+ expect(bootstrap.config[:digital_ocean_access_token]).to eq("do123")
88
83
  end
89
84
 
90
85
  it "configs the bootstrap's distro" do
@@ -138,26 +133,21 @@ describe Chef::Knife::ServerBootstrapDigitalocean do
138
133
  before do
139
134
  @before_config = Hash.new
140
135
  @before_config[:knife] = Hash.new
141
- [:digital_ocean_client_id, :digital_ocean_api_key].each do |key|
136
+ [:digital_ocean_access_token].each do |key|
142
137
  @before_config[:knife][key] = Chef::Config[:knife][key]
143
138
  end
144
139
 
145
- Chef::Config[:knife][:digital_ocean_client_id] = "client"
146
- Chef::Config[:knife][:digital_ocean_api_key] = "api"
140
+ Chef::Config[:knife][:digital_ocean_access_token] = "api"
147
141
  end
148
142
 
149
143
  after do
150
- [:digital_ocean_client_id, :digital_ocean_api_key].each do |key|
144
+ [:digital_ocean_access_token].each do |key|
151
145
  Chef::Config[:knife][key] = @before_config[:knife][key]
152
146
  end
153
147
  end
154
148
 
155
149
  it "constructs a connection" do
156
- expect(Fog::Compute).to receive(:new).with(
157
- :provider => "DigitalOcean",
158
- :digitalocean_client_id => "client",
159
- :digitalocean_api_key => "api"
160
- )
150
+ expect(DropletKit::Client).to receive(:new).with(:access_token => "api")
161
151
 
162
152
  @knife.digital_ocean_connection
163
153
  end
@@ -165,40 +155,36 @@ describe Chef::Knife::ServerBootstrapDigitalocean do
165
155
 
166
156
  describe "#server_ip_address" do
167
157
 
158
+ let(:droplets_resource) { double(:all => droplets) }
159
+
168
160
  before do
169
161
  @knife.config[:chef_node_name] = "yak"
170
162
  allow(@knife).to receive(:digital_ocean_connection) { connection }
163
+ allow(connection).to receive(:droplets) { droplets_resource }
171
164
  end
172
165
 
173
- context "when server is found" do
174
-
175
- before do
176
- allow(connection).to receive(:servers) { [server] }
177
- end
166
+ context "when single server is found" do
178
167
 
179
168
  let(:server) do
180
- double(
181
- :name => "yak",
182
- :state => "active",
183
- :public_ip_address => "10.11.12.13"
184
- )
169
+ double(:name => "yak", :status => "active", :public_ip => "10.11.12.13")
185
170
  end
186
171
 
172
+ let(:droplets) { [server] }
173
+
187
174
  it "returns the provisioned ip address" do
188
175
  expect(@knife.server_ip_address).to eq("10.11.12.13")
189
176
  end
190
177
 
191
178
  it "ignores terminated instances" do
192
- allow(server).to receive(:state) { "foobar" }
179
+ allow(server).to receive(:status) { "foobar" }
193
180
 
194
181
  expect(@knife.server_ip_address).to be_nil
195
182
  end
196
183
  end
197
184
 
198
185
  context "when server is not found" do
199
- before do
200
- allow(connection).to receive(:servers) { [] }
201
- end
186
+
187
+ let(:droplets) { [] }
202
188
 
203
189
  it "returns nil" do
204
190
  expect(@knife.server_ip_address).to be_nil
@@ -63,7 +63,7 @@ describe Chef::Knife::ServerBootstrapOpenstack do
63
63
  let(:bootstrap) { @knife.openstack_bootstrap }
64
64
 
65
65
  it "returns a OpenstackServerCreate instance" do
66
- expect(bootstrap).to be_a(Chef::Knife::OpenstackServerCreate)
66
+ expect(bootstrap).to be_a(Chef::Knife::Cloud::OpenstackServerCreate)
67
67
  end
68
68
 
69
69
  it "configs the bootstrap's chef_node_name" do
@@ -211,7 +211,8 @@ describe Chef::Knife::ServerBootstrapOpenstack do
211
211
  @knife.config[:ssh_password] = "booboo"
212
212
  allow(@knife).to receive(:openstack_connection) { connection }
213
213
  allow(@knife).to receive(:server_ip_address) { "11.11.11.13" }
214
- allow(Chef::Knife::OpenstackServerCreate).to receive(:new) { bootstrap }
214
+ allow(Chef::Knife::Cloud::OpenstackServerCreate).
215
+ to receive(:new) { bootstrap }
215
216
  allow(Knife::Server::SSH).to receive(:new) { ssh }
216
217
  allow(Knife::Server::Credentials).to receive(:new) { credentials }
217
218
  allow(credentials).to receive(:install_validation_key)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Nichol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-15 00:00:00.000000000 Z
11
+ date: 2014-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 2.0.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
- version: '0'
82
+ version: 2.0.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: knife-ec2
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 1.0.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
- version: '0'
124
+ version: 1.0.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - '='
186
186
  - !ruby/object:Gem::Version
187
- version: 1.2.0
187
+ version: 1.3.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - '='
193
193
  - !ruby/object:Gem::Version
194
- version: 1.2.0
194
+ version: 1.3.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: cane
197
197
  requirement: !ruby/object:Gem::Requirement