kitchen-nodes 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.kitchen.yml +41 -0
- data/.rubocop.yml +4 -0
- data/Berksfile +7 -0
- data/Gemfile +4 -0
- data/kitchen-nodes.gemspec +1 -1
- data/lib/kitchen/provisioner/{ip_finder.rb → finder.rb} +2 -2
- data/lib/kitchen/provisioner/{ip_finder → finder}/ssh.rb +7 -1
- data/lib/kitchen/provisioner/{ip_finder → finder}/winrm.rb +16 -1
- data/lib/kitchen/provisioner/nodes.rb +22 -5
- data/lib/kitchen/provisioner/nodes_version.rb +1 -1
- data/spec/unit/nodes_spec.rb +25 -3
- data/test/integration/cookbooks/node-tests/libraries/helper.rb +18 -0
- data/test/integration/cookbooks/node-tests/metadata.rb +4 -0
- data/test/integration/cookbooks/node-tests/recipes/node1.rb +0 -0
- data/test/integration/cookbooks/node-tests/recipes/node2.rb +9 -0
- data/test/integration/node1/serverspec/default_spec.rb +0 -0
- data/test/integration/node2/serverspec/Gemfile +3 -0
- data/test/integration/node2/serverspec/default_spec.rb +64 -0
- data/test/integration/nodes/node1-ubuntu-1204.json +22 -0
- data/test/integration/nodes/node1-windows-2012R2.json +21 -0
- data/test/integration/nodes/node2-ubuntu-1204.json +22 -0
- data/test/integration/nodes/node2-windows-2012R2.json +21 -0
- metadata +32 -9
- data/CHANGELOG.md +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b8930d518f65a1dee4809dbb78e4ae736fe4541
|
4
|
+
data.tar.gz: aa20c8911a41adc5825ff1652c23bcf8f60181ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49add0cf3e506a17bbcee92212ac72b38629141c25e3d3c23333540736b255f49c8a000304dd27aa07b5195926e1b2ead7926fc847225470fd407109316a78f2
|
7
|
+
data.tar.gz: ef5e99b812d19f73495d89f2d8d208a1aab8159a938c19a285fef8e2527723aa74c0cc31140ed68b3c4a881281d49bb1f150bd5714221bcca870a52c904a7455
|
data/.gitignore
CHANGED
data/.kitchen.yml
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
---
|
2
|
+
driver:
|
3
|
+
name: vagrant
|
4
|
+
network:
|
5
|
+
- ["private_network", { type: "dhcp" }]
|
6
|
+
|
7
|
+
provisioner:
|
8
|
+
name: nodes
|
9
|
+
|
10
|
+
platforms:
|
11
|
+
- name: ubuntu-12.04
|
12
|
+
run_list:
|
13
|
+
- recipe[apt]
|
14
|
+
driver_config:
|
15
|
+
box: hashicorp/precise64
|
16
|
+
|
17
|
+
- name: windows-2012R2
|
18
|
+
driver_config:
|
19
|
+
gui: true
|
20
|
+
box: mwrock/Windows2012R2
|
21
|
+
|
22
|
+
suites:
|
23
|
+
- name: node1
|
24
|
+
run_list:
|
25
|
+
- recipe[hurry-up-and-test::set_non_nat_vbox_ip]
|
26
|
+
- recipe[node-tests::node1]
|
27
|
+
attributes:
|
28
|
+
consul:
|
29
|
+
config:
|
30
|
+
bootstrap_expect: 2
|
31
|
+
server: true
|
32
|
+
|
33
|
+
- name: node2
|
34
|
+
run_list:
|
35
|
+
- recipe[hurry-up-and-test::set_non_nat_vbox_ip]
|
36
|
+
- recipe[node-tests::node2]
|
37
|
+
attributes:
|
38
|
+
consul:
|
39
|
+
config:
|
40
|
+
bootstrap_expect: 2
|
41
|
+
server: true
|
data/.rubocop.yml
CHANGED
data/Berksfile
ADDED
data/Gemfile
CHANGED
data/kitchen-nodes.gemspec
CHANGED
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency 'fakefs', '~> 0.4'
|
27
27
|
spec.add_development_dependency 'rake'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.2'
|
29
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
29
|
+
spec.add_development_dependency 'rubocop', '~> 0.34'
|
30
30
|
end
|
@@ -3,10 +3,10 @@ module Kitchen
|
|
3
3
|
# Locates active IPs that are not localhost
|
4
4
|
# there are separate implementations for
|
5
5
|
# different kitchen transports
|
6
|
-
module
|
6
|
+
module Finder
|
7
7
|
def self.for_transport(transport, state)
|
8
8
|
transport_string = transport.class.name.split('::').last
|
9
|
-
require("kitchen/provisioner/
|
9
|
+
require("kitchen/provisioner/finder/#{transport_string.downcase}")
|
10
10
|
|
11
11
|
connection = transport.connection(state)
|
12
12
|
klass = const_get(transport_string)
|
@@ -48,7 +48,7 @@ module Kitchen
|
|
48
48
|
end
|
49
49
|
|
50
50
|
module Provisioner
|
51
|
-
module
|
51
|
+
module Finder
|
52
52
|
# SSH implementation for returning active non-localhost IPs
|
53
53
|
class Ssh
|
54
54
|
IP4REGEX = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/
|
@@ -70,6 +70,12 @@ module Kitchen
|
|
70
70
|
ips
|
71
71
|
end
|
72
72
|
|
73
|
+
def find_fqdn
|
74
|
+
@connection.node_execute('hostname -f').chomp
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
73
79
|
def run_ifconfig
|
74
80
|
response = @connection.node_execute('/sbin/ifconfig -a')
|
75
81
|
ips = []
|
@@ -12,7 +12,7 @@ module Kitchen
|
|
12
12
|
end
|
13
13
|
|
14
14
|
module Provisioner
|
15
|
-
module
|
15
|
+
module Finder
|
16
16
|
# WinRM implementation for returning active non-localhost IPs
|
17
17
|
class Winrm
|
18
18
|
def initialize(connection)
|
@@ -29,6 +29,21 @@ module Kitchen
|
|
29
29
|
end
|
30
30
|
data
|
31
31
|
end
|
32
|
+
|
33
|
+
def find_fqdn
|
34
|
+
out = @connection.node_execute <<-EOS
|
35
|
+
[System.Net.Dns]::GetHostByName($env:computername) |
|
36
|
+
FL HostName |
|
37
|
+
Out-String |
|
38
|
+
% { \"{0}\" -f $_.Split(':')[1].Trim() }
|
39
|
+
EOS
|
40
|
+
data = ''
|
41
|
+
out[:data].each do |out_data|
|
42
|
+
stdout = out_data[:stdout]
|
43
|
+
data << stdout.chomp unless stdout.nil?
|
44
|
+
end
|
45
|
+
data
|
46
|
+
end
|
32
47
|
end
|
33
48
|
end
|
34
49
|
end
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
require 'kitchen'
|
20
20
|
require 'kitchen/provisioner/chef_zero'
|
21
|
-
require 'kitchen/provisioner/
|
21
|
+
require 'kitchen/provisioner/finder'
|
22
22
|
require 'net/ping'
|
23
23
|
|
24
24
|
module Kitchen
|
@@ -41,11 +41,15 @@ module Kitchen
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
45
|
-
|
44
|
+
def state_file
|
45
|
+
@state_file ||= Kitchen::StateFile.new(
|
46
46
|
config[:kitchen_root],
|
47
47
|
instance.name
|
48
48
|
).read
|
49
|
+
end
|
50
|
+
|
51
|
+
def ipaddress
|
52
|
+
state = state_file
|
49
53
|
|
50
54
|
if %w(127.0.0.1 localhost).include?(state[:hostname])
|
51
55
|
return get_reachable_guest_address(state)
|
@@ -53,6 +57,18 @@ module Kitchen
|
|
53
57
|
state[:hostname]
|
54
58
|
end
|
55
59
|
|
60
|
+
def fqdn
|
61
|
+
state = state_file
|
62
|
+
begin
|
63
|
+
[:username, :password].each do |prop|
|
64
|
+
state[prop] = instance.driver[prop] if instance.driver[prop]
|
65
|
+
end
|
66
|
+
Finder.for_transport(instance.transport, state).find_fqdn
|
67
|
+
rescue
|
68
|
+
nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
56
72
|
def chef_environment
|
57
73
|
env = '_default'
|
58
74
|
if config[:client_rb] && config[:client_rb][:environment]
|
@@ -67,7 +83,8 @@ module Kitchen
|
|
67
83
|
chef_environment: chef_environment,
|
68
84
|
automatic: {
|
69
85
|
ipaddress: ipaddress,
|
70
|
-
platform: instance.platform.name.split('-')[0].downcase
|
86
|
+
platform: instance.platform.name.split('-')[0].downcase,
|
87
|
+
fqdn: fqdn
|
71
88
|
},
|
72
89
|
normal: config[:attributes],
|
73
90
|
run_list: config[:run_list]
|
@@ -94,7 +111,7 @@ module Kitchen
|
|
94
111
|
[:username, :password].each do |prop|
|
95
112
|
state[prop] = instance.driver[prop] if instance.driver[prop]
|
96
113
|
end
|
97
|
-
ips =
|
114
|
+
ips = Finder.for_transport(transport, state).find_ips
|
98
115
|
fail 'Unable to retrieve IPs' if ips.empty?
|
99
116
|
ips
|
100
117
|
end
|
data/spec/unit/nodes_spec.rb
CHANGED
@@ -27,7 +27,7 @@ describe Kitchen::Provisioner::Nodes do
|
|
27
27
|
driver: Kitchen::Driver::Dummy.new
|
28
28
|
)
|
29
29
|
end
|
30
|
-
let(:transport) { Kitchen::Transport::
|
30
|
+
let(:transport) { Kitchen::Transport::Ssh.new }
|
31
31
|
let(:platform) { double('platform', os_type: nil, name: 'ubuntu') }
|
32
32
|
let(:suite) { double('suite', name: 'suite') }
|
33
33
|
let(:state) { { hostname: '192.168.1.10' } }
|
@@ -38,6 +38,11 @@ describe Kitchen::Provisioner::Nodes do
|
|
38
38
|
FileUtils.mkdir_p(config[:test_base_path])
|
39
39
|
allow_any_instance_of(Kitchen::StateFile)
|
40
40
|
.to receive(:read).and_return(state)
|
41
|
+
allow(transport).to receive(:connection)
|
42
|
+
.and_return(Kitchen::Transport::Base::Connection.new)
|
43
|
+
allow_any_instance_of(Kitchen::Transport::Base::Connection)
|
44
|
+
.to receive(:node_execute).with('hostname -f')
|
45
|
+
.and_return('fakehostname')
|
41
46
|
end
|
42
47
|
after do
|
43
48
|
FakeFS.deactivate!
|
@@ -82,6 +87,25 @@ describe Kitchen::Provisioner::Nodes do
|
|
82
87
|
expect(node[:automatic][:ipaddress]).to eq state[:hostname]
|
83
88
|
end
|
84
89
|
|
90
|
+
it 'sets the fqdn' do
|
91
|
+
subject.create_node
|
92
|
+
|
93
|
+
expect(node[:automatic][:fqdn]).to eq 'fakehostname'
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'cannot obtain fqdn' do
|
97
|
+
before do
|
98
|
+
allow_any_instance_of(Kitchen::Transport::Base::Connection)
|
99
|
+
.to receive(:node_execute).with('hostname -f')
|
100
|
+
.and_raise(Kitchen::Transport::TransportFailed.new(''))
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'sets the fqdn to nil' do
|
104
|
+
subject.create_node
|
105
|
+
expect(node[:automatic][:fqdn]).to be_nil
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
85
109
|
context 'no environment explicitly set' do
|
86
110
|
before { config.delete(:client_rb) }
|
87
111
|
|
@@ -99,8 +123,6 @@ describe Kitchen::Provisioner::Nodes do
|
|
99
123
|
before do
|
100
124
|
allow_any_instance_of(Net::Ping::External).to receive(:ping)
|
101
125
|
.and_return(true)
|
102
|
-
allow(transport).to receive(:connection)
|
103
|
-
.and_return(Kitchen::Transport::Base::Connection.new)
|
104
126
|
end
|
105
127
|
|
106
128
|
context 'cannot find an ip' do
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
|
3
|
+
def search_for_nodes(query, timeout = 120)
|
4
|
+
nodes = []
|
5
|
+
Timeout.timeout(timeout) do
|
6
|
+
nodes = search(:node, query)
|
7
|
+
until nodes.count > 0 && nodes[0].key?('ipaddress')
|
8
|
+
sleep 5
|
9
|
+
nodes = search(:node, query)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
if nodes.count == 0 || !nodes[0].key?('ipaddress')
|
14
|
+
fail "Unable to find any nodes meeting the search criteria '#{query}'!"
|
15
|
+
end
|
16
|
+
|
17
|
+
nodes
|
18
|
+
end
|
File without changes
|
@@ -0,0 +1,9 @@
|
|
1
|
+
first_node = search_for_nodes(
|
2
|
+
"run_list:*node1* AND platform:#{node['platform']}")
|
3
|
+
|
4
|
+
ruby_block 'Save first attributes' do
|
5
|
+
block do
|
6
|
+
parent = File.join(ENV['TEMP'] || '/tmp', 'kitchen')
|
7
|
+
IO.write(File.join(parent, 'other_node.json'), first_node[0].to_json)
|
8
|
+
end
|
9
|
+
end
|
File without changes
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'serverspec'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
if RUBY_PLATFORM =~ /mingw/
|
5
|
+
set :backend, :cmd
|
6
|
+
set :os, family: 'windows'
|
7
|
+
else
|
8
|
+
set :backend, :exec
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'other node' do
|
12
|
+
let(:node) do
|
13
|
+
JSON.parse(
|
14
|
+
IO.read(File.join(ENV['TEMP'] || '/tmp', 'kitchen/other_node.json'))
|
15
|
+
)
|
16
|
+
end
|
17
|
+
let(:ip) { node['automatic']['ipaddress'] }
|
18
|
+
let(:fqdn) { node['automatic']['fqdn'] }
|
19
|
+
let(:connection) do
|
20
|
+
if RUBY_PLATFORM =~ /mingw/
|
21
|
+
require 'winrm'
|
22
|
+
::WinRM::WinRMWebService.new(
|
23
|
+
"http://#{ip}:5985/wsman",
|
24
|
+
:plaintext,
|
25
|
+
user: 'vagrant',
|
26
|
+
pass: 'vagrant',
|
27
|
+
basic_auth_only: true
|
28
|
+
)
|
29
|
+
else
|
30
|
+
Net::SSH.start(
|
31
|
+
ip,
|
32
|
+
'vagrant',
|
33
|
+
password: 'vagrant',
|
34
|
+
paranoid: false
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'has an non localhost ip' do
|
40
|
+
expect(ip).not_to eq('127.0.0.1')
|
41
|
+
end
|
42
|
+
|
43
|
+
describe command('hostname') do
|
44
|
+
its(:stdout) { should_not match(/#{Regexp.quote(fqdn)}/) }
|
45
|
+
end
|
46
|
+
|
47
|
+
if RUBY_PLATFORM =~ /mingw/
|
48
|
+
it 'has a computername matching node fqdn' do
|
49
|
+
expect(connection.run_cmd('hostname').stdout.chomp).to eq(fqdn)
|
50
|
+
end
|
51
|
+
else
|
52
|
+
it 'has a computername matching node fqdn' do
|
53
|
+
connection.open_channel do |channel|
|
54
|
+
channel.request_pty
|
55
|
+
channel.exec('hostname') do |_ch, _success|
|
56
|
+
channel.on_data do |_ch, data|
|
57
|
+
expect(data.chomp).to eq(fqdn)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
connection.loop
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,22 @@
|
|
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
|
+
}
|
@@ -0,0 +1,21 @@
|
|
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
|
+
}
|
@@ -0,0 +1,22 @@
|
|
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
|
+
}
|
@@ -0,0 +1,21 @@
|
|
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
|
+
}
|
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.
|
4
|
+
version: 0.5.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-
|
11
|
+
date: 2015-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ping
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0.
|
117
|
+
version: '0.34'
|
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: '0.34'
|
125
125
|
description: A Test Kitchen Provisioner for Chef Nodes
|
126
126
|
email:
|
127
127
|
- matt@mattwrock.com
|
@@ -130,22 +130,34 @@ extensions: []
|
|
130
130
|
extra_rdoc_files: []
|
131
131
|
files:
|
132
132
|
- ".gitignore"
|
133
|
+
- ".kitchen.yml"
|
133
134
|
- ".rubocop.yml"
|
134
135
|
- ".travis.yml"
|
135
|
-
-
|
136
|
+
- Berksfile
|
136
137
|
- Gemfile
|
137
138
|
- LICENSE
|
138
139
|
- README.md
|
139
140
|
- Rakefile
|
140
141
|
- kitchen-nodes.gemspec
|
141
|
-
- lib/kitchen/provisioner/
|
142
|
-
- lib/kitchen/provisioner/
|
143
|
-
- lib/kitchen/provisioner/
|
142
|
+
- lib/kitchen/provisioner/finder.rb
|
143
|
+
- lib/kitchen/provisioner/finder/ssh.rb
|
144
|
+
- lib/kitchen/provisioner/finder/winrm.rb
|
144
145
|
- lib/kitchen/provisioner/nodes.rb
|
145
146
|
- lib/kitchen/provisioner/nodes_version.rb
|
146
147
|
- spec/unit/nodes_spec.rb
|
147
148
|
- spec/unit/stubs/ifconfig.txt
|
148
149
|
- spec/unit/stubs/ip.txt
|
150
|
+
- test/integration/cookbooks/node-tests/libraries/helper.rb
|
151
|
+
- test/integration/cookbooks/node-tests/metadata.rb
|
152
|
+
- test/integration/cookbooks/node-tests/recipes/node1.rb
|
153
|
+
- test/integration/cookbooks/node-tests/recipes/node2.rb
|
154
|
+
- test/integration/node1/serverspec/default_spec.rb
|
155
|
+
- test/integration/node2/serverspec/Gemfile
|
156
|
+
- 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
|
149
161
|
homepage: ''
|
150
162
|
licenses:
|
151
163
|
- Apache 2.0
|
@@ -166,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
178
|
version: '0'
|
167
179
|
requirements: []
|
168
180
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.4.
|
181
|
+
rubygems_version: 2.4.8
|
170
182
|
signing_key:
|
171
183
|
specification_version: 4
|
172
184
|
summary: A Test Kitchen Provisioner for Chef Nodes
|
@@ -174,4 +186,15 @@ test_files:
|
|
174
186
|
- spec/unit/nodes_spec.rb
|
175
187
|
- spec/unit/stubs/ifconfig.txt
|
176
188
|
- spec/unit/stubs/ip.txt
|
189
|
+
- test/integration/cookbooks/node-tests/libraries/helper.rb
|
190
|
+
- test/integration/cookbooks/node-tests/metadata.rb
|
191
|
+
- test/integration/cookbooks/node-tests/recipes/node1.rb
|
192
|
+
- test/integration/cookbooks/node-tests/recipes/node2.rb
|
193
|
+
- test/integration/node1/serverspec/default_spec.rb
|
194
|
+
- test/integration/node2/serverspec/Gemfile
|
195
|
+
- 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
|
177
200
|
has_rdoc:
|
data/CHANGELOG.md
DELETED