hybrid_platforms_conductor 33.6.0 → 33.7.3

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
  SHA256:
3
- metadata.gz: 896c846fd0e19ea056bd3fc47b525ef885508753b159399d0cc05b1c5ac01863
4
- data.tar.gz: e8f5b1e5c1d53e6afc05280dae73a143f3a99e85c85842239f09e4ea4f66756f
3
+ metadata.gz: c6eb048c4791dd3f4bb8263991c55a075de8d3c1b4458fb0b45469f3cefbb7eb
4
+ data.tar.gz: 9d22df654d620efaead05daebdb41bc00d67614d6e62771dc7fd92989731fd87
5
5
  SHA512:
6
- metadata.gz: 278d67fa0a79be5324c1430d7748472043b50cb5f280788db42e26c1ece6a2be1c5b0c115a741827c5f14a3deada7f5451cc18f598323d6b7fabdabccc147908
7
- data.tar.gz: 84da9aa227483980c271d3f492a8a965cdc1cd4deaec5a02f6b178c68f2e517ce9e40b4519918caeed0792e3c21f5e9e79bb65d0384bda8ba27f0eb5643dab12
6
+ metadata.gz: 8b1724ac79d6bacf3215e30872571f2f3ea8a35b980a20dd3b3da3ecd602c0147319801308855e0b054ef921c8b54c17a3d246b84a1cdb16298985c0cd082fae
7
+ data.tar.gz: 72e45917b5992a610cdd6d2e95d2c4690c06b94640edf0e742ae12e8fd68ece86d9cbbb16866faa6baf40ebece26a1a8fde6a44cfc3615a71db133a74154b6b3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ # [v33.7.3](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.7.2...v33.7.3) (2021-07-16 12:05:04)
2
+
3
+ ### Patches
4
+
5
+ * [[Hotfix] Increase port timeout](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/a450e6ee74bcd14a0f4f7bfcdad826928ad7918c)
6
+
7
+ # [v33.7.2](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.7.1...v33.7.2) (2021-07-15 14:37:59)
8
+
9
+ ## Global changes
10
+ ### Patches
11
+
12
+ * [[Hotfix(provisioner_docker)] Increase Futex timeout to cope with image building time](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/52a03adbfc176f49800793acb3ab28026eb56289)
13
+
14
+ ## Changes for provisioner_docker
15
+ ### Patches
16
+
17
+ * [[Hotfix(provisioner_docker)] Increase Futex timeout to cope with image building time](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/52a03adbfc176f49800793acb3ab28026eb56289)
18
+
19
+ # [v33.7.1](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.7.0...v33.7.1) (2021-07-09 17:17:18)
20
+
21
+ ## Global changes
22
+ ### Patches
23
+
24
+ * [[Bugfix(platform_handler_serverless_chef)] [#93] Make sure chef runs use colors in their output](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/14352425115cf46b92e4c747b2e34e3734314288)
25
+
26
+ ## Changes for platform_handler_serverless_chef
27
+ ### Patches
28
+
29
+ * [[Bugfix(platform_handler_serverless_chef)] [#93] Make sure chef runs use colors in their output](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/14352425115cf46b92e4c747b2e34e3734314288)
30
+
31
+ # [v33.7.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.6.0...v33.7.0) (2021-07-09 16:32:25)
32
+
33
+ ### Features
34
+
35
+ * [[Feature] [#91] Expose log_debug? method to the config DSL to adapt configuration in case we are in debug mode](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/87f6f51df2d20c7861f9ddd59a8d7f68c27cdd74)
36
+
1
37
  # [v33.6.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.5.1...v33.6.0) (2021-07-07 15:45:12)
2
38
 
3
39
  ## Global changes
@@ -34,6 +34,8 @@ module HybridPlatformsConductor
34
34
  end
35
35
  @mixin_initializers = []
36
36
 
37
+ expose :log_debug?
38
+
37
39
  # Directory of the definition of the platforms
38
40
  # String
39
41
  attr_reader :hybrid_platforms_dir
@@ -241,18 +241,25 @@ module HybridPlatformsConductor
241
241
  '--json-attributes', "nodes/#{node}.json"
242
242
  ]
243
243
  client_options << '--why-run' if use_why_run
244
+ # client_options.concat ['--log_level', 'debug'] if log_debug?
245
+ # Force setting of TERM variable and usage of unbuffer to get colored output from chef-client even if executed through a non-interactive SSH session.
246
+ client_env = {
247
+ 'SSL_CERT_DIR' => '/etc/ssl/certs',
248
+ 'TERM' => 'xterm-256color'
249
+ }
244
250
  if @nodes_handler.get_use_local_chef_of(node)
245
251
  # Just run the chef-client directly from the packaged repository
246
- sudo_prefix = @cmd_runner.root? ? '' : 'sudo '
252
+ sudo_prefix = @cmd_runner.root? ? '' : 'sudo -E '
247
253
  [
248
254
  {
249
255
  bash: [
250
256
  'set -e',
251
257
  "cd #{package_dir}"
252
258
  ] +
253
- gems_to_install.map { |(gem_name, gem_version)| "#{sudo_prefix}SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef gem install #{gem_name} --version \"#{gem_version}\"" } +
259
+ client_env.map { |var_name, value| "export #{var_name}=#{value}" } +
260
+ gems_to_install.map { |(gem_name, gem_version)| "#{sudo_prefix}/opt/chef-workstation/bin/chef gem install #{gem_name} --version \"#{gem_version}\"" } +
254
261
  [
255
- "#{sudo_prefix}SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef-client #{client_options.join(' ')}"
262
+ "#{sudo_prefix}/opt/chef-workstation/bin/chef-client #{client_options.join(' ')}"
256
263
  ]
257
264
  }
258
265
  ]
@@ -270,7 +277,7 @@ module HybridPlatformsConductor
270
277
  remote_bash: [
271
278
  'set -e',
272
279
  'set -o pipefail',
273
- "if [ -n \"$(command -v apt)\" ]; then #{sudo}apt update && #{sudo}apt install -y curl build-essential ; else #{sudo}yum groupinstall 'Development Tools' && #{sudo}yum install -y curl ; fi",
280
+ "if [ -n \"$(command -v apt)\" ]; then #{sudo}apt update && #{sudo}apt install -y curl build-essential expect ; else #{sudo}yum groupinstall 'Development Tools' && #{sudo}yum install -y curl expect ; fi",
274
281
  'mkdir -p ./hpc_deploy',
275
282
  'rm -rf ./hpc_deploy/tmp',
276
283
  'mkdir -p ./hpc_deploy/tmp',
@@ -281,16 +288,19 @@ module HybridPlatformsConductor
281
288
  },
282
289
  {
283
290
  scp: { package_dir => './hpc_deploy' },
284
- remote_bash: [
285
- 'set -e',
286
- "cd ./hpc_deploy/#{package_name}"
287
- ] +
288
- gems_to_install.map { |(gem_name, gem_version)| "#{sudo}SSL_CERT_DIR=/etc/ssl/certs /opt/chef/embedded/bin/gem install #{gem_name} --version \"#{gem_version}\"" } +
289
- [
290
- "#{sudo}SSL_CERT_DIR=/etc/ssl/certs /opt/chef/bin/chef-client #{client_options.join(' ')}",
291
- 'cd ..'
291
+ remote_bash: {
292
+ commands: [
293
+ 'set -e',
294
+ "cd ./hpc_deploy/#{package_name}"
292
295
  ] +
293
- (log_debug? ? [] : ["#{sudo}rm -rf ./hpc_deploy/#{package_name}"])
296
+ gems_to_install.map { |(gem_name, gem_version)| "#{sudo}/opt/chef/embedded/bin/gem install #{gem_name} --version \"#{gem_version}\"" } +
297
+ [
298
+ "#{sudo}unbuffer /opt/chef/bin/chef-client #{client_options.join(' ')}",
299
+ 'cd ..'
300
+ ] +
301
+ (log_debug? ? [] : ["#{sudo}rm -rf ./hpc_deploy/#{package_name}"]),
302
+ env: client_env
303
+ }
294
304
  }
295
305
  ]
296
306
  end
@@ -40,7 +40,7 @@ module HybridPlatformsConductor
40
40
  docker_image = nil
41
41
  image_futex_file = "#{Dir.tmpdir}/hpc_docker_image_futexes/#{image_tag}"
42
42
  FileUtils.mkdir_p File.dirname(image_futex_file)
43
- Futex.new(image_futex_file).open do
43
+ Futex.new(image_futex_file, timeout: 600).open do
44
44
  docker_image = ::Docker::Image.all.find { |search_image| !search_image.info['RepoTags'].nil? && search_image.info['RepoTags'].include?("#{image_tag}:latest") }
45
45
  unless docker_image
46
46
  log_debug "[ #{@node}/#{@environment} ] - Creating Docker image #{image_tag}..."
@@ -42,7 +42,7 @@ module HybridPlatformsConductor
42
42
  # Result::
43
43
  # * Integer: The timeout in seconds
44
44
  def default_timeout
45
- 60
45
+ 300
46
46
  end
47
47
 
48
48
  # Provision a running instance for the needed node and environment.
@@ -1,5 +1,5 @@
1
1
  module HybridPlatformsConductor
2
2
 
3
- VERSION = '33.6.0'
3
+ VERSION = '33.7.3'
4
4
 
5
5
  end
@@ -29,6 +29,17 @@ describe HybridPlatformsConductor::Config do
29
29
  end
30
30
  end
31
31
 
32
+ it 'can check if we are in debug mode' do
33
+ with_platforms(
34
+ <<~EO_CONFIG
35
+ os_image :image_1, '/path/to/image_1' if log_debug?
36
+ os_image :image_2, '/path/to/image_2'
37
+ EO_CONFIG
38
+ ) do
39
+ expect(test_config.known_os_images.sort).to eq %i[image_2].sort
40
+ end
41
+ end
42
+
32
43
  it 'returns the tests provisioner correctly' do
33
44
  with_platforms 'tests_provisioner :test_provisioner' do
34
45
  expect(test_config.tests_provisioner_id).to eq :test_provisioner
@@ -46,7 +46,7 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
46
46
  remote_bash: [
47
47
  'set -e',
48
48
  'set -o pipefail',
49
- "if [ -n \"$(command -v apt)\" ]; then #{sudo}apt update && #{sudo}apt install -y curl build-essential ; else #{sudo}yum groupinstall 'Development Tools' && #{sudo}yum install -y curl ; fi",
49
+ "if [ -n \"$(command -v apt)\" ]; then #{sudo}apt update && #{sudo}apt install -y curl build-essential expect ; else #{sudo}yum groupinstall 'Development Tools' && #{sudo}yum install -y curl expect ; fi",
50
50
  'mkdir -p ./hpc_deploy',
51
51
  'rm -rf ./hpc_deploy/tmp',
52
52
  'mkdir -p ./hpc_deploy/tmp',
@@ -57,16 +57,22 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
57
57
  },
58
58
  {
59
59
  scp: { "#{repository}/dist/#{env}/#{policy}" => './hpc_deploy' },
60
- remote_bash: [
61
- 'set -e',
62
- "cd ./hpc_deploy/#{policy}"
63
- ] +
64
- gems_install_cmds.map { |gem_install_cmd| "#{sudo}SSL_CERT_DIR=/etc/ssl/certs /opt/chef/embedded/bin/#{gem_install_cmd}" } +
65
- [
66
- "#{sudo}SSL_CERT_DIR=/etc/ssl/certs /opt/chef/bin/chef-client --local-mode --chef-license accept --json-attributes nodes/#{node}.json#{check_mode ? ' --why-run' : ''}",
67
- 'cd ..',
68
- "#{sudo}rm -rf ./hpc_deploy/#{policy}"
69
- ]
60
+ remote_bash: {
61
+ commands: [
62
+ 'set -e',
63
+ "cd ./hpc_deploy/#{policy}"
64
+ ] +
65
+ gems_install_cmds.map { |gem_install_cmd| "#{sudo}/opt/chef/embedded/bin/#{gem_install_cmd}" } +
66
+ [
67
+ "#{sudo}unbuffer /opt/chef/bin/chef-client --local-mode --chef-license accept --json-attributes nodes/#{node}.json#{check_mode ? ' --why-run' : ''}",
68
+ 'cd ..',
69
+ "#{sudo}rm -rf ./hpc_deploy/#{policy}"
70
+ ],
71
+ env: {
72
+ 'SSL_CERT_DIR' => '/etc/ssl/certs',
73
+ 'TERM' => 'xterm-256color'
74
+ }
75
+ }
70
76
  }
71
77
  ]
72
78
  end
@@ -323,7 +329,9 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
323
329
  bash: [
324
330
  'set -e',
325
331
  "cd #{repository}/dist/prod/test_policy_1",
326
- 'sudo SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef-client --local-mode --chef-license accept --json-attributes nodes/local.json'
332
+ 'export SSL_CERT_DIR=/etc/ssl/certs',
333
+ 'export TERM=xterm-256color',
334
+ 'sudo -E /opt/chef-workstation/bin/chef-client --local-mode --chef-license accept --json-attributes nodes/local.json'
327
335
  ]
328
336
  }
329
337
  ]
@@ -352,10 +360,12 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
352
360
  bash: [
353
361
  'set -e',
354
362
  "cd #{repository}/dist/prod/test_policy_1",
355
- 'sudo SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef gem install my_gem_1 --version "0.0.1"',
356
- 'sudo SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef gem install my_gem_2 --version "0.0.2"',
357
- 'sudo SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef gem install my_gem_3 --version "~> 1.3"',
358
- 'sudo SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef-client --local-mode --chef-license accept --json-attributes nodes/local.json'
363
+ 'export SSL_CERT_DIR=/etc/ssl/certs',
364
+ 'export TERM=xterm-256color',
365
+ 'sudo -E /opt/chef-workstation/bin/chef gem install my_gem_1 --version "0.0.1"',
366
+ 'sudo -E /opt/chef-workstation/bin/chef gem install my_gem_2 --version "0.0.2"',
367
+ 'sudo -E /opt/chef-workstation/bin/chef gem install my_gem_3 --version "~> 1.3"',
368
+ 'sudo -E /opt/chef-workstation/bin/chef-client --local-mode --chef-license accept --json-attributes nodes/local.json'
359
369
  ]
360
370
  }
361
371
  ]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hybrid_platforms_conductor
3
3
  version: !ruby/object:Gem::Version
4
- version: 33.6.0
4
+ version: 33.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-07 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: range_operators