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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1bc5d5dad8775cc12ebafa5c7b8f8bade76c6ea9
4
- data.tar.gz: f87faf35366c26e37576b2573d222f66a91d8d3d
3
+ metadata.gz: afa57801e169dc52a54a101f9c69be57b242d551
4
+ data.tar.gz: 03096da58cdb37af094edb4eaa60b905ea6d5cb3
5
5
  SHA512:
6
- metadata.gz: 0bc98b8659d9982d968a78d38464cb5b706ae36514eb32fce71d685fe0637e1df59158e125161516e94f6ad06f26a13c574f4f9e92e1f68e45558af89a51a1d7
7
- data.tar.gz: 5e962a0f2600595b12e81e10197db82d969dfa4729cd687d9b9425a80961cbf02eb8b812e18ee0c36561cf66fa06c47f506ed5b28598801d26ac9f80655b4339
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
@@ -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("%Y-%m-%d")
11
+ spec.date = Time.now.utc.strftime('%Y-%m-%d')
12
12
  spec.description = %q{A Test Kitchen Driver for Wpar}
13
- spec.summary = "test kitchen driver using AIX wpar"
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
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
 
19
19
  require 'kitchen'
20
- require "kitchen/driver/wpar_version"
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, '/usr/sbin/mkwpar'
36
- default_config :startwpar, '/usr/sbin/startwpar'
37
- default_config :rmwpar, '/usr/sbin/rmwpar'
38
- default_config :lswpar, '/usr/sbin/lswpar'
39
- default_config :wpar_name, 'kitchenwpar'
40
- default_config :aix_host, 'localhost'
41
- default_config :aix_user, 'root'
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
- cmd += " -C -B #{config[:wpar_mksysb]}"
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?("0960-419")
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
@@ -21,6 +21,6 @@ module Kitchen
21
21
  module Driver
22
22
 
23
23
  # Version string for Wpar Kitchen driver
24
- WPAR_VERSION = "0.1.1"
24
+ WPAR_VERSION = "0.2.0"
25
25
  end
26
26
  end
@@ -0,0 +1,4 @@
1
+
2
+ require 'rake'
3
+ require 'rspec'
4
+ require_relative '../lib/kitchen/driver/wpar'
@@ -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.1.1
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: 2016-11-24 00:00:00.000000000 Z
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.5.1
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