kitchen-nodes 0.5.0 → 0.6.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: 4b8930d518f65a1dee4809dbb78e4ae736fe4541
4
- data.tar.gz: aa20c8911a41adc5825ff1652c23bcf8f60181ed
3
+ metadata.gz: 740fc4fc0bb5e9e69004285216c232ce23e1b9be
4
+ data.tar.gz: b5d9dd976ce3e579cc431e1a2a16d17a5e1b9a26
5
5
  SHA512:
6
- metadata.gz: 49add0cf3e506a17bbcee92212ac72b38629141c25e3d3c23333540736b255f49c8a000304dd27aa07b5195926e1b2ead7926fc847225470fd407109316a78f2
7
- data.tar.gz: ef5e99b812d19f73495d89f2d8d208a1aab8159a938c19a285fef8e2527723aa74c0cc31140ed68b3c4a881281d49bb1f150bd5714221bcca870a52c904a7455
6
+ metadata.gz: 124a5b80d69634b68e88de94711325d16278a3f100a61a825db4321c499a0b3a9dad5d58e77622d851eca8e7761053331de12e19f478237a75cff60b9e049f67
7
+ data.tar.gz: b4d65e7ad42faf4b2d0f942bd2d40793cc573fb4ebcfa4d81cfab4f60fd53b69dce1044b988670f76ecb26209e15fc02d3a8a038bbeb4b9706b452cf8fb3d4ee
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ spec/reports
17
17
  test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
+ test/integration/nodes
data/Gemfile CHANGED
@@ -4,4 +4,5 @@ gemspec
4
4
 
5
5
  gem 'kitchen-vagrant'
6
6
  gem 'berkshelf'
7
+ gem 'chef'
7
8
  gem 'winrm-transport'
data/README.md CHANGED
@@ -11,7 +11,13 @@ The nodes provisioner extends the `chef-zero` provisioner along with all of its
11
11
  "id": "server-community-ubuntu-1204",
12
12
  "automatic": {
13
13
  "ipaddress": "172.17.0.8",
14
- "platform": "ubuntu"
14
+ "platform": "ubuntu",
15
+ "recipes": [
16
+ "apt::default",
17
+ "couchbase-tests::ipaddress",
18
+ "couchbase::server",
19
+ "export-node"
20
+ ]
15
21
  },
