lib/chef/knife/bootstrap_windows_winrm.rb in knife-windows-1.9.6 vs lib/chef/knife/bootstrap_windows_winrm.rb in knife-windows-3.0.3

- old
+ new

@@ -29,74 +29,28 @@ include Chef::Knife::BootstrapWindowsBase include Chef::Knife::WinrmBase include Chef::Knife::WinrmCommandSharedFunctions deps do - require 'chef/knife/core/windows_bootstrap_context' require 'chef/json_compat' require 'tempfile' Chef::Knife::Winrm.load_deps + Chef::Knife::Bootstrap.load_deps end banner 'knife bootstrap windows winrm FQDN (options)' def run - validate_name_args! - - if (Chef::Config[:validation_key] && !File.exist?(File.expand_path(Chef::Config[:validation_key]))) - if !negotiate_auth? && !(locate_config_value(:winrm_transport) == 'ssl') - ui.error('Validatorless bootstrap over unsecure winrm channels could expose your key to network sniffing') - exit 1 - end - end - - unless locate_config_value(:winrm_shell) == :cmd - ui.warn("The cmd shell is the only valid winrm-shell for 'knife bootstrap windows winrm'. Switching to the cmd shell.") - config[:winrm_shell] = :cmd - end - - config[:manual] = true - configure_session - - bootstrap + Chef::Application.fatal!(<<~EOM + *knife windows bootstrap winrm* + Core Chef now supports bootstrapping Windows systems without a knife plugin + + Use 'knife bootstrap -o winrm' instead. + + For more detail https://github.com/chef/chef/blob/master/RELEASE_NOTES.md#knife-bootstrap + EOM + ) end - protected - - def wait_for_remote_response(wait_max_minutes) - wait_max_seconds = wait_max_minutes * 60 - retry_interval_seconds = 10 - retries_left = wait_max_seconds / retry_interval_seconds - print(ui.color("\nWaiting for remote response before bootstrap", :magenta)) - wait_start_time = Time.now - begin - print(".") - # Return status of the command is non-zero, typically nil, - # for our simple echo command in cases where run_command - # swallows the exception, such as 401's. Treat such cases - # the same as the case where we encounter an exception. - status = run_command("echo . & echo Response received.") - raise RuntimeError, 'Command execution failed.' if status != 0 - ui.info(ui.color("Remote node responded after #{elapsed_time_in_minutes(wait_start_time)} minutes.", :magenta)) - return - rescue Errno::ECONNREFUSED => e - ui.error("Connection refused connecting to #{locate_config_value(:server_name)}:#{locate_config_value(:winrm_port)}.") - raise - rescue Exception => e - retries_left -= 1 - if retries_left <= 0 || (elapsed_time_in_minutes(wait_start_time) > wait_max_minutes) - ui.error("No response received from remote node after #{elapsed_time_in_minutes(wait_start_time)} minutes, giving up.") - ui.error("Exception: #{e.message}") - raise - end - print '.' - sleep retry_interval_seconds - retry - end - end - - def elapsed_time_in_minutes(start_time) - ((Time.now - start_time) / 60).round(2) - end end end end