kitchen-wpar 0.1.1 → 0.2.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 +4 -4
- data/README.md +4 -0
- data/kitchen-wpar.gemspec +8 -4
- data/lib/kitchen/driver/wpar.rb +29 -15
- data/lib/kitchen/driver/wpar_version.rb +1 -1
- data/test/spec_helper.rb +4 -0
- data/test/wpar_spec.rb +103 -0
- metadata +64 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: afa57801e169dc52a54a101f9c69be57b242d551
|
|
4
|
+
data.tar.gz: 03096da58cdb37af094edb4eaa60b905ea6d5cb3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 66ee5dc1546e8fbbe217d08e51ba23a21ae7ed3eeec073d88b1cd80a73f50e182ad83765afb05d0455479c41b9aebd2c005dd18cc59c93a04398cec1e1dc1011
|
|
7
|
+
data.tar.gz: 50da5618019029bb93c305355faf619e6c592a6f17025d691336477c8ec1e95df08914788809dfb18cd1703d21595a01888d4970bddea1df3d8cd4b8006586e1
|
data/README.md
CHANGED
|
@@ -16,9 +16,13 @@ Please read the [Driver usage][driver_usage] page for more details.
|
|
|
16
16
|
* **wpar_name** wpar name on AIX global system. Default to **kitchenwpar**.
|
|
17
17
|
* **aix_host** aix global partition name. Default to **localhost**.
|
|
18
18
|
* **aix_user** aix global partition username. Default to **root**.
|
|
19
|
+
* **aix_key** Specify a path to the ssh key to create a connection.
|
|
19
20
|
* **wpar_address** wpar IP address to use. Not needed if an entry already exists in `/etc/hosts` on Global partition.
|
|
20
21
|
* **wpar_vg** Volume group to use to store shared wpar filesystems. Default to **rootvg**.
|
|
21
22
|
* **wpar_rootvg** Specify the `hdisk` to use to create a rootvg system wpar.
|
|
23
|
+
* **wpar_mksysb** uses a wpar backup. Specify a path to a backup to save time.
|
|
24
|
+
* **isVersioned** create a versioned wpar. Used only with **wpar_mksysb**.
|
|
25
|
+
* **isWritable** adds the option ' -l' to have a non-shared, writable /usr file system and /opt file system.
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
### <a name="config-require-chef-omnibus"></a> require\_chef\_omnibus
|
data/kitchen-wpar.gemspec
CHANGED
|
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
|
|
|
8
8
|
spec.version = Kitchen::Driver::WPAR_VERSION
|
|
9
9
|
spec.authors = ['Alain Dejoux']
|
|
10
10
|
spec.email = ['adejoux@djouxtech.net']
|
|
11
|
-
spec.date = Time.now.utc.strftime(
|
|
11
|
+
spec.date = Time.now.utc.strftime('%Y-%m-%d')
|
|
12
12
|
spec.description = %q{A Test Kitchen Driver for Wpar}
|
|
13
|
-
spec.summary =
|
|
13
|
+
spec.summary = 'test kitchen driver using AIX wpar'
|
|
14
14
|
spec.homepage = 'https://github.com/adejoux/kitchen-wpar'
|
|
15
15
|
spec.license = 'Apache-2.0'
|
|
16
16
|
|
|
@@ -19,12 +19,16 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
20
20
|
spec.require_paths = ['lib']
|
|
21
21
|
|
|
22
|
-
spec.add_dependency 'test-kitchen', '~> 1.0', '>= 1.0.0'
|
|
23
|
-
|
|
24
22
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
|
25
23
|
spec.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2'
|
|
26
24
|
|
|
27
25
|
spec.add_development_dependency 'cane', '~> 3.0', '>= 3.0.0'
|
|
28
26
|
spec.add_development_dependency 'tailor', '~> 1.4', '>= 1.4.1'
|
|
29
27
|
spec.add_development_dependency 'countloc', '~> 0.4', '>= 0.4.0'
|
|
28
|
+
spec.add_development_dependency 'rspec'
|
|
29
|
+
spec.add_dependency 'test-kitchen', '~> 1.4'
|
|
30
|
+
|
|
31
|
+
spec.add_development_dependency 'simplecov', '~> 0.9'
|
|
32
|
+
|
|
33
|
+
spec.add_development_dependency 'chefstyle'
|
|
30
34
|
end
|
data/lib/kitchen/driver/wpar.rb
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
# limitations under the License.
|
|
18
18
|
|
|
19
19
|
require 'kitchen'
|
|
20
|
-
require
|
|
20
|
+
require 'kitchen/driver/wpar_version'
|
|
21
21
|
require 'net/ssh'
|
|
22
22
|
|
|
23
23
|
module Kitchen
|
|
@@ -27,28 +27,32 @@ module Kitchen
|
|
|
27
27
|
# Wpar driver for Kitchen.
|
|
28
28
|
#
|
|
29
29
|
# @author Alain Dejoux <adejoux@djouxtech.net>
|
|
30
|
+
# noinspection RubyDefParenthesesInspection,SpellCheckingInspection
|
|
30
31
|
class Wpar < Kitchen::Driver::Base
|
|
31
32
|
|
|
32
33
|
kitchen_driver_api_version 2
|
|
33
34
|
plugin_version Kitchen::Driver::WPAR_VERSION
|
|
34
35
|
|
|
35
|
-
default_config :mkwpar,
|
|
36
|
-
default_config :startwpar,
|
|
37
|
-
default_config :rmwpar,
|
|
38
|
-
default_config :lswpar,
|
|
39
|
-
default_config :wpar_name,
|
|
40
|
-
default_config :aix_host,
|
|
41
|
-
default_config :aix_user,
|
|
36
|
+
default_config :mkwpar, '/usr/sbin/mkwpar'
|
|
37
|
+
default_config :startwpar, '/usr/sbin/startwpar'
|
|
38
|
+
default_config :rmwpar, '/usr/sbin/rmwpar'
|
|
39
|
+
default_config :lswpar, '/usr/sbin/lswpar'
|
|
40
|
+
default_config :wpar_name, 'kitchenwpar'
|
|
41
|
+
default_config :aix_host, 'localhost'
|
|
42
|
+
default_config :aix_user, 'root'
|
|
43
|
+
default_config :isWritable, false
|
|
44
|
+
default_config :isVersioned, false
|
|
42
45
|
|
|
43
46
|
def create(state)
|
|
44
47
|
if wpar_exists?(state)
|
|
45
|
-
raise ActionFailed,'wpar already exists !'
|
|
48
|
+
raise ActionFailed, 'wpar already exists !'
|
|
46
49
|
end
|
|
50
|
+
|
|
47
51
|
cmd = build_mkwpar_command()
|
|
48
52
|
ssh_command(cmd, :stderr)
|
|
49
53
|
|
|
50
54
|
unless wpar_exists?(state)
|
|
51
|
-
raise ActionFailed,'Cannot create wpar !'
|
|
55
|
+
raise ActionFailed, 'Cannot create wpar !'
|
|
52
56
|
end
|
|
53
57
|
state[:hostname]= config[:wpar_address] || config[:wpar_name]
|
|
54
58
|
copy_key()
|
|
@@ -57,12 +61,13 @@ module Kitchen
|
|
|
57
61
|
def destroy(state)
|
|
58
62
|
ssh_command("#{config[:rmwpar]} -F #{config[:wpar_name]}", :stderr)
|
|
59
63
|
if wpar_exists?(state)
|
|
60
|
-
raise ActionFailed,"couldn't destroy wpar !"
|
|
64
|
+
raise ActionFailed, "couldn't destroy wpar !"
|
|
61
65
|
end
|
|
62
66
|
end
|
|
63
67
|
|
|
64
68
|
protected
|
|
65
69
|
def build_mkwpar_command()
|
|
70
|
+
|
|
66
71
|
cmd = "#{config[:mkwpar]} -s -n #{config[:wpar_name]}"
|
|
67
72
|
unless config[:wpar_address].nil?
|
|
68
73
|
cmd += " -N address=#{config[:wpar_address]}"
|
|
@@ -77,9 +82,17 @@ module Kitchen
|
|
|
77
82
|
end
|
|
78
83
|
|
|
79
84
|
unless config[:wpar_mksysb].nil?
|
|
80
|
-
|
|
85
|
+
if config[:isVersioned]
|
|
86
|
+
cmd += " -C"
|
|
87
|
+
end
|
|
88
|
+
cmd += " -B #{config[:wpar_mksysb]}"
|
|
81
89
|
end
|
|
82
90
|
|
|
91
|
+
if config[:isWritable]
|
|
92
|
+
cmd += ' -l'
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
83
96
|
cmd
|
|
84
97
|
end
|
|
85
98
|
|
|
@@ -93,14 +106,14 @@ module Kitchen
|
|
|
93
106
|
|
|
94
107
|
def wpar_exists?(state)
|
|
95
108
|
output=ssh_command("#{config[:lswpar]} #{config[:wpar_name]}", :stderr)
|
|
96
|
-
if output.include?(
|
|
109
|
+
if output.include?('0960-419')
|
|
97
110
|
return false
|
|
98
111
|
end
|
|
99
112
|
true
|
|
100
113
|
end
|
|
101
114
|
|
|
102
115
|
def ssh_command(cmd, stream)
|
|
103
|
-
out =
|
|
116
|
+
out = ''
|
|
104
117
|
begin
|
|
105
118
|
host = config[:aix_host]
|
|
106
119
|
user = config[:aix_user]
|
|
@@ -113,9 +126,10 @@ module Kitchen
|
|
|
113
126
|
out
|
|
114
127
|
end
|
|
115
128
|
rescue
|
|
116
|
-
raise ActionFailed,'ssh command failed !'
|
|
129
|
+
raise ActionFailed, 'ssh command failed !'
|
|
117
130
|
end
|
|
118
131
|
end
|
|
132
|
+
|
|
119
133
|
end
|
|
120
134
|
end
|
|
121
135
|
end
|
data/test/spec_helper.rb
ADDED
data/test/wpar_spec.rb
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require_relative '../test/spec_helper'
|
|
2
|
+
require 'logger'
|
|
3
|
+
require 'stringio'
|
|
4
|
+
|
|
5
|
+
require 'kitchen/provisioner/dummy'
|
|
6
|
+
require 'kitchen/transport/dummy'
|
|
7
|
+
require 'kitchen/verifier/dummy'
|
|
8
|
+
|
|
9
|
+
describe Kitchen::Driver::Wpar do
|
|
10
|
+
|
|
11
|
+
let(:logged_output) { StringIO.new }
|
|
12
|
+
let(:logger) { Logger.new(logged_output) }
|
|
13
|
+
let(:config) { {} }
|
|
14
|
+
let(:platform) { Kitchen::Platform.new(:name => 'fooos-99') }
|
|
15
|
+
let(:suite) { Kitchen::Suite.new(:name => 'suitey') }
|
|
16
|
+
let(:verifier) { Kitchen::Verifier::Dummy.new }
|
|
17
|
+
let(:provisioner) { Kitchen::Provisioner::Dummy.new }
|
|
18
|
+
let(:transport) { Kitchen::Transport::Dummy.new }
|
|
19
|
+
let(:state_file) { double('state_file') }
|
|
20
|
+
let(:state) { Hash.new }
|
|
21
|
+
let(:env) { Hash.new }
|
|
22
|
+
|
|
23
|
+
let(:driver_object) { Kitchen::Driver::Wpar.new(config) }
|
|
24
|
+
|
|
25
|
+
let(:instance) do
|
|
26
|
+
Kitchen::Instance.new(
|
|
27
|
+
:verifier => verifier,
|
|
28
|
+
:driver => driver_object,
|
|
29
|
+
:logger => logger,
|
|
30
|
+
:suite => suite,
|
|
31
|
+
:platform => platform,
|
|
32
|
+
:provisioner => provisioner,
|
|
33
|
+
:transport => transport,
|
|
34
|
+
:state_file => state_file
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
let(:driver) do
|
|
39
|
+
d = driver_object
|
|
40
|
+
instance
|
|
41
|
+
d
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
let(:driver_with_no_instance) do
|
|
45
|
+
driver_object
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
module RunCommandStub
|
|
50
|
+
def run_command(_cmd, options = {})
|
|
51
|
+
options
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
before(:all) do
|
|
56
|
+
Kitchen::Driver::Wpar.instance_eval { include RunCommandStub }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe 'configuration' do
|
|
60
|
+
|
|
61
|
+
it 'sets :mkwpar name by default' do
|
|
62
|
+
expect(driver[:mkwpar]).to eq('/usr/sbin/mkwpar')
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'sets a mkwpar to nil' do
|
|
66
|
+
config[:mkwpar] = nil
|
|
67
|
+
|
|
68
|
+
expect(driver[:mkwpar]).to eq(nil)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it 'sets isWritable to true' do
|
|
72
|
+
config[:isWritable] = true
|
|
73
|
+
default_string = '/usr/sbin/mkwpar -s -n kitchenwpar -l'
|
|
74
|
+
|
|
75
|
+
expect(driver.send(:build_mkwpar_command)).to eq(default_string)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'sets isWritable to false' do
|
|
79
|
+
config[:isWritable] = false
|
|
80
|
+
default_string = '/usr/sbin/mkwpar -s -n kitchenwpar'
|
|
81
|
+
|
|
82
|
+
expect(driver.send(:build_mkwpar_command)).to eq(default_string)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
it 'sets isVersioned to true' do
|
|
87
|
+
config[:isVersioned] = true
|
|
88
|
+
config[:wpar_mksysb] = 'aix.mksysb'
|
|
89
|
+
default_string = '/usr/sbin/mkwpar -s -n kitchenwpar -C -B aix.mksysb'
|
|
90
|
+
|
|
91
|
+
expect(driver.send(:build_mkwpar_command)).to eq(default_string)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'sets isVersioned to false' do
|
|
95
|
+
config[:isVersioned] = false
|
|
96
|
+
config[:wpar_mksysb] = 'aix.mksysb'
|
|
97
|
+
default_string = '/usr/sbin/mkwpar -s -n kitchenwpar -B aix.mksysb'
|
|
98
|
+
|
|
99
|
+
expect(driver.send(:build_mkwpar_command)).to eq(default_string)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
end
|
metadata
CHANGED
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-wpar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alain Dejoux
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-02-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: test-kitchen
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.0'
|
|
20
|
-
- - ">="
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: 1.0.0
|
|
23
|
-
type: :runtime
|
|
24
|
-
prerelease: false
|
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
-
requirements:
|
|
27
|
-
- - "~>"
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: '1.0'
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 1.0.0
|
|
33
13
|
- !ruby/object:Gem::Dependency
|
|
34
14
|
name: bundler
|
|
35
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -124,6 +104,62 @@ dependencies:
|
|
|
124
104
|
- - ">="
|
|
125
105
|
- !ruby/object:Gem::Version
|
|
126
106
|
version: 0.4.0
|
|
107
|
+
- !ruby/object:Gem::Dependency
|
|
108
|
+
name: rspec
|
|
109
|
+
requirement: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: '0'
|
|
114
|
+
type: :development
|
|
115
|
+
prerelease: false
|
|
116
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
117
|
+
requirements:
|
|
118
|
+
- - ">="
|
|
119
|
+
- !ruby/object:Gem::Version
|
|
120
|
+
version: '0'
|
|
121
|
+
- !ruby/object:Gem::Dependency
|
|
122
|
+
name: test-kitchen
|
|
123
|
+
requirement: !ruby/object:Gem::Requirement
|
|
124
|
+
requirements:
|
|
125
|
+
- - "~>"
|
|
126
|
+
- !ruby/object:Gem::Version
|
|
127
|
+
version: '1.4'
|
|
128
|
+
type: :runtime
|
|
129
|
+
prerelease: false
|
|
130
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
131
|
+
requirements:
|
|
132
|
+
- - "~>"
|
|
133
|
+
- !ruby/object:Gem::Version
|
|
134
|
+
version: '1.4'
|
|
135
|
+
- !ruby/object:Gem::Dependency
|
|
136
|
+
name: simplecov
|
|
137
|
+
requirement: !ruby/object:Gem::Requirement
|
|
138
|
+
requirements:
|
|
139
|
+
- - "~>"
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '0.9'
|
|
142
|
+
type: :development
|
|
143
|
+
prerelease: false
|
|
144
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
145
|
+
requirements:
|
|
146
|
+
- - "~>"
|
|
147
|
+
- !ruby/object:Gem::Version
|
|
148
|
+
version: '0.9'
|
|
149
|
+
- !ruby/object:Gem::Dependency
|
|
150
|
+
name: chefstyle
|
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
|
152
|
+
requirements:
|
|
153
|
+
- - ">="
|
|
154
|
+
- !ruby/object:Gem::Version
|
|
155
|
+
version: '0'
|
|
156
|
+
type: :development
|
|
157
|
+
prerelease: false
|
|
158
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
159
|
+
requirements:
|
|
160
|
+
- - ">="
|
|
161
|
+
- !ruby/object:Gem::Version
|
|
162
|
+
version: '0'
|
|
127
163
|
description: A Test Kitchen Driver for Wpar
|
|
128
164
|
email:
|
|
129
165
|
- adejoux@djouxtech.net
|
|
@@ -143,6 +179,8 @@ files:
|
|
|
143
179
|
- kitchen-wpar.gemspec
|
|
144
180
|
- lib/kitchen/driver/wpar.rb
|
|
145
181
|
- lib/kitchen/driver/wpar_version.rb
|
|
182
|
+
- test/spec_helper.rb
|
|
183
|
+
- test/wpar_spec.rb
|
|
146
184
|
homepage: https://github.com/adejoux/kitchen-wpar
|
|
147
185
|
licenses:
|
|
148
186
|
- Apache-2.0
|
|
@@ -163,8 +201,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
163
201
|
version: '0'
|
|
164
202
|
requirements: []
|
|
165
203
|
rubyforge_project:
|
|
166
|
-
rubygems_version: 2.
|
|
204
|
+
rubygems_version: 2.6.10
|
|
167
205
|
signing_key:
|
|
168
206
|
specification_version: 4
|
|
169
207
|
summary: test kitchen driver using AIX wpar
|
|
170
|
-
test_files:
|
|
208
|
+
test_files:
|
|
209
|
+
- test/spec_helper.rb
|
|
210
|
+
- test/wpar_spec.rb
|