16
22
  "normal": {
17
23
  "attr1": "val1"
@@ -28,7 +34,13 @@ The nodes provisioner extends the `chef-zero` provisioner along with all of its
28
34
  "id": "second-node-ubuntu-1204",
29
35
  "automatic": {
30
36
  "ipaddress": "172.17.0.9",
31
- "platform": "ubuntu"
37
+ "platform": "ubuntu",
38
+ "recipes": [
39
+ "apt::default",
40
+ "couchbase-tests::ipaddress",
41
+ "couchbase::server",
42
+ "export-node"
43
+ ]
32
44
  },
33
45
  "run_list": [
34
46
  "recipe[apt]",
@@ -19,7 +19,9 @@
19
19
  require 'kitchen'
20
20
  require 'kitchen/provisioner/chef_zero'
21
21
  require 'kitchen/provisioner/finder'
22
+ require 'kitchen/provisioner/run_list_expansion_from_kitchen'
22
23
  require 'net/ping'
24
+ require 'chef/run_list'
23
25
 
24
26
  module Kitchen
25
27
  module Provisioner
@@ -69,6 +71,19 @@ module Kitchen
69
71
  end
70
72
  end
71
73
 
74
+ def recipes
75
+ rl = config[:run_list].map do |item|
76
+ ::Chef::RunList::RunListItem.new item
77
+ end
78
+ rle = RunListExpansionFromKitchen.new(
79
+ chef_environment,
80
+ rl,
81
+ config[:roles_path]
82
+ )
83
+ rle.expand
84
+ rle.recipes
85
+ end
86
+
72
87
  def chef_environment
73
88
  env = '_default'
74
89
  if config[:client_rb] && config[:client_rb][:environment]
@@ -77,6 +92,7 @@ module Kitchen
77
92
  env
78
93
  end
79
94
 
95
+ # rubocop:disable Metrics/AbcSize
80
96
  def node_template
81
97
  {
82
98
  id: instance.name,
@@ -84,12 +100,14 @@ module Kitchen
84
100
  automatic: {
85
101
  ipaddress: ipaddress,
86
102
  platform: instance.platform.name.split('-')[0].downcase,
87
- fqdn: fqdn
103
+ fqdn: fqdn,
104
+ recipes: recipes
88
105
  },
89
106
  normal: config[:attributes],
90
107
  run_list: config[:run_list]
91
108
  }
92
109
  end
110
+ # rubocop:enable Metrics/AbcSize
93
111
 
94
112
  def node_dir
95
113
  File.join(config[:test_base_path], 'nodes')
@@ -19,6 +19,6 @@
19
19
  module Kitchen
20
20
  # Version string for Nodes Kitchen driver
21
21
  module Provisioner
22
- NODES_VERSION = '0.5.0'
22
+ NODES_VERSION = '0.6.0'
23
23
  end
24
24
  end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Matt Wrock (<matt@mattwrock.com>)
4
+ #
5
+ # Copyright (C) 2015, Matt Wrock
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the 'License');
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an 'AS IS' BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require 'chef/role'
20
+
21
+ module Kitchen
22
+ module Provisioner
23
+ # fetches roles from kitchen roles directory
24
+ class RunListExpansionFromKitchen < ::Chef::RunList::RunListExpansion
25
+ def fetch_role(name, included_by, role_dir)
26
+ role_file = File.join(role_dir, "#{name}.json")
27
+ Chef::Role.json_create(JSON.parse(File.read(role_file)))
28
+ rescue Chef::Exceptions::RoleNotFound
29
+ role_not_found(name, included_by)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -12,7 +12,7 @@ describe Kitchen::Provisioner::Nodes do
12
12
  {
13
13
  test_base_path: '/b',
14
14
  kitchen_root: '/r',
15
- run_list: 'cookbook:recipe',
15
+ run_list: ['recipe[cookbook::default]'],
16
16
  attributes: { att_key: 'att_val' },
17
17
  client_rb: { environment: 'my_env' }
18
18
  }
@@ -75,6 +75,12 @@ describe Kitchen::Provisioner::Nodes do
75
75
  expect(node[:run_list]).to eq config[:run_list]
76
76
  end
77
77
 
78
+ it 'expands the runlist' do
79
+ subject.create_node
80
+
81
+ expect(node[:automatic][:recipes]).to eq ['cookbook::default']
82
+ end
83
+
78
84
  it 'sets the normal attributes' do
79
85
  subject.create_node
80
86
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-nodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wrock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-11 00:00:00.000000000 Z
11
+ date: 2015-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ping
@@ -144,6 +144,7 @@ files:
144
144
  - lib/kitchen/provisioner/finder/winrm.rb
145
145
  - lib/kitchen/provisioner/nodes.rb
146
146
  - lib/kitchen/provisioner/nodes_version.rb
147
+ - lib/kitchen/provisioner/run_list_expansion_from_kitchen.rb
147
148
  - spec/unit/nodes_spec.rb
148
149
  - spec/unit/stubs/ifconfig.txt
149
150
  - spec/unit/stubs/ip.txt
@@ -154,10 +155,6 @@ files:
154
155
  - test/integration/node1/serverspec/default_spec.rb
155
156
  - test/integration/node2/serverspec/Gemfile
156
157
  - test/integration/node2/serverspec/default_spec.rb
157
- - test/integration/nodes/node1-ubuntu-1204.json
158
- - test/integration/nodes/node1-windows-2012R2.json
159
- - test/integration/nodes/node2-ubuntu-1204.json
160
- - test/integration/nodes/node2-windows-2012R2.json
161
158
  homepage: ''
162
159
  licenses:
163
160
  - Apache 2.0
@@ -193,8 +190,3 @@ test_files:
193
190
  - test/integration/node1/serverspec/default_spec.rb
194
191
  - test/integration/node2/serverspec/Gemfile
195
192
  - test/integration/node2/serverspec/default_spec.rb
196
- - test/integration/nodes/node1-ubuntu-1204.json
197
- - test/integration/nodes/node1-windows-2012R2.json
198
- - test/integration/nodes/node2-ubuntu-1204.json
199
- - test/integration/nodes/node2-windows-2012R2.json
200
- has_rdoc:
@@ -1,22 +0,0 @@
1
- {
2
- "id": "node1-ubuntu-1204",
3
- "chef_environment": "_default",
4
- "automatic": {
5
- "ipaddress": "192.168.1.147",
6
- "platform": "ubuntu",
7
- "fqdn": "node1-ubuntu-1204"
8
- },
9
- "normal": {
10
- "consul": {
11
- "config": {
12
- "bootstrap_expect": 2,
13
- "server": true
14
- }
15
- }
16
- },
17
- "run_list": [
18
- "recipe[apt]",
19
- "recipe[hurry-up-and-test::set_non_nat_vbox_ip]",
20
- "recipe[node-tests::node1]"
21
- ]
22
- }
@@ -1,21 +0,0 @@
1
- {
2
- "id": "node1-windows-2012R2",
3
- "chef_environment": "_default",
4
- "automatic": {
5
- "ipaddress": "192.168.1.149",
6
- "platform": "windows",
7
- "fqdn": "WIN-HKCPKCREPB8"
8
- },
9
- "normal": {
10
- "consul": {
11
- "config": {
12
- "bootstrap_expect": 2,
13
- "server": true
14
- }
15
- }
16
- },
17
- "run_list": [
18
- "recipe[hurry-up-and-test::set_non_nat_vbox_ip]",
19
- "recipe[node-tests::node1]"
20
- ]
21
- }
@@ -1,22 +0,0 @@
1
- {
2
- "id": "node2-ubuntu-1204",
3
- "chef_environment": "_default",
4
- "automatic": {
5
- "ipaddress": "192.168.1.148",
6
- "platform": "ubuntu",
7
- "fqdn": "node2-ubuntu-1204"
8
- },
9
- "normal": {
10
- "consul": {
11
- "config": {
12
- "bootstrap_expect": 2,
13
- "server": true
14
- }
15
- }
16
- },
17
- "run_list": [
18
- "recipe[apt]",
19
- "recipe[hurry-up-and-test::set_non_nat_vbox_ip]",
20
- "recipe[node-tests::node2]"
21
- ]
22
- }
@@ -1,21 +0,0 @@
1
- {
2
- "id": "node2-windows-2012R2",
3
- "chef_environment": "_default",
4
- "automatic": {
5
- "ipaddress": "192.168.1.150",
6
- "platform": "windows",
7
- "fqdn": "WIN-70EEPS83GN7"
8
- },
9
- "normal": {
10
- "consul": {
11
- "config": {
12
- "bootstrap_expect": 2,
13
- "server": true
14
- }
15
- }
16
- },
17
- "run_list": [
18
- "recipe[hurry-up-and-test::set_non_nat_vbox_ip]",
19
- "recipe[node-tests::node2]"
20
- ]
21
- }