hybrid_platforms_conductor 33.2.3 → 33.2.4

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: a23231b519652cb5092cf2a20a39086e40b53d59eb55e8465ff309c34d593fa5
4
- data.tar.gz: 91a0ccce705223534372189fc43d2a554c06afc9196977ded50e70955daad3a7
3
+ metadata.gz: bd578efdc520f51dc9752ace39626e73dbdda736fd4376ee5e9ce55ed34a0a4d
4
+ data.tar.gz: c44c935905b7a62a4a0f3ea037b0f1e4ed8fa07bdad4802e38143fe1a448bfd1
5
5
  SHA512:
6
- metadata.gz: 6e22d598b75dff5541133543c328538c2135a7e0f6d6d7b00c47104971e0d621a1f5bd9cba929f5aca0e1e4de61c1c086d43f94dc70506dd2808be39548488a8
7
- data.tar.gz: 9c5add7617649bcc8e23f059b9d9c342342087d47dc8bdd0bacb8cb5a40bcbaeaa740aa32882e8d5ce296e51a7037625ac2a8520227357f3d66d9439a35fa1c8
6
+ metadata.gz: f0070cf6736acaa5b9a1e36279bab3b9f6530c26ea341feec4fb4775d022e1c67e2694df832a3ab340b765e10bf510969febe82e4b34fa564e9aab82eea71314
7
+ data.tar.gz: d5cc0229b32b7f75d1c7604e304e6986b0b7ab121676dfd62121d954c48e3ba93f827dabfbb8320c9f945339c334263ff9404c8c60e1be5a0b03e4b390cc044f
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # [v33.2.4](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.2.3...v33.2.4) (2021-06-23 15:14:20)
2
+
3
+ ## Global changes
4
+ ### Patches
5
+
6
+ * [[Hotfix(platform_handler_serverless_chef)] Forward environment in sudo commands](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/fd3b58875665c29dd071b5af2055eab0c45c0974)
7
+ * [[Hotfix] Fixed unbundled environment not cleaned + Moved deployer config DSL in deployer.rb](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/2bce6dbc31d98b27f196ed646eb9aa669b0f9a86)
8
+
9
+ ## Changes for platform_handler_serverless_chef
10
+ ### Patches
11
+
12
+ * [[Hotfix(platform_handler_serverless_chef)] Forward environment in sudo commands](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/fd3b58875665c29dd071b5af2055eab0c45c0974)
13
+
1
14
  # [v33.2.3](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.2.2...v33.2.3) (2021-06-23 13:45:56)
2
15
 
3
16
  ## Global changes
@@ -47,12 +47,6 @@ module HybridPlatformsConductor
47
47
  # Array<Hash,Symbol,Object>
48
48
  attr_reader :expected_failures
49
49
 
50
- # List of retriable errors. Each info has the following properties:
51
- # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by those errors
52
- # * *errors_on_stdout* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stdout
53
- # * *errors_on_stderr* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stderr
54
- attr_reader :retriable_errors
55
-
56
50
  # List of deployment schedules. Each info has the following properties:
57
51
  # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by this rule
58
52
  # * *schedule* (IceCube::Schedule): The deployment schedule
@@ -81,11 +75,6 @@ module HybridPlatformsConductor
81
75
  # * *reason* (String): Reason for this expected failure
82
76
  # Array<Hash,Symbol,Object>
83
77
  @expected_failures = []
84
- # List of retriable errors. Each info has the following properties:
85
- # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by those errors
86
- # * *errors_on_stdout* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stdout
87
- # * *errors_on_stderr* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stderr
88
- @retriable_errors = []
89
78
  # List of deployment schedules. Each info has the following properties:
90
79
  # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by this rule
91
80
  # * *schedule* (IceCube::Schedule): The deployment schedule
@@ -162,30 +151,6 @@ module HybridPlatformsConductor
162
151
  end
163
152
  expose :expect_tests_to_fail
164
153
 
165
- # Mark some errors on stdout to be retriable during a deploy
166
- #
167
- # Parameters::
168
- # * *errors* (String, Regexp or Array<String or Regexp>): Single (or list of) errors matching pattern (either as exact string match or using a regexp).
169
- def retry_deploy_for_errors_on_stdout(errors)
170
- @retriable_errors << {
171
- errors_on_stdout: errors.is_a?(Array) ? errors : [errors],
172
- nodes_selectors_stack: current_nodes_selectors_stack
173
- }
174
- end
175
- expose :retry_deploy_for_errors_on_stdout
176
-
177
- # Mark some errors on stderr to be retriable during a deploy
178
- #
179
- # Parameters::
180
- # * *errors* (String, Regexp or Array<String or Regexp>): Single (or list of) errors matching pattern (either as exact string match or using a regexp).
181
- def retry_deploy_for_errors_on_stderr(errors)
182
- @retriable_errors << {
183
- errors_on_stderr: errors.is_a?(Array) ? errors : [errors],
184
- nodes_selectors_stack: current_nodes_selectors_stack
185
- }
186
- end
187
- expose :retry_deploy_for_errors_on_stderr
188
-
189
154
  # Set a deployment schedule
