knife-server 1.3.0 → 1.4.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.
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