knife-windows 3.0.14 → 4.0.1

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: 7ec67f70334f12f28372d9fede2f101b0fcae40e1b21784fb1b37547b57e786a
4
- data.tar.gz: 5bb917517b1f716c03f4da10df0a93791b3640470d498b0b31c13aefacf1639b
3
+ metadata.gz: 972256587773196fd880af37d0ed4aebd7f622b7be02cbcb12655687721b3a13
4
+ data.tar.gz: 1b52382bcd8f85efaecbf961d01060133ea4985925a9036a7b0d7a62bb8e9fa4
5
5
  SHA512:
6
- metadata.gz: 437723f803d151bfe1c48bec3460154c04f4f7fed5df4114652a137fa4679bb411717e6e16d0ba4874cfdfb6b3139875a967439bfdc77d669cb4bcc7d9d73c78
7
- data.tar.gz: fda1c549cbd948af2317f882c95d4466d84814f647e75445ea205ae929dd28daf68c46448f2da6dae3e0f31a1ab1dfb726a6bccda63cc8f2ee1165494ea9d16c
6
+ metadata.gz: 810b1009c16c0a3d044fb12907b07c6d6ed71f993086f025faed626a263524be8acae3d03e7ac1429b3ac86d2c1df096a31c71f31360c05da187cb031f849fad
7
+ data.tar.gz: db4cebe1095ffe71780b30c141145d442f75c36edaca5d116380ab1eb2713346af9ae9703852c7a7c2dce21bb747d65079d639a11f1429cc19f64e59008d50e9
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require "chef/knife"
20
- require_relative "bootstrap_windows_base"
20
+ require_relative "helpers/bootstrap_windows_base"
21
21
 
22
22
  class Chef
23
23
  class Knife
@@ -25,16 +25,6 @@ class Chef
25
25
 
26
26
  include Chef::Knife::BootstrapWindowsBase
27
27
 
28
- deps do
29
- require "chef/json_compat"
30
- require "tempfile"
31
- require "highline"
32
- require "net/ssh"
33
- require "net/ssh/multi"
34
- Chef::Knife::Ssh.load_deps
35
- Chef::Knife::Bootstrap.load_deps
36
- end
37
-
38
28
  banner "knife bootstrap windows ssh FQDN (options) DEPRECATED"
39
29
 
40
30
  option :ssh_user,
@@ -52,13 +42,12 @@ class Chef
52
42
  short: "-p PORT",
53
43
  long: "--ssh-port PORT",
54
44
  description: "The ssh port",
55
- proc: Proc.new { |key| Chef::Config[:knife][:ssh_port] = key.strip }
45
+ proc: Proc.new { |key| key.strip }
56
46
 
57
47
  option :ssh_gateway,
58
48
  short: "-G GATEWAY",
59
49
  long: "--ssh-gateway GATEWAY",
60
- description: "The ssh gateway",
61
- proc: Proc.new { |key| Chef::Config[:knife][:ssh_gateway] = key }
50
+ description: "The ssh gateway"
62
51
 
63
52
  option :forward_agent,
64
53
  short: "-A",
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) 2011-2020 Chef Software, Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,25 +17,13 @@
17
17
  #
18
18
 
19
19
  require "chef/knife"
20
- require_relative "bootstrap_windows_base"
21
- require_relative "winrm_base"
22
- require_relative "winrm_knife_base" # WinrmCommandSharedFunctions
20
+ require_relative "helpers/bootstrap_windows_base"
23
21
 
24
22
  class Chef
25
23
  class Knife
26
24
  class BootstrapWindowsWinrm < Bootstrap
27
25
 
28
26
  include Chef::Knife::BootstrapWindowsBase
29
- include Chef::Knife::WinrmBase
30
- include Chef::Knife::WinrmCommandSharedFunctions
31
-
32
- deps do
33
- require_relative "winrm"
34
- require "chef/json_compat"
35
- require "tempfile"
36
- Chef::Knife::Winrm.load_deps
37
- Chef::Knife::Bootstrap.load_deps
38
- end
39
27
 
