kitchen-habitat 0.5.3 → 0.6.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 +8 -4
- data/lib/kitchen-habitat/version.rb +1 -1
- data/lib/kitchen/provisioner/habitat.rb +42 -12
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2bae74a60049f0b9a93da4a8a4a94a0b22d96204
|
|
4
|
+
data.tar.gz: f03ca264521bdbddb44d70c221790830c562c535
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ca4742c8f967de7dd00b184b2aba4bd23e50149049151e4952ca5a9dc2e6cbd70b0ae49def3c1e5e62e166c6ff08a3cdfa827ff78641b3d5a60d5a43259ecb1
|
|
7
|
+
data.tar.gz: 66bee9a35a38cb0d6465ca94c367be281700f408af40be5e2a7591b578d8caf25c0686d8a10cb213ee77bc30519c17b3b6dba8f7bd819170a4647063116d67a3
|
data/README.md
CHANGED
|
@@ -7,7 +7,7 @@ A Test Kitchen Provisioner for [Habitat](https://habitat.sh)
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
## Installation & Setup
|
|
10
|
-
You'll need the test-kitchen & kitchen-habitat gems installed in your system, along with kitchen-vagrant or some other suitable driver for test-kitchen.
|
|
10
|
+
You'll need the test-kitchen & kitchen-habitat gems installed in your system, along with kitchen-vagrant or some other suitable driver for test-kitchen.
|
|
11
11
|
|
|
12
12
|
## Configuration Settings
|
|
13
13
|
|
|
@@ -34,7 +34,7 @@ You'll need the test-kitchen & kitchen-habitat gems installed in your system, al
|
|
|
34
34
|
* `hab_sup_artifact_name`
|
|
35
35
|
* Artifact package name for a custom supervisor to run
|
|
36
36
|
* Used to upload and test a local supervisor.
|
|
37
|
-
* Package should be located in the `results_directory`
|
|
37
|
+
* Package should be located in the `results_directory`
|
|
38
38
|
* Defaults to `nil
|
|
39
39
|
* `hab_sup_listen_http`
|
|
40
40
|
* Port for the supervisor's sidecar to listen on.
|
|
@@ -83,9 +83,13 @@ You'll need the test-kitchen & kitchen-habitat gems installed in your system, al
|
|
|
83
83
|
* `user_toml_name`
|
|
84
84
|
* Name of the file to be used as the user.toml for the service under test.
|
|
85
85
|
* Defaults to `user.toml`
|
|
86
|
+
* `install_latest_artifact`
|
|
87
|
+
* Choose to install latest artifact.
|
|
88
|
+
* Must specify `artifact_name` or `package_origin` and `package_name`
|
|
89
|
+
* `package_version` and `package_release` will be ignored
|
|
90
|
+
* Defaults to `false`
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
## Example
|
|
92
|
+
## Example
|
|
89
93
|
|
|
90
94
|
```yaml
|
|
91
95
|
driver:
|
|
@@ -31,11 +31,10 @@ module Kitchen
|
|
|
31
31
|
default_config :hab_sup_group, nil
|
|
32
32
|
|
|
33
33
|
# hab-sup service options
|
|
34
|
+
default_config :install_latest_artifact, false
|
|
34
35
|
default_config :artifact_name, nil
|
|
35
36
|
default_config :package_origin, "core"
|
|
36
|
-
default_config :package_name
|
|
37
|
-
provisioner.instance.suite.name
|
|
38
|
-
end
|
|
37
|
+
default_config :package_name
|
|
39
38
|
default_config :package_version, nil
|
|
40
39
|
default_config :package_release, nil
|
|
41
40
|
default_config :service_topology, nil
|
|
@@ -51,10 +50,9 @@ module Kitchen
|
|
|
51
50
|
default_config :use_screen, false
|
|
52
51
|
|
|
53
52
|
def finalize_config!(instance)
|
|
54
|
-
|
|
55
53
|
# Check to see if a package ident was specified for package name and be helpful
|
|
56
|
-
unless (config[:package_name] =~ /\//).nil?
|
|
57
|
-
config[:package_origin], config[:package_name], config[:package_version], config[:package_release] = config[:package_name].split(
|
|
54
|
+
unless config[:package_name].nil? || (config[:package_name] =~ /\//).nil?
|
|
55
|
+
config[:package_origin], config[:package_name], config[:package_version], config[:package_release] = config[:package_name].split("/")
|
|
58
56
|
end
|
|
59
57
|
|
|
60
58
|
unless config[:hab_sup_artifact_name].nil?
|
|
@@ -76,7 +74,7 @@ module Kitchen
|
|
|
76
74
|
end
|
|
77
75
|
|
|
78
76
|
def install_command
|
|
79
|
-
raise
|
|
77
|
+
raise "Need to fill in some implementation here." if instance.platform == "windows"
|
|
80
78
|
wrap_shell_code <<-BASH
|
|
81
79
|
#{export_hab_origin}
|
|
82
80
|
if command -v hab >/dev/null 2>&1
|
|
@@ -91,8 +89,9 @@ module Kitchen
|
|
|
91
89
|
def init_command
|
|
92
90
|
wrap_shell_code <<-EOH
|
|
93
91
|
id -u hab >/dev/null 2>&1 || sudo useradd hab >/dev/null 2>&1
|
|
92
|
+
rm -rf /tmp/kitchen
|
|
94
93
|
mkdir -p /tmp/kitchen/results
|
|
95
|
-
mkdir -p /tmp/kitchen/config
|
|
94
|
+
#{'mkdir -p /tmp/kitchen/config' unless config[:override_package_config]}
|
|
96
95
|
EOH
|
|
97
96
|
end
|
|
98
97
|
|
|
@@ -100,6 +99,7 @@ module Kitchen
|
|
|
100
99
|
super
|
|
101
100
|
copy_results_to_sandbox
|
|
102
101
|
copy_user_toml_to_sandbox
|
|
102
|
+
copy_package_config_from_override_to_sandbox
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
def prepare_command
|
|
@@ -179,12 +179,22 @@ module Kitchen
|
|
|
179
179
|
end
|
|
180
180
|
end
|
|
181
181
|
|
|
182
|
+
def copy_package_config_from_override_to_sandbox
|
|
183
|
+
return if config[:config_directory].nil?
|
|
184
|
+
return unless config[:override_package_config]
|
|
185
|
+
local_config_dir = File.join(config[:kitchen_root], config[:config_directory])
|
|
186
|
+
return unless Dir.exist?(local_config_dir)
|
|
187
|
+
|
|
188
|
+
sandbox_config_dir = File.join(sandbox_path, "config")
|
|
189
|
+
FileUtils.copy_entry(local_config_dir, sandbox_config_dir)
|
|
190
|
+
end
|
|
191
|
+
|
|
182
192
|
def copy_results_to_sandbox
|
|
183
193
|
results_dir = resolve_results_directory
|
|
184
194
|
return if results_dir.nil?
|
|
185
195
|
FileUtils.mkdir_p(File.join(sandbox_path, "results"))
|
|
186
|
-
FileUtils.
|
|
187
|
-
results_dir,
|
|
196
|
+
FileUtils.cp(
|
|
197
|
+
File.join(results_dir, config[:install_latest_artifact] ? latest_artifact_name : config[:artifact_name]),
|
|
188
198
|
File.join(sandbox_path, "results"),
|
|
189
199
|
preserve: true
|
|
190
200
|
)
|
|
@@ -207,8 +217,28 @@ module Kitchen
|
|
|
207
217
|
end
|
|
208
218
|
|
|
209
219
|
def install_service_package
|
|
210
|
-
return
|
|
211
|
-
|
|
220
|
+
return unless config[:install_latest_artifact] || !config[:artifact_name].nil?
|
|
221
|
+
|
|
222
|
+
artifact_name = ""
|
|
223
|
+
if config[:install_latest_artifact]
|
|
224
|
+
artifact_name = latest_artifact_name
|
|
225
|
+
elsif !config[:install_latest_artifact] && !config[:artifact_name].nil?
|
|
226
|
+
artifact_name = config[:artifact_name]
|
|
227
|
+
else
|
|
228
|
+
return
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
artifact_path = File.join(File.join(config[:root_path], "results"), artifact_name)
|
|
232
|
+
"sudo hab pkg install #{artifact_path}"
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def latest_artifact_name
|
|
236
|
+
results_dir = resolve_results_directory
|
|
237
|
+
return if results_dir.nil?
|
|
238
|
+
|
|
239
|
+
artifact_path = Dir.glob(File.join(results_dir, "#{config[:package_origin]}-#{config[:package_name]}-*.hart")).max_by { |f| File.mtime(f) }
|
|
240
|
+
|
|
241
|
+
File.basename(artifact_path)
|
|
212
242
|
end
|
|
213
243
|
|
|
214
244
|
def copy_user_toml_to_service_directory
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-habitat
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steven Murawski
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-03-
|
|
11
|
+
date: 2017-03-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: test-kitchen
|