190
155
  #
191
156
  # Parameters::
@@ -11,10 +11,27 @@ module Bundler
11
11
  # @return [Hash] Environment with all bundler-related variables removed
12
12
  def current_unbundled_env
13
13
  env = ENV.clone.to_hash
14
+ %w[
15
+ PATH
16
+ RUBYLIB
17
+ RUBYOPT
18
+ ].each do |env_name|
19
+ if original_env.key?(env_name)
20
+ env[env_name] = original_env[env_name]
21
+ else
22
+ env.delete(env_name)
23
+ end
24
+ end
14
25
 
15
26
  env['MANPATH'] = env['BUNDLER_ORIG_MANPATH'] if env.key?('BUNDLER_ORIG_MANPATH')
16
27
 
17
- env.delete_if { |k, _| k[0, 7] == 'BUNDLE_' }
28
+ env.delete_if do |k, _|
29
+ %w[
30
+ GEM_
31
+ BUNDLE_
32
+ BUNDLER_
33
+ ].any? { |prefix| k.start_with?(prefix) }
34
+ end
18
35
 
19
36
  if env.key?('RUBYOPT')
20
37
  rubyopt = env['RUBYOPT'].split
@@ -18,6 +18,12 @@ module HybridPlatformsConductor
18
18
  # Extend the Config DSL
19
19
  module ConfigDSLExtension
20
20
 
21
+ # List of retriable errors. Each info has the following properties:
22
+ # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by those errors
23
+ # * *errors_on_stdout* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stdout
24
+ # * *errors_on_stderr* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stderr
25
+ attr_reader :retriable_errors
26
+
21
27
  # List of log plugins. Each info has the following properties:
22
28
  # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by this rule.
23
29
  # * *log_plugins* (Array<Symbol>): List of log plugins to be used to store deployment logs.
@@ -36,6 +42,11 @@ module HybridPlatformsConductor
36
42
  # Mixin initializer
37
43
  def init_deployer_config
38
44
  @packaging_timeout_secs = 60
45
+ # List of retriable errors. Each info has the following properties:
46
+ # * *nodes_selectors_stack* (Array<Object>): Stack of nodes selectors impacted by those errors
47
+ # * *errors_on_stdout* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stdout
48
+ # * *errors_on_stderr* (Array<String or Regexp>): List of errors match (as exact string match or using a regexp) to check against stderr
49
+ @retriable_errors = []
39
50
  @deployment_logs = []
40
51
  @secrets_readers = []
41
52
  end
@@ -48,6 +59,28 @@ module HybridPlatformsConductor
48
59
  @packaging_timeout_secs = packaging_timeout_secs
49
60
  end
50
61
 
62
+ # Mark some errors on stdout to be retriable during a deploy
63
+ #
64
+ # Parameters::
65
+ # * *errors* (String, Regexp or Array<String or Regexp>): Single (or list of) errors matching pattern (either as exact string match or using a regexp).
66
+ def retry_deploy_for_errors_on_stdout(errors)
67
+ @retriable_errors << {
68
+ errors_on_stdout: errors.is_a?(Array) ? errors : [errors],
69
+ nodes_selectors_stack: current_nodes_selectors_stack
70
+ }
71
+ end
72
+
73
+ # Mark some errors on stderr to be retriable during a deploy
74
+ #
75
+ # Parameters::
76
+ # * *errors* (String, Regexp or Array<String or Regexp>): Single (or list of) errors matching pattern (either as exact string match or using a regexp).
77
+ def retry_deploy_for_errors_on_stderr(errors)
78
+ @retriable_errors << {
79
+ errors_on_stderr: errors.is_a?(Array) ? errors : [errors],
80
+ nodes_selectors_stack: current_nodes_selectors_stack
81
+ }
82
+ end
83
+
51
84
  # Set the deployment log plugins to be used
52
85
  #
53
86
  # Parameters::
@@ -263,7 +263,7 @@ module HybridPlatformsConductor
263
263
  raise "Missing file #{chef_versions_file} specifying the Chef Infra Client version to be deployed" unless File.exist?(chef_versions_file)
264
264
 
265
265
  required_chef_client_version = YAML.load_file(chef_versions_file)['client']