40
28
  banner "knife bootstrap windows winrm FQDN (options) DEPRECATED"
41
29
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "chef/knife"
20
- require_relative "knife_windows_base"
21
20
  require "chef/util/path_helper"
22
21
 
23
22
  class Chef
@@ -32,13 +31,6 @@ class Chef
32
31
  def self.included(includer)
33
32
  includer.class_eval do
34
33
 
35
- deps do
36
- require "chef/knife/bootstrap"
37
- require "chef/encrypted_data_bag_item"
38
- require "readline"
39
- require "chef/json_compat"
40
- end
41
-
42
34
  option :chef_node_name,
43
35
  short: "-N NAME",
44
36
  long: "--node-name NAME",
@@ -50,23 +42,19 @@ class Chef
50
42
 
51
43
  option :bootstrap_version,
52
44
  long: "--bootstrap-version VERSION",
53
- description: "The version of Chef to install",
54
- proc: Proc.new { |v| Chef::Config[:knife][:bootstrap_version] = v }
45
+ description: "The version of Chef to install"
55
46
 
56
47
  option :bootstrap_proxy,
57
48
  long: "--bootstrap-proxy PROXY_URL",
58
- description: "The proxy server for the node being bootstrapped",
59
- proc: Proc.new { |p| Chef::Config[:knife][:bootstrap_proxy] = p }
49
+ description: "The proxy server for the node being bootstrapped"
60
50
 
61
51
  option :bootstrap_no_proxy,
62
52
  long: "--bootstrap-no-proxy [NO_PROXY_URL|NO_PROXY_IP]",
63
- description: "Do not proxy locations for the node being bootstrapped; this option is used internally by Opscode",
64
- proc: Proc.new { |np| Chef::Config[:knife][:bootstrap_no_proxy] = np }
53
+ description: "Do not proxy locations for the node being bootstrapped; this option is used internally by Opscode"
65
54
 
66
55
  option :bootstrap_install_command,
67
56
  long: "--bootstrap-install-command COMMANDS",
68
- description: "Custom command to install chef-client",
69
- proc: Proc.new { |ic| Chef::Config[:knife][:bootstrap_install_command] = ic }
57
+ description: "Custom command to install chef-client"
70
58
 
71
59
  option :bootstrap_template,
72
60
  short: "-t TEMPLATE",
@@ -83,10 +71,11 @@ class Chef
83
71
  option :hint,
84
72
  long: "--hint HINT_NAME[=HINT_FILE]",
85
73
  description: "Specify Ohai Hint to be set on the bootstrap target. Use multiple --hint options to specify multiple hints.",
