chef 16.2.73-universal-mingw32 → 16.4.41-universal-mingw32
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/Gemfile +4 -4
- data/Rakefile +1 -1
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +2 -1
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +13 -1
- data/lib/chef/application/apply.rb +5 -5
- data/lib/chef/application/windows_service.rb +27 -27
- data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
- data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/client.rb +14 -14
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/data_bag.rb +1 -2
- data/lib/chef/data_collector/run_end_message.rb +11 -1
- data/lib/chef/deprecated.rb +8 -0
- data/lib/chef/dsl/platform_introspection.rb +9 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/environment.rb +3 -4
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +11 -11
- data/lib/chef/http/authenticator.rb +3 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +6 -12
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
- data/lib/chef/knife/config_get.rb +1 -0
- data/lib/chef/knife/config_list_profiles.rb +4 -1
- data/lib/chef/knife/configure.rb +3 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +28 -33
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +8 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +32 -25
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/rehash.rb +3 -21
- data/lib/chef/knife/ssh.rb +11 -7
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/log.rb +7 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/chef_utils_wiring.rb +40 -0
- data/lib/chef/mixin/deep_merge.rb +35 -6
- data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
- data/lib/chef/mixin/openssl_helper.rb +30 -6
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +1 -0
- data/lib/chef/mixin/which.rb +6 -3
- data/lib/chef/mixins.rb +1 -0
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node.rb +36 -12
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/git.rb +17 -9
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +3 -4
- data/lib/chef/provider/package/windows.rb +9 -4
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/route.rb +1 -1
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +9 -9
- data/lib/chef/provider/windows_task.rb +0 -3
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +1 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/recipe.rb +1 -1
- data/lib/chef/resource.rb +8 -10
- data/lib/chef/resource/apt_repository.rb +1 -10
- data/lib/chef/resource/build_essential.rb +2 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +13 -13
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- data/lib/chef/resource/cron/cron_d.rb +1 -1
- data/lib/chef/resource/cron_access.rb +2 -2
- data/lib/chef/resource/execute.rb +4 -5
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +18 -18
- data/lib/chef/resource/lwrp_base.rb +1 -0
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/openssl_dhparam.rb +2 -0
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
- data/lib/chef/resource/openssl_x509_crl.rb +3 -2
- data/lib/chef/resource/openssl_x509_request.rb +23 -20
- data/lib/chef/resource/osx_profile.rb +227 -5
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/service.rb +2 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sudo.rb +2 -2
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/user_ulimit.rb +1 -1
- data/lib/chef/resource/windows_ad_join.rb +2 -0
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +2 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +25 -5
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +199 -0
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +17 -18
- data/lib/chef/resource/windows_printer_port.rb +14 -13
- data/lib/chef/resource/windows_security_policy.rb +51 -20
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +2 -0
- data/lib/chef/resource/windows_workgroup.rb +2 -3
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_inspector.rb +7 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +3 -4
- data/lib/chef/run_context/cookbook_compiler.rb +20 -20
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/shell/shell_session.rb +2 -0
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +11 -12
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/knife/ssh_spec.rb +5 -16
- data/spec/functional/resource/aix_service_spec.rb +0 -2
- data/spec/functional/resource/aixinit_service_spec.rb +7 -8
- data/spec/functional/resource/apt_package_spec.rb +0 -1
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +0 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/git_spec.rb +23 -1
- data/spec/functional/resource/group_spec.rb +12 -8
- data/spec/functional/resource/insserv_spec.rb +4 -5
- data/spec/functional/resource/link_spec.rb +20 -20
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/remote_file_spec.rb +1 -7
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -1
- data/spec/functional/run_lock_spec.rb +26 -25
- data/spec/functional/shell_spec.rb +5 -5
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_get_profile_spec.rb +69 -68
- data/spec/integration/knife/config_get_spec.rb +126 -125
- data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
- data/spec/integration/knife/config_use_profile_spec.rb +110 -109
- data/spec/integration/knife/cookbook_upload_spec.rb +27 -0
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
- data/spec/integration/recipes/resource_load_spec.rb +2 -0
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +1 -1
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +16 -10
- data/spec/support/chef_helpers.rb +1 -20
- data/spec/support/platform_helpers.rb +9 -11
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -21
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/integration/knife_support.rb +2 -9
- data/spec/support/shared/unit/application_dot_d.rb +0 -1
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/unit/application_spec.rb +4 -2
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
- data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/data_collector_spec.rb +29 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/http/api_versions_spec.rb +19 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +16 -20
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/log/syslog_spec.rb +6 -10
- data/spec/unit/log/winevt_spec.rb +21 -13
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +0 -1
- data/spec/unit/mixin/shell_out_spec.rb +25 -26
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/which.rb +8 -0
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +6 -2
- data/spec/unit/node_spec.rb +103 -16
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/provider/execute_spec.rb +0 -7
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +5 -10
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- data/spec/unit/provider/package/windows_spec.rb +30 -53
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +2 -6
- data/spec/unit/provider/systemd_unit_spec.rb +28 -24
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/provider_spec.rb +1 -0
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/execute_spec.rb +123 -118
- data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
- data/spec/unit/resource/osx_profile_spec.rb +233 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
- data/spec/unit/resource/windows_package_spec.rb +1 -0
- data/spec/unit/resource_reporter_spec.rb +1 -1
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/util/diff_spec.rb +1 -15
- data/spec/unit/win32/security_spec.rb +4 -3
- data/tasks/rspec.rb +1 -1
- metadata +39 -31
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
data/lib/chef/environment.rb
CHANGED
@@ -119,7 +119,7 @@ class Chef
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def to_h
|
122
|
-
|
122
|
+
{
|
123
123
|
"name" => @name,
|
124
124
|
"description" => @description,
|
125
125
|
"cookbook_versions" => @cookbook_versions,
|
@@ -128,7 +128,6 @@ class Chef
|
|
128
128
|
"default_attributes" => @default_attributes,
|
129
129
|
"override_attributes" => @override_attributes,
|
130
130
|
}
|
131
|
-
result
|
132
131
|
end
|
133
132
|
|
134
133
|
alias_method :to_hash, :to_h
|
@@ -255,11 +254,11 @@ class Chef
|
|
255
254
|
js_file = File.join(Chef::Config[:environment_path], "#{name}.json")
|
256
255
|
rb_file = File.join(Chef::Config[:environment_path], "#{name}.rb")
|
257
256
|
|
258
|
-
if File.
|
257
|
+
if File.exist?(js_file)
|
259
258
|
# from_json returns object.class => json_class in the JSON.
|
260
259
|
hash = Chef::JSONCompat.parse(IO.read(js_file))
|
261
260
|
from_hash(hash)
|
262
|
-
elsif File.
|
261
|
+
elsif File.exist?(rb_file)
|
263
262
|
environment = Chef::Environment.new
|
264
263
|
environment.name(name)
|
265
264
|
environment.from_file(rb_file)
|
data/lib/chef/exceptions.rb
CHANGED
@@ -198,6 +198,7 @@ class Chef
|
|
198
198
|
class MetadataNotFound < StandardError
|
199
199
|
attr_reader :install_path
|
200
200
|
attr_reader :cookbook_name
|
201
|
+
|
201
202
|
def initialize(install_path, cookbook_name)
|
202
203
|
@install_path = install_path
|
203
204
|
@cookbook_name = cookbook_name
|
@@ -422,7 +423,7 @@ class Chef
|
|
422
423
|
|
423
424
|
class ChecksumMismatch < RuntimeError
|
424
425
|
def initialize(res_cksum, cont_cksum)
|
425
|
-
super "Checksum on resource (#{res_cksum}) does not match checksum on content (#{cont_cksum})"
|
426
|
+
super "Checksum on resource (#{res_cksum}...) does not match checksum on content (#{cont_cksum}...)"
|
426
427
|
end
|
427
428
|
end
|
428
429
|
|
@@ -448,6 +449,7 @@ class Chef
|
|
448
449
|
# to correctly populate the backtrace with the wrapped backtraces.
|
449
450
|
class RunFailedWrappingError < RuntimeError
|
450
451
|
attr_reader :wrapped_errors
|
452
|
+
|
451
453
|
def initialize(*errors)
|
452
454
|
errors = errors.select { |e| !e.nil? }
|
453
455
|
output = "Found #{errors.size} errors, they are stored in the backtrace"
|
@@ -488,6 +490,7 @@ class Chef
|
|
488
490
|
|
489
491
|
class MultipleDscResourcesFound < RuntimeError
|
490
492
|
attr_reader :resources_found
|
493
|
+
|
491
494
|
def initialize(resources_found)
|
492
495
|
@resources_found = resources_found
|
493
496
|
matches_info = @resources_found.each do |r|
|
@@ -39,15 +39,15 @@ class Chef
|
|
39
39
|
errors = [ ]
|
40
40
|
|
41
41
|
tempfile_dirnames.each do |tempfile_dirname|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
42
|
+
|
43
|
+
# preserving the file extension of the target filename should be considered a public API
|
44
|
+
tf = ::Tempfile.open([tempfile_basename, tempfile_extension], tempfile_dirname)
|
45
|
+
break
|
46
|
+
rescue SystemCallError => e
|
47
|
+
message = "Creating temp file under '#{tempfile_dirname}' failed with: '#{e.message}'"
|
48
|
+
Chef::Log.trace(message)
|
49
|
+
errors << message
|
50
|
+
|
51
51
|
end
|
52
52
|
|
53
53
|
raise Chef::Exceptions::FileContentStagingError, errors if tf.nil?
|
data/lib/chef/handler.rb
CHANGED
@@ -240,6 +240,8 @@ class Chef
|
|
240
240
|
# This ensures that all handlers get a chance to run even if one fails.
|
241
241
|
# This method should not be overridden by subclasses unless you know what
|
242
242
|
# you're doing.
|
243
|
+
#
|
244
|
+
# @api private
|
243
245
|
def run_report_safely(run_status)
|
244
246
|
run_report_unsafe(run_status)
|
245
247
|
rescue Exception => e
|
data/lib/chef/http.rb
CHANGED
@@ -22,7 +22,8 @@
|
|
22
22
|
#
|
23
23
|
|
24
24
|
require "tempfile" unless defined?(Tempfile)
|
25
|
-
require "
|
25
|
+
require "openssl" unless defined?(OpenSSL)
|
26
|
+
require "net/http" unless defined?(Net::HTTP)
|
26
27
|
require "uri" unless defined?(URI)
|
27
28
|
require_relative "http/basic_client"
|
28
29
|
require_relative "monkey_patches/net_http"
|
@@ -58,7 +59,6 @@ class Chef
|
|
58
59
|
handler.handle_chunk(chunk)
|
59
60
|
end
|
60
61
|
end
|
61
|
-
|
62
62
|
end
|
63
63
|
|
64
64
|
def self.middlewares
|
@@ -155,7 +155,7 @@ class Chef
|
|
155
155
|
rescue Net::HTTPClientException => e
|
156
156
|
http_attempts += 1
|
157
157
|
response = e.response
|
158
|
-
if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts
|
158
|
+
if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts >= 0
|
159
159
|
Chef::Log.trace("Negotiating protocol version with #{url}, retry #{http_attempts}/#{version_retries}")
|
160
160
|
retry
|
161
161
|
else
|
@@ -194,7 +194,7 @@ class Chef
|
|
194
194
|
rescue Net::HTTPClientException => e
|
195
195
|
http_attempts += 1
|
196
196
|
response = e.response
|
197
|
-
if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts
|
197
|
+
if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts >= 0
|
198
198
|
Chef::Log.trace("Negotiating protocol version with #{url}, retry #{http_attempts}/#{version_retries}")
|
199
199
|
retry
|
200
200
|
else
|
@@ -250,7 +250,7 @@ class Chef
|
|
250
250
|
rescue Net::HTTPClientException => e
|
251
251
|
http_attempts += 1
|
252
252
|
response = e.response
|
253
|
-
if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts
|
253
|
+
if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts >= 0
|
254
254
|
Chef::Log.trace("Negotiating protocol version with #{url}, retry #{http_attempts}/#{version_retries}")
|
255
255
|
retry
|
256
256
|
else
|
@@ -429,7 +429,7 @@ class Chef
|
|
429
429
|
response, request, return_value = yield
|
430
430
|
# handle HTTP 50X Error
|
431
431
|
if response.is_a?(Net::HTTPServerError) && !Chef::Config.local_mode
|
432
|
-
if http_retry_count - http_attempts
|
432
|
+
if http_retry_count - http_attempts >= 0
|
433
433
|
sleep_time = 1 + (2**http_attempts) + rand(2**http_attempts)
|
434
434
|
Chef::Log.error("Server returned error #{response.code} for #{url}, retrying #{http_attempts}/#{http_retry_count} in #{sleep_time}s")
|
435
435
|
sleep(sleep_time)
|
@@ -439,7 +439,7 @@ class Chef
|
|
439
439
|
return [response, request, return_value]
|
440
440
|
end
|
441
441
|
rescue SocketError, Errno::ETIMEDOUT, Errno::ECONNRESET => e
|
442
|
-
if http_retry_count - http_attempts
|
442
|
+
if http_retry_count - http_attempts >= 0
|
443
443
|
Chef::Log.error("Error connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
|
444
444
|
sleep(http_retry_delay)
|
445
445
|
retry
|
@@ -447,21 +447,21 @@ class Chef
|
|
447
447
|
e.message.replace "Error connecting to #{url} - #{e.message}"
|
448
448
|
raise e
|
449
449
|
rescue Errno::ECONNREFUSED
|
450
|
-
if http_retry_count - http_attempts
|
450
|
+
if http_retry_count - http_attempts >= 0
|
451
451
|
Chef::Log.error("Connection refused connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
|
452
452
|
sleep(http_retry_delay)
|
453
453
|
retry
|
454
454
|
end
|
455
455
|
raise Errno::ECONNREFUSED, "Connection refused connecting to #{url}, giving up"
|
456
456
|
rescue Timeout::Error
|
457
|
-
if http_retry_count - http_attempts
|
457
|
+
if http_retry_count - http_attempts >= 0
|
458
458
|
Chef::Log.error("Timeout connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
|
459
459
|
sleep(http_retry_delay)
|
460
460
|
retry
|
461
461
|
end
|
462
462
|
raise Timeout::Error, "Timeout connecting to #{url}, giving up"
|
463
463
|
rescue OpenSSL::SSL::SSLError => e
|
464
|
-
if (http_retry_count - http_attempts
|
464
|
+
if (http_retry_count - http_attempts >= 0) && !e.message.include?("certificate verify failed")
|
465
465
|
Chef::Log.error("SSL Error connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
|
466
466
|
sleep(http_retry_delay)
|
467
467
|
retry
|
@@ -471,7 +471,7 @@ class Chef
|
|
471
471
|
end
|
472
472
|
|
473
473
|
def version_retries
|
474
|
-
@version_retries ||= options[:version_class]
|
474
|
+
@version_retries ||= options[:version_class]&.possible_requests || 1
|
475
475
|
end
|
476
476
|
|
477
477
|
# @api private
|
@@ -24,7 +24,7 @@ class Chef
|
|
24
24
|
class HTTP
|
25
25
|
class Authenticator
|
26
26
|
|
27
|
-
DEFAULT_SERVER_API_VERSION = "
|
27
|
+
DEFAULT_SERVER_API_VERSION = "2".freeze
|
28
28
|
|
29
29
|
attr_reader :signing_key_filename
|
30
30
|
attr_reader :raw_key
|
@@ -68,6 +68,8 @@ class Chef
|
|
68
68
|
version_class.best_request_version
|
69
69
|
elsif api_version
|
70
70
|
api_version
|
71
|
+
elsif Chef::ServerAPIVersions.instance.negotiated?
|
72
|
+
Chef::ServerAPIVersions.instance.max_server_version.to_s
|
71
73
|
else
|
72
74
|
DEFAULT_SERVER_API_VERSION
|
73
75
|
end
|
data/lib/chef/json_compat.rb
CHANGED
data/lib/chef/knife.rb
CHANGED
@@ -20,10 +20,10 @@
|
|
20
20
|
require "forwardable" unless defined?(Forwardable)
|
21
21
|
require_relative "version"
|
22
22
|
require "mixlib/cli" unless defined?(Mixlib::CLI)
|
23
|
-
require "chef-utils/dsl/
|
23
|
+
require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
|
24
24
|
require_relative "workstation_config_loader"
|
25
25
|
require_relative "mixin/convert_to_class_name"
|
26
|
-
require_relative "mixin/
|
26
|
+
require_relative "mixin/default_paths"
|
27
27
|
require_relative "knife/core/subcommand_loader"
|
28
28
|
require_relative "knife/core/ui"
|
29
29
|
require_relative "local_mode"
|
@@ -40,7 +40,7 @@ class Chef
|
|
40
40
|
Chef::HTTP::HTTPRequest.user_agent = "#{Chef::Dist::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
|
41
41
|
|
42
42
|
include Mixlib::CLI
|
43
|
-
include ChefUtils::DSL::
|
43
|
+
include ChefUtils::DSL::DefaultPaths
|
44
44
|
extend Chef::Mixin::ConvertToClassName
|
45
45
|
extend Forwardable
|
46
46
|
|
@@ -484,7 +484,7 @@ class Chef
|
|
484
484
|
unless respond_to?(:run)
|
485
485
|
ui.error "You need to add a #run method to your knife command before you can use it"
|
486
486
|
end
|
487
|
-
ENV["PATH"] =
|
487
|
+
ENV["PATH"] = default_paths if Chef::Config[:enforce_default_paths] || Chef::Config[:enforce_path_sanity]
|
488
488
|
maybe_setup_fips
|
489
489
|
Chef::LocalMode.with_server_connectivity do
|
490
490
|
run
|
data/lib/chef/knife/bootstrap.rb
CHANGED
@@ -480,7 +480,7 @@ class Chef
|
|
480
480
|
template = bootstrap_template
|
481
481
|
|
482
482
|
# Use the template directly if it's a path to an actual file
|
483
|
-
if File.
|
483
|
+
if File.exist?(template)
|
484
484
|
Chef::Log.trace("Using the specified bootstrap template: #{File.dirname(template)}")
|
485
485
|
return template
|
486
486
|
end
|
@@ -495,7 +495,7 @@ class Chef
|
|
495
495
|
|
496
496
|
template_file = Array(bootstrap_files).find do |bootstrap_template|
|
497
497
|
Chef::Log.trace("Looking for bootstrap template in #{File.dirname(bootstrap_template)}")
|
498
|
-
File.
|
498
|
+
File.exist?(bootstrap_template)
|
499
499
|
end
|
500
500
|
|
501
501
|
unless template_file
|
@@ -538,7 +538,7 @@ class Chef
|
|
538
538
|
end
|
539
539
|
|
540
540
|
def run
|
541
|
-
check_license
|
541
|
+
check_license if ChefConfig::Dist::ENFORCE_LICENSE
|
542
542
|
|
543
543
|
plugin_setup!
|
544
544
|
validate_name_args!
|
@@ -630,9 +630,7 @@ class Chef
|
|
630
630
|
raise
|
631
631
|
else
|
632
632
|
ui.warn("Failed to authenticate #{opts[:user]} to #{server_name} - trying password auth")
|
633
|
-
password = ui.ask("Enter password for #{opts[:user]}@#{server_name}:"
|
634
|
-
q.echo = false
|
635
|
-
end
|
633
|
+
password = ui.ask("Enter password for #{opts[:user]}@#{server_name}:", echo: false)
|
636
634
|
end
|
637
635
|
|
638
636
|
opts.merge! force_ssh_password_opts(password)
|
@@ -646,9 +644,7 @@ class Chef
|
|
646
644
|
raise
|
647
645
|
else
|
648
646
|
ui.warn("Failed to authenticate #{opts[:user]} to #{server_name} - trying password auth")
|
649
|
-
password = ui.ask("Enter password for #{opts[:user]}@#{server_name}:"
|
650
|
-
q.echo = false
|
651
|
-
end
|
647
|
+
password = ui.ask("Enter password for #{opts[:user]}@#{server_name}:", echo: false)
|
652
648
|
end
|
653
649
|
|
654
650
|
opts.merge! force_winrm_password_opts(password)
|
@@ -681,9 +677,7 @@ class Chef
|
|
681
677
|
retry
|
682
678
|
elsif config[:use_sudo_password] && (e.reason == :sudo_password_required || e.reason == :bad_sudo_password) && limit < 3
|
683
679
|
ui.warn("Failed to authenticate #{conn_options[:user]} to #{server_name} - #{e.message} \n sudo: #{limit} incorrect password attempt")
|
684
|
-
sudo_password = ui.ask("Enter sudo password for #{conn_options[:user]}@#{server_name}:"
|
685
|
-
q.echo = false
|
686
|
-
end
|
680
|
+
sudo_password = ui.ask("Enter sudo password for #{conn_options[:user]}@#{server_name}:", echo: false)
|
687
681
|
limit += 1
|
688
682
|
conn_options[:sudo_password] = sudo_password
|
689
683
|
|
@@ -62,6 +62,7 @@ class Chef
|
|
62
62
|
config_data.delete(:color)
|
63
63
|
# Only keep these if true, false is much less important because it's the default.
|
64
64
|
config_data.delete(:local_mode) unless config_data[:local_mode]
|
65
|
+
config_data.delete(:enforce_default_paths) unless config_data[:enforce_default_paths]
|
65
66
|
config_data.delete(:enforce_path_sanity) unless config_data[:enforce_path_sanity]
|
66
67
|
end
|
67
68
|
|
@@ -32,6 +32,10 @@ class Chef
|
|
32
32
|
description: "Ignore the current config.rb/knife.rb configuration.",
|
33
33
|
default: false
|
34
34
|
|
35
|
+
def configure_chef
|
36
|
+
apply_computed_config
|
37
|
+
end
|
38
|
+
|
35
39
|
def run
|
36
40
|
credentials_data = self.class.config_loader.parse_credentials_file
|
37
41
|
if credentials_data.nil? || credentials_data.empty?
|
@@ -72,7 +76,6 @@ class Chef
|
|
72
76
|
# Try to reset the config.
|
73
77
|
unless config[:ignore_knife_rb]
|
74
78
|
Chef::Config.reset
|
75
|
-
Chef::WorkstationConfigLoader.new(config[:config_file], Chef::Log, profile: config[:profile]).load
|
76
79
|
apply_computed_config
|
77
80
|
end
|
78
81
|
|
data/lib/chef/knife/configure.rb
CHANGED
@@ -27,6 +27,8 @@ class Chef
|
|
27
27
|
|
28
28
|
deps do
|
29
29
|
require_relative "../util/path_helper"
|
30
|
+
require_relative "client_create"
|
31
|
+
require_relative "user_create"
|
30
32
|
require "ohai" unless defined?(Ohai::System)
|
31
33
|
Chef::Knife::ClientCreate.load_deps
|
32
34
|
Chef::Knife::UserCreate.load_deps
|
@@ -92,7 +94,7 @@ class Chef
|
|
92
94
|
user_create = Chef::Knife::UserCreate.new
|
93
95
|
user_create.name_args = [ new_client_name ]
|
94
96
|
user_create.config[:user_password] = config[:user_password] ||
|
95
|
-
ui.ask("Please enter a password for the new user: "
|
97
|
+
ui.ask("Please enter a password for the new user: ", echo: false)
|
96
98
|
user_create.config[:admin] = true
|
97
99
|
user_create.config[:file] = new_client_key
|
98
100
|
user_create.config[:yes] = true
|
@@ -73,7 +73,7 @@ class Chef
|
|
73
73
|
manifest = cookbook.cookbook_manifest
|
74
74
|
|
75
75
|
basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
|
76
|
-
if File.
|
76
|
+
if File.exist?(basedir)
|
77
77
|
if config[:force]
|
78
78
|
Chef::Log.trace("Deleting #{basedir}")
|
79
79
|
FileUtils.rm_rf(basedir)
|
@@ -62,7 +62,7 @@ class Chef
|
|
62
62
|
def generate_metadata(cookbook)
|
63
63
|
Array(config[:cookbook_path]).reverse_each do |path|
|
64
64
|
file = File.expand_path(File.join(path, cookbook, "metadata.rb"))
|
65
|
-
if File.
|
65
|
+
if File.exist?(file)
|
66
66
|
generate_metadata_from_file(cookbook, file)
|
67
67
|
else
|
68
68
|
validate_metadata_json(path, cookbook)
|
@@ -34,10 +34,10 @@ class Chef
|
|
34
34
|
banner "knife cookbook upload [COOKBOOKS...] (options)"
|
35
35
|
|
36
36
|
option :cookbook_path,
|
37
|
-
short: "-o PATH:PATH",
|
38
|
-
long: "--cookbook-path PATH:PATH",
|
39
|
-
description: "A
|
40
|
-
proc: lambda { |o| o.split(
|
37
|
+
short: "-o 'PATH:PATH'",
|
38
|
+
long: "--cookbook-path 'PATH:PATH'",
|
39
|
+
description: "A delimited path to search for cookbooks. On Unix the delimiter is ':', on Windows it is ';'.",
|
40
|
+
proc: lambda { |o| o.split(File::PATH_SEPARATOR) }
|
41
41
|
|
42
42
|
option :freeze,
|
43
43
|
long: "--freeze",
|
@@ -107,8 +107,7 @@ class Chef
|
|
107
107
|
cookbook_path = config[:cookbook_path].respond_to?(:join) ? config[:cookbook_path].join(", ") : config[:cookbook_path]
|
108
108
|
ui.warn("Could not find any cookbooks in your cookbook path: '#{File.expand_path(cookbook_path)}'. Use --cookbook-path to specify the desired path.")
|
109
109
|
else
|
110
|
-
|
111
|
-
tmp_cl = Chef::CookbookLoader.copy_to_tmp_dir_from_array(cookbooks)
|
110
|
+
Chef::CookbookLoader.copy_to_tmp_dir_from_array(cookbooks) do |tmp_cl|
|
112
111
|
tmp_cl.load_cookbooks
|
113
112
|
tmp_cl.compile_metadata
|
114
113
|
tmp_cl.freeze_versions if config[:freeze]
|
@@ -127,28 +126,26 @@ class Chef
|
|
127
126
|
ui.error("Uploading of some of the cookbooks must be failed. Remove cookbook whose version is frozen from your cookbooks repo OR use --force option.")
|
128
127
|
upload_failures += 1
|
129
128
|
rescue SystemExit => e
|
130
|
-
tmp_cl.unlink!
|
131
129
|
raise exit e.status
|
132
130
|
end
|
133
131
|
ui.info("Uploaded all cookbooks.") if upload_failures == 0
|
134
132
|
end
|
135
133
|
else
|
136
134
|
tmp_cl.each do |cookbook_name, cookbook|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
135
|
+
|
136
|
+
upload([cookbook], justify_width)
|
137
|
+
upload_ok += 1
|
138
|
+
rescue Exceptions::CookbookNotFoundInRepo => e
|
139
|
+
upload_failures += 1
|
140
|
+
ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
|
141
|
+
Log.debug(e)
|
142
|
+
upload_failures += 1
|
143
|
+
rescue Exceptions::CookbookFrozen
|
144
|
+
ui.warn("Not updating version constraints for #{cookbook_name} in the environment as the cookbook is frozen.")
|
145
|
+
upload_failures += 1
|
146
|
+
rescue SystemExit => e
|
147
|
+
raise exit e.status
|
148
|
+
|
152
149
|
end
|
153
150
|
|
154
151
|
if upload_failures == 0
|
@@ -164,8 +161,6 @@ class Chef
|
|
164
161
|
unless version_constraints_to_update.empty?
|
165
162
|
update_version_constraints(version_constraints_to_update) if config[:environment]
|
166
163
|
end
|
167
|
-
ensure
|
168
|
-
tmp_cl.unlink!
|
169
164
|
end
|
170
165
|
end
|
171
166
|
end
|
@@ -177,17 +172,17 @@ class Chef
|
|
177
172
|
else
|
178
173
|
upload_set = {}
|
179
174
|
@name_args.each do |cookbook_name|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
end
|
175
|
+
|
176
|
+
unless upload_set.key?(cookbook_name)
|
177
|
+
upload_set[cookbook_name] = cookbook_repo[cookbook_name]
|
178
|
+
if config[:depends]
|
179
|
+
upload_set[cookbook_name].metadata.dependencies.each_key { |dep| @name_args << dep }
|
186
180
|
end
|
187
|
-
rescue Exceptions::CookbookNotFoundInRepo => e
|
188
|
-
ui.error(e.message)
|
189
|
-
Log.debug(e)
|
190
181
|
end
|
182
|
+
rescue Exceptions::CookbookNotFoundInRepo => e
|
183
|
+
ui.error(e.message)
|
184
|
+
Log.debug(e)
|
185
|
+
|
191
186
|
end
|
192
187
|
upload_set
|
193
188
|
end
|