chef 16.4.41 → 16.5.64
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 +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef.gemspec +2 -1
- data/lib/chef/application.rb +18 -16
- data/lib/chef/application/apply.rb +12 -7
- data/lib/chef/application/base.rb +26 -23
- data/lib/chef/application/client.rb +10 -4
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +14 -14
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +10 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +6 -5
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +4 -4
- data/lib/chef/file_access_control/windows.rb +5 -1
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/http.rb +6 -4
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +16 -14
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +16 -1
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/deep_merge.rb +0 -12
- data/lib/chef/mixin/openssl_helper.rb +1 -4
- data/lib/chef/mixin/template.rb +2 -2
- data/lib/chef/mixin/uris.rb +2 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/provider.rb +0 -4
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +1 -1
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package/rubygems.rb +21 -18
- data/lib/chef/provider/package/snap.rb +0 -1
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +2 -6
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/mac.rb +1 -1
- data/lib/chef/provider/windows_task.rb +1 -2
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +1 -1
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_cron.rb +32 -25
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +24 -17
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +148 -4
- data/lib/chef/resource/chef_sleep.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/cron_d.rb +0 -1
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +6 -6
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +5 -5
- data/lib/chef/resource/hostname.rb +2 -2
- data/lib/chef/resource/launchd.rb +2 -1
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +27 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
- data/lib/chef/resource/openssl_x509_crl.rb +19 -10
- data/lib/chef/resource/openssl_x509_request.rb +14 -16
- data/lib/chef/resource/osx_profile.rb +77 -13
- data/lib/chef/resource/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +5 -5
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +1 -5
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +10 -3
- data/lib/chef/resource/windows_certificate.rb +6 -4
- data/lib/chef/resource/windows_firewall_profile.rb +22 -20
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_printer.rb +5 -3
- data/lib/chef/resource/windows_printer_port.rb +6 -4
- data/lib/chef/resource/windows_user_privilege.rb +53 -54
- data/lib/chef/resource/windows_workgroup.rb +3 -3
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resources.rb +3 -1
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/search/query.rb +4 -5
- data/lib/chef/shell.rb +31 -26
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/diff.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +3 -1
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/shef-config.rb +1 -1
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_task_spec.rb +13 -13
- data/spec/functional/version_spec.rb +3 -3
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
- data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
- data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +6 -3
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +16 -34
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +0 -113
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +6 -6
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/node/immutable_collections_spec.rb +2 -2
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +67 -1
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +0 -2
- metadata +41 -17
- data/lib/chef/dist.rb +0 -68
- data/spec/integration/knife/config_get_profile_spec.rb +0 -114
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
require "uri" unless defined?(URI)
|
|
19
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
19
20
|
|
|
20
21
|
class Chef
|
|
21
22
|
class DataCollector
|
|
@@ -46,14 +47,14 @@ class Chef
|
|
|
46
47
|
return unless output_locations
|
|
47
48
|
|
|
48
49
|
# but deliberately setting an empty output_location we consider to be an error (XXX: but should we?)
|
|
49
|
-
|
|
50
|
+
unless valid_hash_with_keys?(output_locations, :urls, :files)
|
|
50
51
|
raise Chef::Exceptions::ConfigurationError,
|
|
51
52
|
"Chef::Config[:data_collector][:output_locations] is empty. Please supply an hash of valid URLs and / or local file paths."
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
# loop through all the types and locations and validate each one-by-one
|
|
55
56
|
output_locations.each do |type, locations|
|
|
56
|
-
locations.each do |location|
|
|
57
|
+
Array(locations).each do |location|
|
|
57
58
|
validate_url!(location) if type == :urls
|
|
58
59
|
validate_file!(location) if type == :files
|
|
59
60
|
end
|
|
@@ -86,15 +87,20 @@ class Chef
|
|
|
86
87
|
false
|
|
87
88
|
when running_mode == :client && Chef::Config[:data_collector][:token]
|
|
88
89
|
Chef::Log.warn("Data collector token authentication is not recommended for client-server mode. " \
|
|
89
|
-
"Please upgrade #{
|
|
90
|
+
"Please upgrade #{ChefUtils::Dist::Server::PRODUCT} to 12.11 or later and remove the token from your config file " \
|
|
90
91
|
"to use key based authentication instead")
|
|
91
92
|
true
|
|
92
|
-
when Chef::Config[:data_collector][:output_locations] && Chef::Config[:data_collector][:output_locations]
|
|
93
|
+
when Chef::Config[:data_collector][:output_locations] && !valid_hash_with_keys?(Chef::Config[:data_collector][:output_locations], :urls)
|
|
93
94
|
# we can run fine to a file without a token, even in solo mode.
|
|
95
|
+
unless valid_hash_with_keys?(Chef::Config[:data_collector][:output_locations], :files)
|
|
96
|
+
raise Chef::Exceptions::ConfigurationError,
|
|
97
|
+
"Chef::Config[:data_collector][:output_locations] is empty. Please supply an hash of valid URLs and / or local file paths."
|
|
98
|
+
end
|
|
99
|
+
|
|
94
100
|
true
|
|
95
101
|
when running_mode == :solo && !Chef::Config[:data_collector][:token]
|
|
96
102
|
# we are in solo mode and are not logging to a file, so must have a token
|
|
97
|
-
Chef::Log.trace("Data collector token must be configured to use #{
|
|
103
|
+
Chef::Log.trace("Data collector token must be configured to use #{ChefUtils::Dist::Automate::PRODUCT} data collector with #{ChefUtils::Dist::Solo::PRODUCT}")
|
|
98
104
|
false
|
|
99
105
|
else
|
|
100
106
|
true
|
|
@@ -105,16 +111,10 @@ class Chef
|
|
|
105
111
|
|
|
106
112
|
# validate an output_location file
|
|
107
113
|
def validate_file!(file)
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
return true if Chef::Config.path_accessible?(File.expand_path(file))
|
|
115
|
+
|
|
110
116
|
raise Chef::Exceptions::ConfigurationError,
|
|
111
117
|
"Chef::Config[:data_collector][:output_locations][:files] contains the location #{file}, which is a non existent file path."
|
|
112
|
-
rescue Errno::EACCES
|
|
113
|
-
raise Chef::Exceptions::ConfigurationError,
|
|
114
|
-
"Chef::Config[:data_collector][:output_locations][:files] contains the location #{file}, which cannot be written to by Chef."
|
|
115
|
-
rescue Exception => e
|
|
116
|
-
raise Chef::Exceptions::ConfigurationError,
|
|
117
|
-
"Chef::Config[:data_collector][:output_locations][:files] contains the location #{file}, which is invalid: #{e.message}."
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
# validate an output_location url
|
|
@@ -125,6 +125,15 @@ class Chef
|
|
|
125
125
|
"Chef::Config[:data_collector][:output_locations][:urls] contains the url #{url} which is not valid."
|
|
126
126
|
end
|
|
127
127
|
|
|
128
|
+
# Validate the hash contains at least one of the given keys.
|
|
129
|
+
#
|
|
130
|
+
# @param hash [Hash] the hash to be validated.
|
|
131
|
+
# @param keys [Array] an array of keys to check existence of in the hash.
|
|
132
|
+
# @return [Boolean] true if the hash contains any of the given keys.
|
|
133
|
+
#
|
|
134
|
+
def valid_hash_with_keys?(hash, *keys)
|
|
135
|
+
hash.is_a?(Hash) && keys.any? { |k| hash.key?(k) }
|
|
136
|
+
end
|
|
128
137
|
end
|
|
129
138
|
end
|
|
130
139
|
end
|
|
@@ -60,8 +60,8 @@ class Chef
|
|
|
60
60
|
"cookbooks" => ( node && node["cookbooks"] ) || {},
|
|
61
61
|
"policy_name" => node&.policy_name,
|
|
62
62
|
"policy_group" => node&.policy_group,
|
|
63
|
-
"start_time" => run_status
|
|
64
|
-
"end_time" => run_status
|
|
63
|
+
"start_time" => run_status&.start_time&.utc&.iso8601,
|
|
64
|
+
"end_time" => run_status&.end_time&.utc&.iso8601,
|
|
65
65
|
"source" => solo_run? ? "chef_solo" : "chef_client",
|
|
66
66
|
"status" => status,
|
|
67
67
|
"total_resource_count" => all_action_records(action_collection).count,
|
|
@@ -51,7 +51,7 @@ class Chef
|
|
|
51
51
|
"organization_name" => organization,
|
|
52
52
|
"run_id" => run_status&.run_id,
|
|
53
53
|
"source" => solo_run? ? "chef_solo" : "chef_client",
|
|
54
|
-
"start_time" => run_status
|
|
54
|
+
"start_time" => run_status&.start_time&.utc&.iso8601,
|
|
55
55
|
}
|
|
56
56
|
end
|
|
57
57
|
end
|
data/lib/chef/deprecated.rb
CHANGED
|
@@ -21,12 +21,12 @@ class Chef
|
|
|
21
21
|
module Warnings
|
|
22
22
|
|
|
23
23
|
require_relative "../version"
|
|
24
|
-
|
|
24
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
25
25
|
|
|
26
26
|
def add_deprecation_warnings_for(method_names)
|
|
27
27
|
method_names.each do |name|
|
|
28
28
|
define_method(name) do |*args|
|
|
29
|
-
message = "Method '#{name}' of '#{self.class}' is deprecated. It will be removed in #{
|
|
29
|
+
message = "Method '#{name}' of '#{self.class}' is deprecated. It will be removed in #{ChefUtils::Dist::Infra::PRODUCT} #{Chef::VERSION.to_i.next}."
|
|
30
30
|
message << " Please update your cookbooks accordingly."
|
|
31
31
|
Chef.deprecated(:internal_api, message)
|
|
32
32
|
super(*args)
|
data/lib/chef/digester.rb
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
# limitations under the License.
|
|
19
19
|
#
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
autoload :OpenSSL, "openssl"
|
|
22
|
+
autoload :Digest, "digest"
|
|
23
23
|
require "singleton" unless defined?(Singleton)
|
|
24
24
|
|
|
25
25
|
class Chef
|
data/lib/chef/dsl/chef_vault.rb
CHANGED
data/lib/chef/dsl/data_query.rb
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require_relative "../search/query"
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Chef.autoload :DataBag, File.expand_path("../data_bag", __dir__)
|
|
21
|
+
Chef.autoload :DataBagItem, File.expand_path("../data_bag_item", __dir__)
|
|
22
22
|
require_relative "../encrypted_data_bag_item"
|
|
23
23
|
require_relative "../encrypted_data_bag_item/check_encrypted"
|
|
24
24
|
|
|
@@ -17,11 +17,9 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require_relative "config"
|
|
20
|
-
|
|
20
|
+
Chef.autoload :DataBagItem, File.expand_path("data_bag_item", __dir__)
|
|
21
21
|
require_relative "encrypted_data_bag_item/decryptor"
|
|
22
22
|
require_relative "encrypted_data_bag_item/encryptor"
|
|
23
|
-
require_relative "dist"
|
|
24
|
-
require "open-uri"
|
|
25
23
|
|
|
26
24
|
# An EncryptedDataBagItem represents a read-only data bag item where
|
|
27
25
|
# all values, except for the value associated with the id key, have
|
|
@@ -129,9 +127,10 @@ class Chef::EncryptedDataBagItem
|
|
|
129
127
|
end
|
|
130
128
|
|
|
131
129
|
def self.load_secret(path = nil)
|
|
130
|
+
require "open-uri" unless defined?(OpenURI)
|
|
132
131
|
path ||= Chef::Config[:encrypted_data_bag_secret]
|
|
133
132
|
unless path
|
|
134
|
-
raise ArgumentError, "No secret specified and no secret found at #{Chef::Config.platform_specific_path(
|
|
133
|
+
raise ArgumentError, "No secret specified and no secret found at #{Chef::Config.platform_specific_path(ChefConfig::Config.etc_chef_dir) + "/encrypted_data_bag_secret"}"
|
|
135
134
|
end
|
|
136
135
|
|
|
137
136
|
secret = case path
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
autoload :YAML, "yaml"
|
|
20
20
|
require_relative "../json_compat"
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
autoload :OpenSSL, "openssl"
|
|
22
|
+
autoload :Base64, "base64"
|
|
23
23
|
require "digest/sha2" unless defined?(Digest::SHA2)
|
|
24
24
|
require_relative "../encrypted_data_bag_item"
|
|
25
25
|
require_relative "unsupported_encrypted_data_bag_item_format"
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
autoload :Base64, "base64"
|
|
20
20
|
require "digest/sha2" unless defined?(Digest::SHA2)
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
autoload :OpenSSL, "openssl"
|
|
22
|
+
autoload :FFI_Yajl, "ffi_yajl"
|
|
23
23
|
require_relative "../encrypted_data_bag_item"
|
|
24
24
|
require_relative "unsupported_encrypted_data_bag_item_format"
|
|
25
25
|
require_relative "encryption_failure"
|
data/lib/chef/environment.rb
CHANGED
|
@@ -25,7 +25,7 @@ require_relative "mixin/params_validate"
|
|
|
25
25
|
require_relative "mixin/from_file"
|
|
26
26
|
require_relative "version_constraint"
|
|
27
27
|
require_relative "server_api"
|
|
28
|
-
|
|
28
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
29
29
|
|
|
30
30
|
class Chef
|
|
31
31
|
class Environment
|
|
@@ -308,7 +308,7 @@ class Chef
|
|
|
308
308
|
def self.validate_cookbook_version(version)
|
|
309
309
|
if Chef::Config[:solo_legacy_mode]
|
|
310
310
|
raise Chef::Exceptions::IllegalVersionConstraint,
|
|
311
|
-
"Environment cookbook version constraints not allowed in #{
|
|
311
|
+
"Environment cookbook version constraints not allowed in #{ChefUtils::Dist::Solo::PRODUCT}"
|
|
312
312
|
else
|
|
313
313
|
Chef::VersionConstraint.new version
|
|
314
314
|
true
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
require_relative "base"
|
|
20
20
|
require_relative "../platform/query_helpers"
|
|
21
21
|
require_relative "../win32/eventlog"
|
|
22
|
-
|
|
22
|
+
require "chef-utils" unless defined?(ChefUtils)
|
|
23
23
|
|
|
24
24
|
class Chef
|
|
25
25
|
module EventLoggers
|
|
@@ -36,7 +36,7 @@ class Chef
|
|
|
36
36
|
LOG_CATEGORY_ID = 11001
|
|
37
37
|
|
|
38
38
|
# Since we must install the event logger, this is not really configurable
|
|
39
|
-
SOURCE =
|
|
39
|
+
SOURCE = ChefUtils::Dist::Infra::SHORT.freeze
|
|
40
40
|
|
|
41
41
|
def self.available?
|
|
42
42
|
ChefUtils.windows?
|
data/lib/chef/exceptions.rb
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# limitations under the License.
|
|
19
19
|
|
|
20
20
|
require "chef-config/exceptions"
|
|
21
|
-
|
|
21
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
22
22
|
require_relative "constants"
|
|
23
23
|
|
|
24
24
|
class Chef
|
|
@@ -301,7 +301,7 @@ class Chef
|
|
|
301
301
|
|
|
302
302
|
def client_run_failure(exception)
|
|
303
303
|
set_backtrace(exception.backtrace)
|
|
304
|
-
@all_failures << [ "#{
|
|
304
|
+
@all_failures << [ "#{ChefUtils::Dist::Infra::PRODUCT} run", exception ]
|
|
305
305
|
end
|
|
306
306
|
|
|
307
307
|
def notification_failure(exception)
|
|
@@ -402,7 +402,7 @@ class Chef
|
|
|
402
402
|
def initialize(response_length, content_length)
|
|
403
403
|
super <<~EOF
|
|
404
404
|
Response body length #{response_length} does not match HTTP Content-Length header #{content_length}.
|
|
405
|
-
This error is most often caused by network issues (proxies, etc) outside of #{
|
|
405
|
+
This error is most often caused by network issues (proxies, etc) outside of #{ChefUtils::Dist::Infra::CLIENT}.
|
|
406
406
|
EOF
|
|
407
407
|
end
|
|
408
408
|
end
|
|
@@ -477,7 +477,7 @@ class Chef
|
|
|
477
477
|
class CookbookChefVersionMismatch < RuntimeError
|
|
478
478
|
def initialize(chef_version, cookbook_name, cookbook_version, *constraints)
|
|
479
479
|
constraint_str = constraints.map { |c| c.requirement.as_list.to_s }.join(", ")
|
|
480
|
-
super "Cookbook '#{cookbook_name}' version '#{cookbook_version}' depends on #{
|
|
480
|
+
super "Cookbook '#{cookbook_name}' version '#{cookbook_version}' depends on #{ChefUtils::Dist::Infra::PRODUCT} version #{constraint_str}, but the running #{ChefUtils::Dist::Infra::PRODUCT} version is #{chef_version}"
|
|
481
481
|
end
|
|
482
482
|
end
|
|
483
483
|
|
|
@@ -112,7 +112,11 @@ class Chef
|
|
|
112
112
|
|
|
113
113
|
def get_sid(value)
|
|
114
114
|
if value.is_a?(String)
|
|
115
|
-
|
|
115
|
+
begin
|
|
116
|
+
Security.convert_string_sid_to_sid(value)
|
|
117
|
+
rescue Chef::Exceptions::Win32APIError
|
|
118
|
+
SID.from_account(value)
|
|
119
|
+
end
|
|
116
120
|
elsif value.is_a?(SID)
|
|
117
121
|
value
|
|
118
122
|
else
|
data/lib/chef/formatters/doc.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative "base"
|
|
2
2
|
require_relative "../config"
|
|
3
|
-
|
|
3
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
4
4
|
|
|
5
5
|
class Chef
|
|
6
6
|
module Formatters
|
|
@@ -41,7 +41,8 @@ class Chef
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def run_start(version, run_status)
|
|
44
|
-
puts_line "Starting #{
|
|
44
|
+
puts_line "Starting #{ChefUtils::Dist::Infra::PRODUCT}, version #{version}"
|
|
45
|
+
puts_line "Patents: #{ChefUtils::Dist::Org::PATENTS}"
|
|
45
46
|
puts_line "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
|
|
46
47
|
puts_line "OpenSSL FIPS 140 mode enabled" if Chef::Config[:fips]
|
|
47
48
|
end
|
|
@@ -77,18 +78,18 @@ class Chef
|
|
|
77
78
|
puts_line ""
|
|
78
79
|
end
|
|
79
80
|
if Chef::Config[:why_run]
|
|
80
|
-
puts_line "#{
|
|
81
|
+
puts_line "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources would have been updated"
|
|
81
82
|
else
|
|
82
|
-
puts_line "#{
|
|
83
|
+
puts_line "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources}/#{total_resources} resources updated in #{pretty_elapsed_time}"
|
|
83
84
|
end
|
|
84
85
|
end
|
|
85
86
|
|
|
86
87
|
def run_failed(exception)
|
|
87
88
|
@end_time = Time.now
|
|
88
89
|
if Chef::Config[:why_run]
|
|
89
|
-
puts_line "#{
|
|
90
|
+
puts_line "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources} resources would have been updated"
|
|
90
91
|
else
|
|
91
|
-
puts_line "#{
|
|
92
|
+
puts_line "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources} resources updated in #{pretty_elapsed_time}"
|
|
92
93
|
end
|
|
93
94
|
end
|
|
94
95
|
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require_relative "../../http/authenticator"
|
|
20
|
-
|
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
21
|
+
require "timeout" unless defined?(Timeout)
|
|
21
22
|
|
|
22
23
|
class Chef
|
|
23
24
|
module Formatters
|
|
@@ -40,7 +41,7 @@ class Chef
|
|
|
40
41
|
def describe_eof_error(error_description)
|
|
41
42
|
error_description.section("Authentication Error:", <<~E)
|
|
42
43
|
Received an EOF on transport socket. This almost always indicates a network
|
|
43
|
-
error external to #{
|
|
44
|
+
error external to #{ChefUtils::Dist::Infra::CLIENT}. Some causes include:
|
|
44
45
|
|
|
45
46
|
- Blocking ICMP Dest Unreachable (breaking Path MTU Discovery)
|
|
46
47
|
- IPsec or VPN tunnelling / TCP Encapsulation MTU issues
|
|
@@ -114,8 +115,8 @@ class Chef
|
|
|
114
115
|
error_description.section("Incompatible server API version:", <<~E)
|
|
115
116
|
This version of the API that this request specified is not supported by the server you sent this request to.
|
|
116
117
|
The server supports a min API version of #{min_server_version} and a max API version of #{max_server_version}.
|
|
117
|
-
#{
|
|
118
|
-
Please either update your #{
|
|
118
|
+
#{ChefUtils::Dist::Infra::PRODUCT} just made a request with an API version of #{client_api_version}.
|
|
119
|
+
Please either update your #{ChefUtils::Dist::Infra::PRODUCT} or the server to be a compatible set.
|
|
119
120
|
E
|
|
120
121
|
else
|
|
121
122
|
describe_http_error(error_description)
|
|
@@ -130,7 +131,7 @@ class Chef
|
|
|
130
131
|
end
|
|
131
132
|
|
|
132
133
|
def describe_503_error(error_description)
|
|
133
|
-
error_description.section("Server Unavailable", "The #{
|
|
134
|
+
error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
|
|
134
135
|
error_description.section("Server Response:", format_rest_error)
|
|
135
136
|
end
|
|
136
137
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require_relative "api_error_formatting"
|
|
20
|
-
|
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
21
21
|
|
|
22
22
|
class Chef
|
|
23
23
|
module Formatters
|
|
@@ -46,7 +46,7 @@ class Chef
|
|
|
46
46
|
when Chef::Exceptions::PrivateKeyMissing
|
|
47
47
|
error_description.section("Private Key Not Found:", <<~E)
|
|
48
48
|
Your private key could not be loaded. If the key file exists, ensure that it is
|
|
49
|
-
readable by #{
|
|
49
|
+
readable by #{ChefUtils::Dist::Infra::PRODUCT}.
|
|
50
50
|
E
|
|
51
51
|
error_description.section("Relevant Config Settings:", <<~E)
|
|
52
52
|
client_key "#{api_key}"
|
|
@@ -99,7 +99,7 @@ class Chef
|
|
|
99
99
|
# redirect.
|
|
100
100
|
def describe_404_error(error_description)
|
|
101
101
|
error_description.section("Resource Not Found:", <<~E)
|
|
102
|
-
The #{
|
|
102
|
+
The #{ChefUtils::Dist::Server::PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url is incorrect.
|
|
103
103
|
E
|
|
104
104
|
error_description.section("Relevant Config Settings:", <<~E)
|
|
105
105
|
chef_server_url "#{server_url}"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
2
2
|
|
|
3
3
|
class Chef
|
|
4
4
|
module Formatters
|
|
@@ -28,7 +28,7 @@ class Chef
|
|
|
28
28
|
humanize_http_exception(error_description)
|
|
29
29
|
when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
|
|
30
30
|
error_description.section("Network Error:", <<~E)
|
|
31
|
-
There was a network error connecting to the #{
|
|
31
|
+
There was a network error connecting to the #{ChefUtils::Dist::Server::PRODUCT}:
|
|
32
32
|
#{exception.message}
|
|
33
33
|
E
|
|
34
34
|
error_description.section("Relevant Config Settings:", <<~E)
|
|
@@ -39,14 +39,14 @@ class Chef
|
|
|
39
39
|
when Chef::Exceptions::PrivateKeyMissing
|
|
40
40
|
error_description.section("Private Key Not Found:", <<~E)
|
|
41
41
|
Your private key could not be loaded. If the key file exists, ensure that it is
|
|
42
|
-
readable by #{
|
|
42
|
+
readable by #{ChefUtils::Dist::Infra::PRODUCT}.
|
|
43
43
|
E
|
|
44
44
|
error_description.section("Relevant Config Settings:", <<~E)
|
|
45
45
|
validation_key "#{api_key}"
|
|
46
46
|
E
|
|
47
47
|
when Chef::Exceptions::InvalidRedirect
|
|
48
48
|
error_description.section("Invalid Redirect:", <<~E)
|
|
49
|
-
Change your #{
|
|
49
|
+
Change your #{ChefUtils::Dist::Server::PRODUCT} location in client.rb to the #{ChefUtils::Dist::Server::PRODUCT}'s FQDN to avoid unwanted redirections.
|
|
50
50
|
E
|
|
51
51
|
when EOFError
|
|
52
52
|
describe_eof_error(error_description)
|
|
@@ -61,13 +61,13 @@ class Chef
|
|
|
61
61
|
when Net::HTTPUnauthorized
|
|
62
62
|
if clock_skew?
|
|
63
63
|
error_description.section("Authentication Error:", <<~E)
|
|
64
|
-
Failed to authenticate to the #{
|
|
64
|
+
Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
|
|
65
65
|
The request failed because your clock has drifted by more than 15 minutes.
|
|
66
66
|
Syncing your clock to an NTP Time source should resolve the issue.
|
|
67
67
|
E
|
|
68
68
|
else
|
|
69
69
|
error_description.section("Authentication Error:", <<~E)
|
|
70
|
-
Failed to authenticate to the #{
|
|
70
|
+
Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
|
|
71
71
|
E
|
|
72
72
|
|
|
73
73
|
error_description.section("Server Response:", format_rest_error)
|
|
@@ -81,7 +81,7 @@ class Chef
|
|
|
81
81
|
end
|
|
82
82
|
when Net::HTTPForbidden
|
|
83
83
|
error_description.section("Authorization Error:", <<~E)
|
|
84
|
-
Your validation client is not authorized to create the client for this node on the #{
|
|
84
|
+
Your validation client is not authorized to create the client for this node on the #{ChefUtils::Dist::Server::PRODUCT} (HTTP 403).
|
|
85
85
|
E
|
|
86
86
|
error_description.section("Possible Causes:", <<~E)
|
|
87
87
|
* There may already be a client named "#{config[:node_name]}"
|
|
@@ -94,7 +94,7 @@ class Chef
|
|
|
94
94
|
error_description.section("Server Response:", format_rest_error)
|
|
95
95
|
when Net::HTTPNotFound
|
|
96
96
|
error_description.section("Resource Not Found:", <<~E)
|
|
97
|
-
The #{
|
|
97
|
+
The #{ChefUtils::Dist::Server::PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url configuration is incorrect.
|
|
98
98
|
E
|
|
99
99
|
error_description.section("Relevant Config Settings:", <<~E)
|
|
100
100
|
chef_server_url "#{server_url}"
|
|
@@ -107,7 +107,7 @@ class Chef
|
|
|
107
107
|
E
|
|
108
108
|
error_description.section("Server Response:", format_rest_error)
|
|
109
109
|
when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
|
|
110
|
-
error_description.section("Server Unavailable", "The #{
|
|
110
|
+
error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
|
|
111
111
|
error_description.section("Server Response:", format_rest_error)
|
|
112
112
|
else
|
|
113
113
|
error_description.section("Unexpected API Request Failure:", format_rest_error)
|