knife 17.3.13 → 17.3.48
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/chef/knife/core/bootstrap_context.rb +4 -4
- data/lib/chef/knife/core/windows_bootstrap_context.rb +2 -2
- data/lib/chef/knife/ssh.rb +29 -17
- data/lib/chef/knife/supermarket_unshare.rb +2 -1
- data/lib/chef/knife/version.rb +1 -1
- data/spec/integration/cookbook_download_spec.rb +1 -1
- data/spec/unit/knife/core/bootstrap_context_spec.rb +6 -6
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +4 -4
- data/spec/unit/knife/ssh_spec.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: 31ea76674fe3c36ffd7530564334f6984f1b95cff36f966eb4aa31a51b8fc4cc
|
4
|
+
data.tar.gz: 88a1f4d1335f549e881c9142171f0ee831bb8a6848de85808d136da9d083cc53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18745c29c6a2c249d6ed67eef2d961f3175e4f2f124ba368caed230f2df4c037e58ba14666ca1bae726addc10fd14ae5658be654cc2cb506afc9e4cafe5afb9b
|
7
|
+
data.tar.gz: 63e4f77b325ba95b279d698885a8b92814938ab2c196b5da79ed36a570dc4f0a8ac26c8c56291686f02530cd8e51fb82f2d58f3cd4da13649c7afe271421728a
|
@@ -171,12 +171,12 @@ class Chef
|
|
171
171
|
client_rb << "fips true\n"
|
172
172
|
end
|
173
173
|
|
174
|
-
unless chef_config[:
|
175
|
-
client_rb << "file_cache_path \"#{chef_config[:
|
174
|
+
unless chef_config[:unix_bootstrap_file_cache_path].nil?
|
175
|
+
client_rb << "file_cache_path \"#{chef_config[:unix_bootstrap_file_cache_path]}\"\n"
|
176
176
|
end
|
177
177
|
|
178
|
-
unless chef_config[:
|
179
|
-
client_rb << "file_backup_path \"#{chef_config[:
|
178
|
+
unless chef_config[:unix_bootstrap_file_backup_path].nil?
|
179
|
+
client_rb << "file_backup_path \"#{chef_config[:unix_bootstrap_file_backup_path]}\"\n"
|
180
180
|
end
|
181
181
|
|
182
182
|
client_rb
|
@@ -71,8 +71,8 @@ class Chef
|
|
71
71
|
client_rb = <<~CONFIG
|
72
72
|
chef_server_url "#{chef_config[:chef_server_url]}"
|
73
73
|
validation_client_name "#{chef_config[:validation_client_name]}"
|
74
|
-
file_cache_path "#{ChefConfig::PathHelper.escapepath(
|
75
|
-
file_backup_path "#{ChefConfig::PathHelper.escapepath(
|
74
|
+
file_cache_path "#{ChefConfig::PathHelper.escapepath(chef_config[:windows_bootstrap_file_cache_path] || "")}"
|
75
|
+
file_backup_path "#{ChefConfig::PathHelper.escapepath(chef_config[:windows_bootstrap_file_backup_path] || "")}"
|
76
76
|
cache_options ({:path => "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.etc_chef_dir(windows: true))}\\\\cache\\\\checksums", :skip_expires => true})
|
77
77
|
CONFIG
|
78
78
|
|
data/lib/chef/knife/ssh.rb
CHANGED
@@ -134,6 +134,18 @@ class Chef
|
|
134
134
|
boolean: true,
|
135
135
|
default: false
|
136
136
|
|
137
|
+
option :pty,
|
138
|
+
long: "--[no-]pty",
|
139
|
+
description: "Request a PTY, enabled by default.",
|
140
|
+
boolean: true,
|
141
|
+
default: true
|
142
|
+
|
143
|
+
option :require_pty,
|
144
|
+
long: "--[no-]require-pty",
|
145
|
+
description: "Raise exception if a PTY cannot be acquired, disabled by default.",
|
146
|
+
boolean: true,
|
147
|
+
default: false
|
148
|
+
|
137
149
|
def session
|
138
150
|
ssh_error_handler = Proc.new do |server|
|
139
151
|
if config[:on_error]
|
@@ -353,26 +365,26 @@ class Chef
|
|
353
365
|
ui.msg(str)
|
354
366
|
end
|
355
367
|
|
356
|
-
|
368
|
+
# @param command [String] the command to run
|
369
|
+
# @param session_list [???] list of sessions, one per node
|
370
|
+
#
|
371
|
+
def ssh_command(command, session_list = session)
|
372
|
+
stderr = ""
|
357
373
|
exit_status = 0
|
358
|
-
subsession ||= session
|
359
374
|
command = fixup_sudo(command)
|
360
375
|
command.force_encoding("binary") if command.respond_to?(:force_encoding)
|
361
|
-
|
362
|
-
open_session(subsession, command)
|
363
|
-
rescue => e
|
364
|
-
open_session(subsession, command, true)
|
365
|
-
end
|
366
|
-
end
|
367
|
-
|
368
|
-
def open_session(subsession, command, pty = false)
|
369
|
-
stderr = ""
|
370
|
-
exit_status = 0
|
371
|
-
subsession.open_channel do |chan|
|
376
|
+
session_list.open_channel do |chan|
|
372
377
|
if config[:on_error] && exit_status != 0
|
373
378
|
chan.close
|
374
379
|
else
|
375
|
-
|
380
|
+
if config[:pty]
|
381
|
+
chan.request_pty do |ch, success|
|
382
|
+
unless success
|
383
|
+
ui.warn("Failed to obtain a PTY from #{ch.connection.host}")
|
384
|
+
raise ArgumentError, "Request for PTY failed" if config[:require_pty]
|
385
|
+
end
|
386
|
+
end
|
387
|
+
end
|
376
388
|
chan.exec command do |ch, success|
|
377
389
|
raise ArgumentError, "Cannot execute #{command}" unless success
|
378
390
|
|
@@ -383,13 +395,11 @@ class Chef
|
|
383
395
|
ichannel.send_data("#{get_password}\n")
|
384
396
|
end
|
385
397
|
end
|
386
|
-
|
387
398
|
ch.on_extended_data do |_, _type, data|
|
388
|
-
raise ArgumentError if data.eql?("sudo: no tty present and no askpass program specified\n")
|
399
|
+
raise ArgumentError, "No PTY present. If a PTY is required use --require-pty" if data.eql?("sudo: no tty present and no askpass program specified\n")
|
389
400
|
|
390
401
|
stderr += data
|
391
402
|
end
|
392
|
-
|
393
403
|
ch.on_request "exit-status" do |ichannel, data|
|
394
404
|
exit_status = [exit_status, data.read_long].max
|
395
405
|
end
|
@@ -398,6 +408,8 @@ class Chef
|
|
398
408
|
end
|
399
409
|
session.loop
|
400
410
|
exit_status
|
411
|
+
ensure
|
412
|
+
session_list.close
|
401
413
|
end
|
402
414
|
|
403
415
|
def get_password
|
@@ -50,7 +50,8 @@ class Chef
|
|
50
50
|
rescue Net::HTTPClientException => e
|
51
51
|
raise e unless /Forbidden/.match?(e.message)
|
52
52
|
|
53
|
-
ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it."
|
53
|
+
ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it & #{config[:supermarket_site]} must allow maintainers to unshare cookbooks."
|
54
|
+
ui.warn "The default supermarket #{default_config[:supermarket_site]} does not allow maintainers to unshare cookbooks."
|
54
55
|
exit 1
|
55
56
|
end
|
56
57
|
|
data/lib/chef/knife/version.rb
CHANGED
@@ -80,16 +80,16 @@ describe Chef::Knife::Core::BootstrapContext do
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
describe "when
|
84
|
-
let(:chef_config) { {
|
85
|
-
it "sets
|
83
|
+
describe "when unix_bootstrap_file_cache_path is set" do
|
84
|
+
let(:chef_config) { { unix_bootstrap_file_cache_path: "/home/opscode/cache" } }
|
85
|
+
it "sets unix_bootstrap_file_cache_path in the generated config file" do
|
86
86
|
expect(bootstrap_context.config_content).to include("file_cache_path \"/home/opscode/cache\"")
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
describe "when
|
91
|
-
let(:chef_config) { {
|
92
|
-
it "sets
|
90
|
+
describe "when unix_bootstrap_file_backup_path is set" do
|
91
|
+
let(:chef_config) { { unix_bootstrap_file_backup_path: "/home/opscode/backup" } }
|
92
|
+
it "sets unix_bootstrap_file_backup_path in the generated config file" do
|
93
93
|
expect(bootstrap_context.config_content).to include("file_backup_path \"/home/opscode/backup\"")
|
94
94
|
end
|
95
95
|
end
|
@@ -154,8 +154,8 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
|
|
154
154
|
config_log_location: STDOUT,
|
155
155
|
chef_server_url: "http://chef.example.com:4444",
|
156
156
|
validation_client_name: "chef-validator-testing",
|
157
|
-
|
158
|
-
|
157
|
+
windows_bootstrap_file_cache_path: "c:/chef/cache",
|
158
|
+
windows_bootstrap_file_backup_path: "c:/chef/backup",
|
159
159
|
cache_options: ({ path: "c:/chef/cache/checksums", skip_expires: true })
|
160
160
|
)
|
161
161
|
)
|
@@ -165,8 +165,8 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
|
|
165
165
|
expected = <<~EXPECTED
|
166
166
|
echo.chef_server_url "http://chef.example.com:4444"
|
167
167
|
echo.validation_client_name "chef-validator-testing"
|
168
|
-
echo.file_cache_path "
|
169
|
-
echo.file_backup_path "
|
168
|
+
echo.file_cache_path "c:/chef/cache"
|
169
|
+
echo.file_backup_path "c:/chef/backup"
|
170
170
|
echo.cache_options ^({:path =^> "C:\\\\chef\\\\cache\\\\checksums", :skip_expires =^> true}^)
|
171
171
|
echo.# Using default node name ^(fqdn^)
|
172
172
|
echo.log_level :auto
|
data/spec/unit/knife/ssh_spec.rb
CHANGED
@@ -289,7 +289,7 @@ describe Chef::Knife::Ssh do
|
|
289
289
|
let(:execution_channel2) { double(:execution_channel, on_data: nil, on_extended_data: nil) }
|
290
290
|
let(:session_channel2) { double(:session_channel, request_pty: nil) }
|
291
291
|
|
292
|
-
let(:session) { double(:session, loop: nil) }
|
292
|
+
let(:session) { double(:session, loop: nil, close: nil) }
|
293
293
|
|
294
294
|
let(:command) { "false" }
|
295
295
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 17.3.
|
4
|
+
version: 17.3.48
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Jacob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-config
|
@@ -1149,7 +1149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1149
1149
|
- !ruby/object:Gem::Version
|
1150
1150
|
version: '0'
|
1151
1151
|
requirements: []
|
1152
|
-
rubygems_version: 3.2.
|
1152
|
+
rubygems_version: 3.2.22
|
1153
1153
|
signing_key:
|
1154
1154
|
specification_version: 4
|
1155
1155
|
summary: The knife CLI for Chef Infra.
|