266
- sudo = (@actions_executor.connector(:ssh).ssh_user == 'root' ? '' : "#{@nodes_handler.sudo_on(node)} ")
266
+ sudo = (@actions_executor.connector(:ssh).ssh_user == 'root' ? '' : "#{@nodes_handler.sudo_on(node)} -E ")
267
267
  [
268
268
  {
269
269
  # Install dependencies
@@ -1,5 +1,5 @@
1
1
  module HybridPlatformsConductor
2
2
 
3
- VERSION = '33.2.3'
3
+ VERSION = '33.2.4'
4
4
 
5
5
  end
@@ -47,7 +47,13 @@ describe HybridPlatformsConductor::CmdRunner do
47
47
 
48
48
  it 'runs a command in an un-bundled environment' do
49
49
  with_repository do
50
- expect(test_cmd_runner.run_cmd('echo "${BUNDLE_GEMFILE}"')).to eq [0, "\n", '']
50
+ %w[
51
+ BUNDLE_GEMFILE
52
+ GEM_HOME
53
+ RUBYOPT
54
+ ].each do |var_to_check|
55
+ expect(test_cmd_runner.run_cmd("echo \"${#{var_to_check}}\"")).to eq [0, "\n", '']
56
+ end
51
57
  end
52
58
  end
53
59
 
@@ -155,40 +155,6 @@ describe HybridPlatformsConductor::Config do
155
155
  end
156
156
  end
157
157
 
158
- it 'returns the retriable errors correctly' do
159
- with_platforms '
160
- retry_deploy_for_errors_on_stdout \'Retry stdout global\'
161
- retry_deploy_for_errors_on_stderr [
162
- \'Retry stderr global\',
163
- /.+Retry stderr regexp global/
164
- ]
165
- for_nodes(%w[node1 node2 node3]) do
166
- retry_deploy_for_errors_on_stdout \'Retry stdout nodes\'
167
- retry_deploy_for_errors_on_stderr \'Retry stderr nodes\'
168
- end
169
- ' do
170
- sort_proc = proc { |retriable_error_info| ((retriable_error_info[:errors_on_stdout] || []) + (retriable_error_info[:errors_on_stderr] || [])).first.to_s }
171
- expect(test_config.retriable_errors.sort_by(&sort_proc)).to eq [
172
- {
173
- nodes_selectors_stack: [],
174
- errors_on_stdout: ['Retry stdout global']
175
- },
176
- {
177
- nodes_selectors_stack: [],
178
- errors_on_stderr: ['Retry stderr global', /.+Retry stderr regexp global/]
179
- },
180
- {
181
- nodes_selectors_stack: [%w[node1 node2 node3]],
182
- errors_on_stdout: ['Retry stdout nodes']
183
- },
184
- {
185
- nodes_selectors_stack: [%w[node1 node2 node3]],
186
- errors_on_stderr: ['Retry stderr nodes']
187
- }
188
- ].sort_by(&sort_proc)
189
- end
190
- end
191
-
192
158
  it 'returns the deployment schedules correctly' do
193
159
  with_platforms '
194
160
  deployment_schedule(IceCube::Schedule.new(Time.parse(\'2020-05-01 11:22:33 UTC\')))
@@ -8,6 +8,40 @@ describe HybridPlatformsConductor::Deployer do
8
8
  end
9
9
  end
10
10
 
11
+ it 'returns the retriable errors correctly' do
12
+ with_platforms '
13
+ retry_deploy_for_errors_on_stdout \'Retry stdout global\'
14
+ retry_deploy_for_errors_on_stderr [
15
+ \'Retry stderr global\',
16
+ /.+Retry stderr regexp global/
17
+ ]
18
+ for_nodes(%w[node1 node2 node3]) do
19
+ retry_deploy_for_errors_on_stdout \'Retry stdout nodes\'
20
+ retry_deploy_for_errors_on_stderr \'Retry stderr nodes\'
21
+ end
22
+ ' do
23
+ sort_proc = proc { |retriable_error_info| ((retriable_error_info[:errors_on_stdout] || []) + (retriable_error_info[:errors_on_stderr] || [])).first.to_s }
24
+ expect(test_config.retriable_errors.sort_by(&sort_proc)).to eq [
25
+ {
26
+ nodes_selectors_stack: [],
27
+ errors_on_stdout: ['Retry stdout global']
28
+ },
29
+ {
30
+ nodes_selectors_stack: [],
31
+ errors_on_stderr: ['Retry stderr global', /.+Retry stderr regexp global/]
32
+ },
33
+ {
34
+ nodes_selectors_stack: [%w[node1 node2 node3]],
35
+ errors_on_stdout: ['Retry stdout nodes']
36
+ },
37
+ {
38
+ nodes_selectors_stack: [%w[node1 node2 node3]],
39
+ errors_on_stderr: ['Retry stderr nodes']
40
+ }
41
+ ].sort_by(&sort_proc)
42
+ end
43
+ end
44
+
11
45
  it 'declares log plugins to be used' do
12
46
  with_platforms(
13
47
  <<~EO_CONFIG
@@ -35,7 +35,7 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
35
35
  def expected_actions_to_deploy_chef(
36
36
  repository,
37
37
  check_mode: false,
38
- sudo: 'sudo -u root ',
38
+ sudo: 'sudo -u root -E ',
39
39
  env: 'prod',
40
40
  policy: 'test_policy',
41
41
  node: 'node',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hybrid_platforms_conductor
3
3
  version: !ruby/object:Gem::Version
4
- version: 33.2.3
4
+ version: 33.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan