kitchen-wpar 0.1.1 → 0.2.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: 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