test-kitchen 3.3.0 → 3.3.1
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/lib/kitchen/ssh.rb +10 -3
- data/lib/kitchen/transport/ssh.rb +17 -6
- data/lib/kitchen/transport/winrm.rb +11 -4
- data/lib/kitchen/util.rb +13 -0
- data/lib/kitchen/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cbe0ba6a501464b8f253beca9d017b7d09a90fa5f4407e775d5fe31b81f610da
|
|
4
|
+
data.tar.gz: c7e0c062a903e1be1fd5425f692fecdd28d29841a5bee156b89a0d7149a25b10
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: abb1d27365dcdbfe5eaccffe717d7391f63a8784a75ee79bb44b8a5ba23d72d17bd7bd01a3d375454111ddcd0425874f0fa7b14dcdd2cf461ccdf978426f99c3
|
|
7
|
+
data.tar.gz: 6bd22f60e9f13a0b74f1c4c4598be74071640f5593f7039f030aa5c95de1a595e5a6401eb092eee2f165715d28202bb0b43324e16b5393a96dc256b993d05109
|
data/lib/kitchen/ssh.rb
CHANGED
|
@@ -23,6 +23,7 @@ require "socket" unless defined?(Socket)
|
|
|
23
23
|
|
|
24
24
|
require_relative "errors"
|
|
25
25
|
require_relative "login_command"
|
|
26
|
+
require_relative "util"
|
|
26
27
|
|
|
27
28
|
module Kitchen
|
|
28
29
|
# Wrapped exception for any internally raised SSH-related errors.
|
|
@@ -75,7 +76,9 @@ module Kitchen
|
|
|
75
76
|
# @param cmd [String] command string to execute
|
|
76
77
|
# @raise [SSHFailed] if the command does not exit with a 0 code
|
|
77
78
|
def exec(cmd)
|
|
78
|
-
|
|
79
|
+
string_to_mask = "[SSH] #{self} (#{cmd})"
|
|
80
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
81
|
+
logger.debug(masked_string)
|
|
79
82
|
exit_code = exec_with_exit(cmd)
|
|
80
83
|
|
|
81
84
|
if exit_code != 0
|
|
@@ -137,7 +140,9 @@ module Kitchen
|
|
|
137
140
|
def shutdown
|
|
138
141
|
return if @session.nil?
|
|
139
142
|
|
|
140
|
-
|
|
143
|
+
string_to_mask = "[SSH] closing connection to #{self}"
|
|
144
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
145
|
+
logger.debug(masked_string)
|
|
141
146
|
session.shutdown!
|
|
142
147
|
ensure
|
|
143
148
|
@session = nil
|
|
@@ -212,7 +217,9 @@ module Kitchen
|
|
|
212
217
|
retries = options[:ssh_retries] || 3
|
|
213
218
|
|
|
214
219
|
begin
|
|
215
|
-
|
|
220
|
+
string_to_mask = "[SSH] opening connection to #{self}"
|
|
221
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
222
|
+
logger.debug(masked_string)
|
|
216
223
|
Net::SSH.start(hostname, username, options)
|
|
217
224
|
rescue *rescue_exceptions => e
|
|
218
225
|
retries -= 1
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
|
|
18
18
|
require_relative "../../kitchen"
|
|
19
|
+
require_relative "../util"
|
|
19
20
|
|
|
20
21
|
require "fileutils" unless defined?(FileUtils)
|
|
21
22
|
require "net/ssh" unless defined?(Net::SSH)
|
|
@@ -102,7 +103,9 @@ module Kitchen
|
|
|
102
103
|
# (see Base#cleanup!)
|
|
103
104
|
def cleanup!
|
|
104
105
|
if @connection
|
|
105
|
-
|
|
106
|
+
string_to_mask = "[SSH] shutting previous connection #{@connection}"
|
|
107
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
108
|
+
logger.debug(masked_string)
|
|
106
109
|
@connection.close
|
|
107
110
|
@connection = @connection_options = nil
|
|
108
111
|
end
|
|
@@ -125,7 +128,9 @@ module Kitchen
|
|
|
125
128
|
def close
|
|
126
129
|
return if @session.nil?
|
|
127
130
|
|
|
128
|
-
|
|
131
|
+
string_to_mask = "[SSH] closing connection to #{self}"
|
|
132
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
133
|
+
logger.debug(masked_string)
|
|
129
134
|
session.close
|
|
130
135
|
ensure
|
|
131
136
|
@session = nil
|
|
@@ -135,7 +140,9 @@ module Kitchen
|
|
|
135
140
|
def execute(command)
|
|
136
141
|
return if command.nil?
|
|
137
142
|
|
|
138
|
-
|
|
143
|
+
string_to_mask = "[SSH] #{self} (#{command})"
|
|
144
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
145
|
+
logger.debug(masked_string)
|
|
139
146
|
exit_code = execute_with_exit_code(command)
|
|
140
147
|
|
|
141
148
|
if exit_code != 0
|
|
@@ -352,7 +359,9 @@ module Kitchen
|
|
|
352
359
|
def retry_connection(opts)
|
|
353
360
|
log_msg = "[SSH] opening connection to #{self}"
|
|
354
361
|
log_msg += " via #{ssh_gateway_username}@#{ssh_gateway}:#{ssh_gateway_port}" if ssh_gateway
|
|
355
|
-
|
|
362
|
+
masked_string = Util.mask_values(log_msg, %w{password ssh_http_proxy_password})
|
|
363
|
+
|
|
364
|
+
logger.debug(masked_string)
|
|
356
365
|
yield
|
|
357
366
|
rescue *RESCUE_EXCEPTIONS_ON_ESTABLISH => e
|
|
358
367
|
if (opts[:retries] -= 1) > 0
|
|
@@ -541,7 +550,7 @@ module Kitchen
|
|
|
541
550
|
# Creates a new SSH Connection instance and save it for potential future
|
|
542
551
|
# reuse.
|
|
543
552
|
#
|
|
544
|
-
# @param options [Hash]
|
|
553
|
+
# @param options [Hash] connection options
|
|
545
554
|
# @return [Ssh::Connection] an SSH Connection instance
|
|
546
555
|
# @api private
|
|
547
556
|
def create_new_connection(options, &block)
|
|
@@ -555,7 +564,9 @@ module Kitchen
|
|
|
555
564
|
# @return [Ssh::Connection] an SSH Connection instance
|
|
556
565
|
# @api private
|
|
557
566
|
def reuse_connection
|
|
558
|
-
|
|
567
|
+
string_to_mask = "[SSH] reusing existing connection #{@connection}"
|
|
568
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
569
|
+
logger.debug(masked_string)
|
|
559
570
|
yield @connection if block_given?
|
|
560
571
|
@connection
|
|
561
572
|
end
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
require "rbconfig" unless defined?(RbConfig)
|
|
21
21
|
require "uri" unless defined?(URI)
|
|
22
22
|
require_relative "../../kitchen"
|
|
23
|
+
require_relative "../util"
|
|
23
24
|
require "winrm" unless defined?(WinRM::Connection)
|
|
24
25
|
require "winrm/exceptions" unless defined?(WinRM::WinRMHTTPTransportError)
|
|
25
26
|
|
|
@@ -104,7 +105,9 @@ module Kitchen
|
|
|
104
105
|
def execute(command)
|
|
105
106
|
return if command.nil?
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
string_to_mask = "[WinRM] #{self} (#{command})"
|
|
109
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
110
|
+
logger.debug(masked_string)
|
|
108
111
|
|
|
109
112
|
exit_code, stderr = execute_with_exit_code(command)
|
|
110
113
|
|
|
@@ -494,12 +497,14 @@ module Kitchen
|
|
|
494
497
|
# Creates a new WinRM Connection instance and save it for potential
|
|
495
498
|
# future reuse.
|
|
496
499
|
#
|
|
497
|
-
# @param options [Hash]
|
|
500
|
+
# @param options [Hash] connection options
|
|
498
501
|
# @return [Ssh::Connection] a WinRM Connection instance
|
|
499
502
|
# @api private
|
|
500
503
|
def create_new_connection(options, &block)
|
|
501
504
|
if @connection
|
|
502
|
-
|
|
505
|
+
string_to_mask = "[WinRM] shutting previous connection #{@connection}"
|
|
506
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
507
|
+
logger.debug(masked_string)
|
|
503
508
|
@connection.close
|
|
504
509
|
end
|
|
505
510
|
|
|
@@ -559,7 +564,9 @@ module Kitchen
|
|
|
559
564
|
# @return [Winrm::Connection] a WinRM Connection instance
|
|
560
565
|
# @api private
|
|
561
566
|
def reuse_connection
|
|
562
|
-
|
|
567
|
+
string_to_mask = "[WinRM] reusing existing connection #{@connection}"
|
|
568
|
+
masked_string = Util.mask_values(string_to_mask, %w{password ssh_http_proxy_password})
|
|
569
|
+
logger.debug(masked_string)
|
|
563
570
|
yield @connection if block_given?
|
|
564
571
|
@connection
|
|
565
572
|
end
|
data/lib/kitchen/util.rb
CHANGED
|
@@ -88,6 +88,19 @@ module Kitchen
|
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
+
# Returns a string with masked values for specified parameters.
|
|
92
|
+
#
|
|
93
|
+
# @param string_to_mask [String] the object whose string representation is parsed
|
|
94
|
+
# @param [Array] the list of keys whose values should be masked
|
|
95
|
+
# @return [String] the string representation of passed object with masked values
|
|
96
|
+
def self.mask_values(string_to_mask, keys)
|
|
97
|
+
masked_string = string_to_mask
|
|
98
|
+
keys.each do |key|
|
|
99
|
+
masked_string.gsub!(/:#{key}=>"([^"]*)"/, %{:#{key}=>"******"})
|
|
100
|
+
end
|
|
101
|
+
masked_string
|
|
102
|
+
end
|
|
103
|
+
|
|
91
104
|
# Returns a formatted string representing a duration in seconds.
|
|
92
105
|
#
|
|
93
106
|
# @param total [Integer] the total number of seconds
|
data/lib/kitchen/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: test-kitchen
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.
|
|
4
|
+
version: 3.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fletcher Nichol
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-07-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: mixlib-shellout
|
|
@@ -520,7 +520,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
520
520
|
- !ruby/object:Gem::Version
|
|
521
521
|
version: '0'
|
|
522
522
|
requirements: []
|
|
523
|
-
rubygems_version: 3.3.
|
|
523
|
+
rubygems_version: 3.3.11
|
|
524
524
|
signing_key:
|
|
525
525
|
specification_version: 4
|
|
526
526
|
summary: Test Kitchen is an integration tool for developing and testing infrastructure
|