86
- proc: Proc.new { |h|
87
- Chef::Config[:knife][:hints] ||= {}
74
+ proc: Proc.new { |h, accumulator|
75
+ accumulator ||= {}
88
76
  name, path = h.split("=")
89
- Chef::Config[:knife][:hints][name] = path ? Chef::JSONCompat.parse(::File.read(path)) : {}
77
+ accumulator[name] = path ? Chef::JSONCompat.parse(::File.read(path)) : {}
78
+ accumulator
90
79
  }
91
80
 
92
81
  option :first_boot_attributes,
@@ -158,12 +147,12 @@ class Chef
158
147
  option :bootstrap_vault_item,
159
148
  long: "--bootstrap-vault-item VAULT_ITEM",
160
149
  description: 'A single vault and item to update as "vault:item"',
161
- proc: Proc.new { |i|
150
+ proc: Proc.new { |i, accumulator|
162
151
  (vault, item) = i.split(/:/)
163
- Chef::Config[:knife][:bootstrap_vault_item] ||= {}
164
- Chef::Config[:knife][:bootstrap_vault_item][vault] ||= []
165
- Chef::Config[:knife][:bootstrap_vault_item][vault].push(item)
166
- Chef::Config[:knife][:bootstrap_vault_item]
152
+ accumulator ||= {}
153
+ accumulator[vault] ||= []
154
+ accumulator[vault].push(item)
155
+ accumulator
167
156
  }
168
157
 
169
158
  option :policy_name,
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,14 +42,12 @@ class Chef
42
42
  short: "-x USERNAME",
43
43
  long: "--winrm-user USERNAME",
44
44
  description: "The WinRM username",
45
- default: "Administrator",
46
- proc: Proc.new { |key| Chef::Config[:knife][:winrm_user] = key }
45
+ default: "Administrator"
47
46
 
48
47
  option :winrm_password,
49
48
  short: "-P PASSWORD",
50
49
  long: "--winrm-password PASSWORD",
51
- description: "The WinRM password",
52
- proc: Proc.new { |key| Chef::Config[:knife][:winrm_password] = key }
50
+ description: "The WinRM password"
53
51
 
54
52
  option :winrm_shell,
55
53
  long: "--winrm-shell SHELL",
@@ -61,42 +59,32 @@ class Chef
61
59
  short: "-w TRANSPORT",
62
60
  long: "--winrm-transport TRANSPORT",
63
61
  description: "The WinRM transport type. Valid choices are [ssl, plaintext]",
64
- default: "plaintext",
65
- proc: Proc.new { |transport|
66
- Chef::Config[:knife][:winrm_port] = "5986" if transport == "ssl"
67
- Chef::Config[:knife][:winrm_transport] = transport
68
- }
62
+ default: "plaintext"
69
63
 
70
64
  option :winrm_port,
71
65
  short: "-p PORT",
72
66
  long: "--winrm-port PORT",
73
- description: "The WinRM port, by default this is '5985' for 'plaintext' and '5986' for 'ssl' winrm transport",
74
- default: "5985",
75
- proc: Proc.new { |key| Chef::Config[:knife][:winrm_port] = key }
67
+ description: "The WinRM port, by default this is '5985' for 'plaintext' and '5986' for 'ssl' winrm transport"
76
68
 
77
69
  option :kerberos_keytab_file,
78
70
  short: "-T KEYTAB_FILE",
79
71
  long: "--keytab-file KEYTAB_FILE",
80
- description: "The Kerberos keytab file used for authentication",
81
- proc: Proc.new { |keytab| Chef::Config[:knife][:kerberos_keytab_file] = keytab }
72
+ description: "The Kerberos keytab file used for authentication"
82
73
 
83
74
  option :kerberos_realm,
84
75
  short: "-R KERBEROS_REALM",
85
76
  long: "--kerberos-realm KERBEROS_REALM",
86
- description: "The Kerberos realm used for authentication",
87
- proc: Proc.new { |realm| Chef::Config[:knife][:kerberos_realm] = realm }
77
+ description: "The Kerberos realm used for authentication"
88
78
 
89
79
  option :kerberos_service,
90
80
  short: "-S KERBEROS_SERVICE",
91
81
  long: "--kerberos-service KERBEROS_SERVICE",
92
- description: "The Kerberos service used for authentication",
93
- proc: Proc.new { |service| Chef::Config[:knife][:kerberos_service] = service }
82
+ description: "The Kerberos service used for authentication"
94
83
 
95
84
  option :ca_trust_file,
96
85
  short: "-f CA_TRUST_FILE",
97
86
  long: "--ca-trust-file CA_TRUST_FILE",
98
- description: "The Certificate Authority (CA) trust file used for SSL transport",
99
- proc: Proc.new { |trust| Chef::Config[:knife][:ca_trust_file] = trust }
87
+ description: "The Certificate Authority (CA) trust file used for SSL transport"
100
88
 
101
89
  option :winrm_ssl_verify_mode,
102
90
  long: "--winrm-ssl-verify-mode SSL_VERIFY_MODE",
@@ -111,8 +99,7 @@ class Chef
111
99
  option :winrm_authentication_protocol,
112
100
  long: "--winrm-authentication-protocol AUTHENTICATION_PROTOCOL",
113
101
  description: "The authentication protocol used during WinRM communication. The supported protocols are #{WINRM_AUTH_PROTOCOL_LIST.join(",")}. Default is 'negotiate'.",
114
- default: "negotiate",
115
- proc: Proc.new { |protocol| Chef::Config[:knife][:winrm_authentication_protocol] = protocol }
102
+ default: "negotiate"
116
103
 
117
104
  option :session_timeout,
118
105
  long: "--session-timeout Minutes",
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Steven Murawski (<smurawski@chef.io)
3
- # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,7 @@
19
19
  require "chef/knife"
20
20
  require_relative "winrm_base"
21
21
  require_relative "winrm_shared_options"
22
- require_relative "knife_windows_base"
22
+ require_relative "winrm_session"
23
23
 
24
24
  class Chef
25
25
  class Knife
@@ -39,10 +39,9 @@ class Chef
39
39
 
40
40
  include Chef::Knife::WinrmBase
41
41
  include Chef::Knife::WinrmSharedOptions
42
- include Chef::Knife::KnifeWindowsBase
43
42
 
44
43
  def validate_winrm_options!
45
- winrm_auth_protocol = locate_config_value(:winrm_authentication_protocol)
44
+ winrm_auth_protocol = config[:winrm_authentication_protocol]
46
45
 
47
46
  unless Chef::Knife::WinrmBase::WINRM_AUTH_PROTOCOL_LIST.include?(winrm_auth_protocol)
48
47
  ui.error "Invalid value '#{winrm_auth_protocol}' for --winrm-authentication-protocol option."
@@ -120,7 +119,7 @@ class Chef
120
119
  @session_results = []
121
120
  queue = Queue.new
122
121
  @winrm_sessions.each { |s| queue << s }
123
- num_sessions = locate_config_value(:concurrency)
122
+ num_sessions = config[:concurrency]
124
123
  num_targets = @winrm_sessions.length
125
124
  num_sessions = (num_sessions.nil? || num_sessions == 0) ? num_targets : [num_sessions, num_targets].min
126
125
 
@@ -146,7 +145,7 @@ class Chef
146
145
  if authorization_error?(e)
147
146
  unless config[:suppress_auth_failure]
148
147
  # Display errors if the caller hasn't opted to retry
149
- ui.error "Failed to authenticate to #{s.host} as #{locate_config_value(:winrm_user)}"
148
+ ui.error "Failed to authenticate to #{s.host} as #{config[:winrm_user]}"
150
149
  ui.info "Response: #{e.message}"
151
150
  ui.info get_failed_authentication_hint
152
151
  raise e
@@ -202,33 +201,35 @@ class Chef
202
201
  end
203
202
 
204
203
  def resolve_session_options
204
+ config[:winrm_port] ||= ( config[:winrm_transport] == "ssl" ) ? "5986" : "5985"
205
+
205
206
  @session_opts = {
206
207
  user: resolve_winrm_user,
207
- password: locate_config_value(:winrm_password),
208
- port: locate_config_value(:winrm_port),
208
+ password: config[:winrm_password],
209
+ port: config[:winrm_port],
209
210
  operation_timeout: resolve_winrm_session_timeout,
210
211
  basic_auth_only: resolve_winrm_basic_auth,
211
212
  disable_sspi: resolve_winrm_disable_sspi,
212
213
  transport: resolve_winrm_transport,
213
214
  no_ssl_peer_verification: resolve_no_ssl_peer_verification,
214
215
  ssl_peer_fingerprint: resolve_ssl_peer_fingerprint,
215
- shell: locate_config_value(:winrm_shell),
216
- codepage: locate_config_value(:winrm_codepage),
216
+ shell: config[:winrm_shell],
217
+ codepage: config[:winrm_codepage],
217
218
  }
218
219
 
219
220
  if @session_opts[:user] && (not @session_opts[:password])
220
- @session_opts[:password] = Chef::Config[:knife][:winrm_password] = config[:winrm_password] = get_password
221
+ @session_opts[:password] = config[:winrm_password] = get_password
221
222
  end
222
223
 
223
224
  if @session_opts[:transport] == :kerberos
224
225
  @session_opts.merge!(resolve_winrm_kerberos_options)
225
226
  end
226
227
 
227
- @session_opts[:ca_trust_path] = locate_config_value(:ca_trust_file) if locate_config_value(:ca_trust_file)
228
+ @session_opts[:ca_trust_path] = config[:ca_trust_file] if config[:ca_trust_file]
228
229
  end
229
230
 
230
231
  def resolve_winrm_user
231
- user = locate_config_value(:winrm_user)
232
+ user = config[:winrm_user]
232
233
 
233
234
  # Prefixing with '.\' when using negotiate
234
235
  # to auth user against local machine domain
@@ -244,23 +245,23 @@ class Chef
244
245
 
245
246
  def resolve_winrm_session_timeout
246
247
  # 30 min (Default) OperationTimeout for long bootstraps fix for KNIFE_WINDOWS-8
247
- locate_config_value(:session_timeout).to_i * 60 if locate_config_value(:session_timeout)
248
+ config[:session_timeout].to_i * 60 if config[:session_timeout]
248
249
  end
249
250
 
250
251
  def resolve_winrm_basic_auth
251
- locate_config_value(:winrm_authentication_protocol) == "basic"
252
+ config[:winrm_authentication_protocol] == "basic"
252
253
  end
253
254
 
254
255
  def resolve_winrm_kerberos_options
255
256
  kerberos_opts = {}
256
- kerberos_opts[:keytab] = locate_config_value(:kerberos_keytab_file) if locate_config_value(:kerberos_keytab_file)
257
- kerberos_opts[:realm] = locate_config_value(:kerberos_realm) if locate_config_value(:kerberos_realm)
258
- kerberos_opts[:service] = locate_config_value(:kerberos_service) if locate_config_value(:kerberos_service)
257
+ kerberos_opts[:keytab] = config[:kerberos_keytab_file] if config[:kerberos_keytab_file]
258
+ kerberos_opts[:realm] = config[:kerberos_realm] if config[:kerberos_realm]
259
+ kerberos_opts[:service] = config[:kerberos_service] if config[:kerberos_service]
259
260
  kerberos_opts
260
261
  end
261
262
 
262
263
  def resolve_winrm_transport
263
- transport = locate_config_value(:winrm_transport).to_sym
264
+ transport = config[:winrm_transport].to_sym
264
265
  if config.any? { |k, v| k.to_s =~ /kerberos/ && !v.nil? }
265
266
  transport = :kerberos
266
267
  elsif transport != :ssl && negotiate_auth?
@@ -271,11 +272,11 @@ class Chef
271
272
  end
272
273
 
273
274
  def resolve_no_ssl_peer_verification
274
- locate_config_value(:ca_trust_file).nil? && config[:winrm_ssl_verify_mode] == :verify_none && resolve_winrm_transport == :ssl
275
+ config[:ca_trust_file].nil? && config[:winrm_ssl_verify_mode] == :verify_none && resolve_winrm_transport == :ssl
275
276
  end
276
277
 
277
278
  def resolve_ssl_peer_fingerprint
278
- locate_config_value(:ssl_peer_fingerprint)
279
+ config[:ssl_peer_fingerprint]
279
280
  end
280
281
 
281
282
  def resolve_winrm_disable_sspi
@@ -287,7 +288,7 @@ class Chef
287
288
  end
288
289
 
289
290
  def negotiate_auth?
290
- locate_config_value(:winrm_authentication_protocol) == "negotiate"
291
+ config[:winrm_authentication_protocol] == "negotiate"
291
292
  end
292
293
 
293
294
  def warn_no_ssl_peer_verification
@@ -16,7 +16,7 @@
16
16
  #
17
17
 
18
18
  require "chef/knife"
19
- require_relative "winrm_base"
19
+ require_relative "helpers/winrm_base"
20
20
 
21
21
  class Chef
22
22
  class Knife
@@ -16,7 +16,7 @@
16
16
  #
17
17
 
18
18
  require "chef/knife"
19
- require_relative "winrm_base"
19
+ require_relative "helpers/winrm_base"
20
20
 
21
21
  class Chef
22
22
  class Knife
@@ -16,7 +16,7 @@
16
16
  #
17
17
 
18
18
  require "chef/knife"
19
- require_relative "winrm_base"
19
+ require_relative "helpers/winrm_base"
20
20
 
21
21
  class Chef
22
22
  class Knife
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,21 +17,19 @@
17
17
  #
18
18
 
19
19
  require "chef/knife"
20
- require_relative "winrm_knife_base" # WinrmCommandSharedFunctions
21
- require_relative "winrm_session"
22
- require_relative "knife_windows_base"
20
+ require_relative "helpers/winrm_knife_base" # WinrmCommandSharedFunctions
23
21
 
24
22
  class Chef
25
23
  class Knife
26
24
  class Winrm < Knife
27
25
 
28
26
  include Chef::Knife::WinrmCommandSharedFunctions
29
- include Chef::Knife::KnifeWindowsBase
30
27
 
31
28
  deps do
32
29
  require_relative "windows_cert_generate"
33
30
  require_relative "windows_cert_install"
34
31
  require_relative "windows_listener_create"
32
+ require_relative "helpers/winrm_session"
35
33
  require "readline"
36
34
  require "chef/search/query"
37
35
  end
@@ -17,8 +17,8 @@
17
17
  #
18
18
 
19
19
  require "chef/knife"
20
- require_relative "winrm_knife_base"
21
- require_relative "wsman_endpoint"
20
+ require_relative "helpers/winrm_knife_base"
21
+ require_relative "helpers/wsman_endpoint"
22
22
 
23
23
  class Chef
24
24
  class Knife
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Windows
3
- VERSION = "3.0.14".freeze
3
+ VERSION = "4.0.1".freeze
4
4
  MAJOR, MINOR, TINY = VERSION.split(".")
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  # Author:: Adam Edwards (<adamed@chef.io>)
3
- # Copyright:: Copyright (c) 2012-2020 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,22 @@ def sample_data(file_name)
22
22
  File.read(file)
23
23
  end
24
24
 
25
+ class UnexpectedSystemExit < RuntimeError
26
+ def self.from(system_exit)
27
+ new(system_exit.message).tap { |e| e.set_backtrace(system_exit.backtrace) }
28
+ end
29
+ end
30
+
25
31
  RSpec.configure do |config|
32
+ config.raise_on_warning = true
33
+ config.raise_errors_for_deprecations!
26
34
  config.run_all_when_everything_filtered = true
27
35
  config.filter_run focus: true
36
+ config.around(:example) do |ex|
37
+ begin
38
+ ex.run
39
+ rescue SystemExit => e
40
+ raise UnexpectedSystemExit.from(e)
41
+ end
42
+ end
28
43
  end
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require_relative "../../../lib/chef/knife/winrm_session"
20
+ require_relative "../../../lib/chef/knife/helpers/winrm_session"
21
21
  require "dummy_winrm_connection"
22
22
 
23
23
  describe Chef::Knife::WinrmSession do
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@chef.io>
3
- # Copyright:: Copyright (c) 2013-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -250,7 +250,7 @@ describe Chef::Knife::Winrm do
250
250
  end
251
251
 
252
252
  it "sets the user specified winrm port" do
253
- Chef::Config[:knife] = { winrm_port: "5988" }
253
+ winrm_command_http.config[:knife] = { winrm_port: "5988" }
254
254
  expect(Chef::Knife::WinrmSession).to receive(:new).with(hash_including(transport: :plaintext)).and_call_original
255
255
  expect(WinRM::Connection).to receive(:new).with(hash_including(transport: :plaintext)).and_return(winrm_connection)
256
256
  winrm_command_http.configure_chef
@@ -269,7 +269,7 @@ describe Chef::Knife::Winrm do
269
269
  let(:winrm_command_https) { Chef::Knife::Winrm.new(["-m", "localhost", "-x", "testuser", "-P", "testpassword", "--winrm-transport", "ssl", "echo helloworld"]) }
270
270
 
271
271
  it "uses the https uri scheme if the ssl transport is specified" do
272
- Chef::Config[:knife] = { winrm_transport: "ssl" }
272
+ winrm_command_http.config[:winrm_transport] = "ssl"
273
273
  expect(Chef::Knife::WinrmSession).to receive(:new).with(hash_including(transport: :ssl)).and_call_original
274
274
  expect(WinRM::Connection).to receive(:new).with(hash_including(endpoint: "https://localhost:5986/wsman")).and_return(winrm_connection)
275
275
  winrm_command_https.configure_chef
@@ -277,7 +277,7 @@ describe Chef::Knife::Winrm do
277
277
  end
278
278
 
279
279
  it "uses the winrm port '5986' by default for ssl transport" do
280
- Chef::Config[:knife] = { winrm_transport: "ssl" }
280
+ winrm_command_http.config[:winrm_transport] = "ssl"
281
281
  expect(Chef::Knife::WinrmSession).to receive(:new).with(hash_including(transport: :ssl)).and_call_original
282
282
  expect(WinRM::Connection).to receive(:new).with(hash_including(endpoint: "https://localhost:5986/wsman")).and_return(winrm_connection)
283
283
  winrm_command_https.configure_chef
@@ -361,8 +361,8 @@ describe Chef::Knife::Winrm do
361
361
 
362
362
  before(:each) do
363
363
  allow(Chef::Knife::WinrmSession).to receive(:new).and_return(session)
364
- Chef::Config[:knife] = { winrm_transport: "plaintext" }
365
364
  @winrm = Chef::Knife::Winrm.new(["-m", "localhost", "-x", "testuser", "-P", "testpassword", "--winrm-authentication-protocol", "basic", "echo helloworld"])
365
+ @winrm.config[:winrm_transport] = "plaintext"
366
366
  end
367
367
 
368
368
  it "returns with 0 if the command succeeds" do
@@ -375,7 +375,6 @@ describe Chef::Knife::Winrm do
375
375
  command_status = 510
376
376
 
377
377
  @winrm.config[:returns] = "0"
378
- Chef::Config[:knife][:returns] = [0]
379
378
 
380
379
  allow(@winrm).to receive(:relay_winrm_command)
381
380
  allow(@winrm.ui).to receive(:error)
@@ -386,7 +385,6 @@ describe Chef::Knife::Winrm do
386
385
  it "exits with non-zero status if the command fails and returns config is set to 0" do
387
386
  command_status = 1
388
387
  @winrm.config[:returns] = "0,53"
389
- Chef::Config[:knife][:returns] = [0, 53]
390
388
  allow(@winrm).to receive(:relay_winrm_command).and_return(command_status)
391
389
  allow(@winrm.ui).to receive(:error)
392
390
  allow(session).to receive(:exit_code).and_return(command_status)
@@ -395,7 +393,7 @@ describe Chef::Knife::Winrm do
395
393
 
396
394
  it "exits with a zero status if the command returns an expected non-zero status" do
397
395
  command_status = 53
398
- Chef::Config[:knife][:returns] = [0, 53]
396
+ @winrm.config[:returns] = "0,53"
399
397
  allow(@winrm).to receive(:relay_winrm_command).and_return(command_status)
400
398
  allow(session).to receive(:exit_codes).and_return({ "thishost" => command_status })
401
399
  exit_code = @winrm.run
@@ -448,7 +446,7 @@ describe Chef::Knife::Winrm do
448
446
 
449
447
  context "when winrm_authentication_protocol specified" do
450
448
  before do
451
- Chef::Config[:knife] = { winrm_transport: "plaintext" }
449
+ @winrm.config[:winrm_transport] = "plaintext"
452
450
  allow(@winrm).to receive(:relay_winrm_command).and_return(0)
453
451
  end
454
452
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Steven Murawski (<smurawski@chef.io>)
3
- # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -37,6 +37,7 @@ describe Chef::Knife::WsmanTest do
37
37
  allow(Chef::HTTP::DefaultSSLPolicy).to receive(:new)
38
38
  .with(http_client_mock.ssl_config)
39
39
  .and_return(ssl_policy)
40
+ subject.merge_configs
40
41
  end
41
42
 
42
43
  subject { Chef::Knife::WsmanTest.new(["-m", "localhost"]) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-windows
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.14
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Chisamore
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-07 00:00:00.000000000 Z
11
+ date: 2020-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '15.0'
19
+ version: '15.11'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '15.0'
26
+ version: '15.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: winrm
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -75,19 +75,18 @@ extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - LICENSE
78
- - lib/chef/knife/bootstrap_windows_base.rb
79
78
  - lib/chef/knife/bootstrap_windows_ssh.rb
80
79
  - lib/chef/knife/bootstrap_windows_winrm.rb
81
- - lib/chef/knife/knife_windows_base.rb
80
+ - lib/chef/knife/helpers/bootstrap_windows_base.rb
81
+ - lib/chef/knife/helpers/winrm_base.rb
82
+ - lib/chef/knife/helpers/winrm_knife_base.rb
83
+ - lib/chef/knife/helpers/winrm_session.rb
84
+ - lib/chef/knife/helpers/winrm_shared_options.rb
85
+ - lib/chef/knife/helpers/wsman_endpoint.rb
82
86
  - lib/chef/knife/windows_cert_generate.rb
83
87
  - lib/chef/knife/windows_cert_install.rb
84
88
  - lib/chef/knife/windows_listener_create.rb
85
89
  - lib/chef/knife/winrm.rb
86
- - lib/chef/knife/winrm_base.rb
87
- - lib/chef/knife/winrm_knife_base.rb
88
- - lib/chef/knife/winrm_session.rb
89
- - lib/chef/knife/winrm_shared_options.rb
90
- - lib/chef/knife/wsman_endpoint.rb
91
90
  - lib/chef/knife/wsman_test.rb
92
91
  - lib/knife-windows/version.rb
93
92
  - spec/assets/fake_trusted_certs/excluded.txt
@@ -123,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
122
  requirements:
124
123
  - - ">="
125
124
  - !ruby/object:Gem::Version
126
- version: 2.5.0
125
+ version: 2.6.0
127
126
  required_rubygems_version: !ruby/object:Gem::Requirement
128
127
  requirements:
129
128
  - - ">="
@@ -1,34 +0,0 @@
1
- #
2
- # Author:: Aliasgar Batterywala (<aliasgar.batterywala@clogeny.com>)
3
- # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require "chef/knife"
20
-
21
- class Chef
22
- class Knife
23
- module KnifeWindowsBase
24
-
25
- def locate_config_value(key)
26
- key = key.to_sym
27
- value = config[key] || Chef::Config[:knife][key] || default_config[key]
28
- Chef::Log.debug("Looking for key #{key} and found value #{value}")
29
- value
30
- end
31
-
32
- end
33
- end
34
- end