chef 12.4.0.rc.0-universal-mingw32 → 12.4.0.rc.2-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/Rakefile +12 -1
- data/lib/chef/api_client.rb +130 -26
- data/lib/chef/application.rb +0 -1
- data/lib/chef/application/client.rb +8 -19
- data/lib/chef/audit/audit_reporter.rb +12 -7
- data/lib/chef/audit/logger.rb +36 -0
- data/lib/chef/audit/runner.rb +4 -2
- data/lib/chef/chef_class.rb +62 -11
- data/lib/chef/client.rb +587 -207
- data/lib/chef/config.rb +0 -1
- data/lib/chef/dsl/recipe.rb +45 -56
- data/lib/chef/dsl/resources.rb +3 -2
- data/lib/chef/event_dispatch/base.rb +7 -2
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_content_management/deploy/mv_windows.rb +16 -6
- data/lib/chef/formatters/doc.rb +15 -7
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +10 -7
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +2 -0
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +4 -1
- data/lib/chef/http/authenticator.rb +7 -2
- data/lib/chef/knife.rb +16 -4
- data/lib/chef/knife/client_create.rb +55 -31
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/osc_user_create.rb +97 -0
- data/lib/chef/knife/osc_user_delete.rb +51 -0
- data/lib/chef/knife/osc_user_edit.rb +58 -0
- data/lib/chef/knife/osc_user_list.rb +47 -0
- data/lib/chef/knife/osc_user_reregister.rb +64 -0
- data/lib/chef/knife/osc_user_show.rb +54 -0
- data/lib/chef/knife/user_create.rb +95 -36
- data/lib/chef/knife/user_delete.rb +52 -2
- data/lib/chef/knife/user_edit.rb +37 -7
- data/lib/chef/knife/user_list.rb +3 -0
- data/lib/chef/knife/user_reregister.rb +39 -8
- data/lib/chef/knife/user_show.rb +30 -1
- data/lib/chef/mixin/api_version_request_handling.rb +66 -0
- data/lib/chef/mixin/convert_to_class_name.rb +10 -4
- data/lib/chef/mixin/deprecation.rb +24 -0
- data/lib/chef/mixin/powershell_out.rb +98 -0
- data/lib/chef/mixin/provides.rb +5 -18
- data/lib/chef/mixin/uris.rb +11 -0
- data/lib/chef/mixin/windows_architecture_helper.rb +5 -2
- data/lib/chef/mixin/windows_env_helper.rb +11 -2
- data/lib/chef/node_map.rb +130 -75
- data/lib/chef/osc_user.rb +194 -0
- data/lib/chef/platform/provider_mapping.rb +2 -269
- data/lib/chef/platform/provider_priority_map.rb +6 -69
- data/lib/chef/platform/query_helpers.rb +5 -0
- data/lib/chef/platform/resource_priority_map.rb +12 -15
- data/lib/chef/policy_builder/policyfile.rb +1 -0
- data/lib/chef/provider.rb +19 -0
- data/lib/chef/provider/directory.rb +3 -0
- data/lib/chef/provider/dsc_resource.rb +8 -1
- data/lib/chef/provider/file.rb +1 -0
- data/lib/chef/provider/group/aix.rb +1 -0
- data/lib/chef/provider/group/dscl.rb +1 -1
- data/lib/chef/provider/group/gpasswd.rb +1 -0
- data/lib/chef/provider/group/groupmod.rb +1 -1
- data/lib/chef/provider/group/pw.rb +1 -0
- data/lib/chef/provider/group/suse.rb +2 -0
- data/lib/chef/provider/group/usermod.rb +2 -1
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +2 -0
- data/lib/chef/provider/ifconfig/aix.rb +1 -0
- data/lib/chef/provider/ifconfig/debian.rb +2 -0
- data/lib/chef/provider/ifconfig/redhat.rb +1 -0
- data/lib/chef/provider/lwrp_base.rb +4 -0
- data/lib/chef/provider/mount.rb +0 -1
- data/lib/chef/provider/mount/aix.rb +1 -0
- data/lib/chef/provider/mount/mount.rb +2 -0
- data/lib/chef/provider/mount/solaris.rb +2 -0
- data/lib/chef/provider/package.rb +55 -0
- data/lib/chef/provider/package/aix.rb +7 -7
- data/lib/chef/provider/package/apt.rb +3 -3
- data/lib/chef/provider/package/dpkg.rb +4 -4
- data/lib/chef/provider/package/easy_install.rb +5 -5
- data/lib/chef/provider/package/freebsd/base.rb +2 -2
- data/lib/chef/provider/package/freebsd/pkg.rb +6 -6
- data/lib/chef/provider/package/freebsd/pkgng.rb +5 -5
- data/lib/chef/provider/package/freebsd/port.rb +4 -4
- data/lib/chef/provider/package/homebrew.rb +2 -2
- data/lib/chef/provider/package/ips.rb +4 -4
- data/lib/chef/provider/package/macports.rb +5 -6
- data/lib/chef/provider/package/openbsd.rb +4 -5
- data/lib/chef/provider/package/pacman.rb +4 -4
- data/lib/chef/provider/package/portage.rb +2 -0
- data/lib/chef/provider/package/rpm.rb +7 -8
- data/lib/chef/provider/package/rubygems.rb +5 -12
- data/lib/chef/provider/package/smartos.rb +4 -4
- data/lib/chef/provider/package/solaris.rb +7 -7
- data/lib/chef/provider/package/windows/msi.rb +1 -1
- data/lib/chef/provider/package/yum.rb +4 -6
- data/lib/chef/provider/package/zypper.rb +16 -14
- data/lib/chef/provider/powershell_script.rb +129 -47
- data/lib/chef/provider/remote_file/content.rb +4 -1
- data/lib/chef/provider/remote_file/local_file.rb +10 -4
- data/lib/chef/provider/service.rb +44 -0
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/init.rb +1 -0
- data/lib/chef/provider/service/macosx.rb +1 -1
- data/lib/chef/provider/service/windows.rb +0 -1
- data/lib/chef/provider/user.rb +1 -1
- data/lib/chef/provider/user/aix.rb +3 -2
- data/lib/chef/provider/user/pw.rb +1 -0
- data/lib/chef/provider/user/solaris.rb +2 -0
- data/lib/chef/provider/user/useradd.rb +1 -0
- data/lib/chef/provider_resolver.rb +87 -134
- data/lib/chef/resource.rb +274 -68
- data/lib/chef/resource/apt_package.rb +0 -2
- data/lib/chef/resource/bash.rb +0 -2
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +0 -7
- data/lib/chef/resource/breakpoint.rb +3 -6
- data/lib/chef/resource/chef_gem.rb +0 -3
- data/lib/chef/resource/cookbook_file.rb +1 -3
- data/lib/chef/resource/cron.rb +2 -4
- data/lib/chef/resource/csh.rb +0 -2
- data/lib/chef/resource/deploy.rb +9 -6
- data/lib/chef/resource/deploy_revision.rb +0 -14
- data/lib/chef/resource/directory.rb +2 -4
- data/lib/chef/resource/dpkg_package.rb +0 -5
- data/lib/chef/resource/dsc_resource.rb +2 -3
- data/lib/chef/resource/dsc_script.rb +2 -3
- data/lib/chef/resource/easy_install_package.rb +0 -7
- data/lib/chef/resource/env.rb +3 -3
- data/lib/chef/resource/erl_call.rb +2 -5
- data/lib/chef/resource/execute.rb +2 -4
- data/lib/chef/resource/file.rb +2 -4
- data/lib/chef/resource/freebsd_package.rb +0 -5
- data/lib/chef/resource/gem_package.rb +0 -3
- data/lib/chef/resource/git.rb +0 -3
- data/lib/chef/resource/group.rb +2 -4
- data/lib/chef/resource/homebrew_package.rb +0 -2
- data/lib/chef/resource/http_request.rb +3 -4
- data/lib/chef/resource/ifconfig.rb +3 -4
- data/lib/chef/resource/ips_package.rb +2 -2
- data/lib/chef/resource/link.rb +3 -5
- data/lib/chef/resource/log.rb +2 -4
- data/lib/chef/resource/lwrp_base.rb +10 -61
- data/lib/chef/resource/macosx_service.rb +1 -2
- data/lib/chef/resource/macports_package.rb +0 -7
- data/lib/chef/resource/mdadm.rb +2 -5
- data/lib/chef/resource/mount.rb +2 -4
- data/lib/chef/resource/ohai.rb +2 -4
- data/lib/chef/resource/openbsd_package.rb +0 -6
- data/lib/chef/resource/package.rb +9 -6
- data/lib/chef/resource/pacman_package.rb +0 -7
- data/lib/chef/resource/paludis_package.rb +2 -3
- data/lib/chef/resource/perl.rb +0 -3
- data/lib/chef/resource/portage_package.rb +0 -3
- data/lib/chef/resource/powershell_script.rb +1 -2
- data/lib/chef/resource/python.rb +0 -3
- data/lib/chef/resource/reboot.rb +1 -3
- data/lib/chef/resource/registry_key.rb +3 -5
- data/lib/chef/resource/remote_directory.rb +3 -5
- data/lib/chef/resource/remote_file.rb +4 -5
- data/lib/chef/resource/route.rb +3 -5
- data/lib/chef/resource/rpm_package.rb +0 -2
- data/lib/chef/resource/ruby.rb +0 -4
- data/lib/chef/resource/ruby_block.rb +2 -4
- data/lib/chef/resource/scm.rb +3 -5
- data/lib/chef/resource/script.rb +0 -3
- data/lib/chef/resource/service.rb +3 -5
- data/lib/chef/resource/smartos_package.rb +0 -9
- data/lib/chef/resource/solaris_package.rb +0 -10
- data/lib/chef/resource/subversion.rb +1 -3
- data/lib/chef/resource/template.rb +0 -4
- data/lib/chef/resource/timestamped_deploy.rb +0 -4
- data/lib/chef/resource/user.rb +2 -5
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -7
- data/lib/chef/resource/windows_package.rb +3 -3
- data/lib/chef/resource/windows_script.rb +2 -2
- data/lib/chef/resource/windows_service.rb +3 -3
- data/lib/chef/resource/yum_package.rb +0 -3
- data/lib/chef/resource/zypper_package.rb +27 -0
- data/lib/chef/resource_builder.rb +7 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +108 -62
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/rest.rb +1 -0
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/user.rb +193 -42
- data/lib/chef/util/backup.rb +9 -1
- data/lib/chef/util/path_helper.rb +0 -1
- data/lib/chef/version.rb +1 -1
- data/spec/functional/audit/runner_spec.rb +22 -42
- data/spec/functional/mixin/powershell_out_spec.rb +43 -0
- data/spec/functional/resource/execute_spec.rb +9 -2
- data/spec/functional/resource/file_spec.rb +25 -0
- data/spec/functional/resource/group_spec.rb +5 -0
- data/spec/functional/resource/link_spec.rb +5 -11
- data/spec/functional/resource/powershell_spec.rb +40 -5
- data/spec/functional/resource/user/useradd_spec.rb +10 -18
- data/spec/integration/recipes/lwrp_spec.rb +57 -0
- data/spec/integration/recipes/provider_choice.rb +2 -7
- data/spec/integration/recipes/recipe_dsl_spec.rb +517 -19
- data/spec/spec_helper.rb +1 -1
- data/spec/support/lib/chef/provider/openldap_includer.rb +29 -0
- data/spec/support/lib/chef/resource/cat.rb +0 -2
- data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -6
- data/spec/support/lib/chef/resource/openldap_includer.rb +27 -0
- data/spec/support/lib/chef/resource/with_state.rb +0 -9
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -6
- data/spec/support/lib/chef/resource/zen_master.rb +1 -6
- data/spec/support/shared/context/client.rb +277 -0
- data/spec/support/shared/examples/client.rb +53 -0
- data/spec/support/shared/functional/file_resource.rb +0 -4
- data/spec/support/shared/functional/securable_resource.rb +0 -24
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +4 -4
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/api_versioning.rb +77 -0
- data/spec/support/shared/unit/knife_shared.rb +40 -0
- data/spec/support/shared/unit/user_and_client_shared.rb +115 -0
- data/spec/unit/api_client_spec.rb +189 -14
- data/spec/unit/application/client_spec.rb +0 -5
- data/spec/unit/audit/audit_reporter_spec.rb +58 -14
- data/spec/unit/audit/logger_spec.rb +42 -0
- data/spec/unit/audit/runner_spec.rb +2 -2
- data/spec/unit/chef_fs/file_pattern_spec.rb +3 -15
- data/spec/unit/client_spec.rb +58 -374
- data/spec/unit/cookbook_spec.rb +0 -9
- data/spec/unit/cookbook_version_spec.rb +0 -20
- data/spec/unit/deprecation_spec.rb +55 -0
- data/spec/unit/dsl/resources_spec.rb +85 -0
- data/spec/unit/exceptions_spec.rb +2 -2
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +60 -0
- data/spec/unit/formatters/doc_spec.rb +46 -0
- data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +12 -10
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +8 -0
- data/spec/unit/http/authenticator_spec.rb +11 -2
- data/spec/unit/knife/client_create_spec.rb +122 -51
- data/spec/unit/knife/core/subcommand_loader_spec.rb +19 -3
- data/spec/unit/knife/core/ui_spec.rb +14 -0
- data/spec/unit/knife/osc_user_create_spec.rb +93 -0
- data/spec/unit/knife/osc_user_delete_spec.rb +44 -0
- data/spec/unit/knife/osc_user_edit_spec.rb +52 -0
- data/spec/unit/knife/osc_user_list_spec.rb +37 -0
- data/spec/unit/knife/osc_user_reregister_spec.rb +58 -0
- data/spec/unit/knife/osc_user_show_spec.rb +46 -0
- data/spec/unit/knife/user_create_spec.rb +177 -51
- data/spec/unit/knife/user_delete_spec.rb +34 -8
- data/spec/unit/knife/user_edit_spec.rb +31 -12
- data/spec/unit/knife/user_list_spec.rb +7 -3
- data/spec/unit/knife/user_reregister_spec.rb +38 -17
- data/spec/unit/knife/user_show_spec.rb +35 -11
- data/spec/unit/knife_spec.rb +10 -4
- data/spec/unit/lwrp_spec.rb +228 -54
- data/spec/unit/mixin/api_version_request_handling_spec.rb +127 -0
- data/spec/unit/mixin/command_spec.rb +1 -2
- data/spec/unit/mixin/powershell_out_spec.rb +70 -0
- data/spec/unit/mixin/uris_spec.rb +23 -11
- data/spec/unit/node_map_spec.rb +4 -1
- data/spec/unit/osc_user_spec.rb +276 -0
- data/spec/unit/platform_spec.rb +0 -60
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +199 -135
- data/spec/unit/provider/ifconfig/debian_spec.rb +0 -10
- data/spec/unit/provider/package/aix_spec.rb +16 -16
- data/spec/unit/provider/package/dpkg_spec.rb +2 -2
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +13 -13
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +7 -7
- data/spec/unit/provider/package/ips_spec.rb +22 -22
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +4 -26
- data/spec/unit/provider/package/pacman_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +14 -14
- data/spec/unit/provider/package/rubygems_spec.rb +10 -44
- data/spec/unit/provider/package/smartos_spec.rb +4 -4
- data/spec/unit/provider/package/solaris_spec.rb +11 -11
- data/spec/unit/provider/package/zypper_spec.rb +125 -90
- data/spec/unit/provider/package_spec.rb +34 -0
- data/spec/unit/provider/powershell_spec.rb +53 -11
- data/spec/unit/provider/remote_directory_spec.rb +2 -2
- data/spec/unit/provider/remote_file/local_file_spec.rb +25 -6
- data/spec/unit/provider/service/freebsd_service_spec.rb +0 -12
- data/spec/unit/provider/user_spec.rb +3 -3
- data/spec/unit/provider_resolver_spec.rb +463 -327
- data/spec/unit/recipe_spec.rb +42 -15
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/erl_call_spec.rb +1 -1
- data/spec/unit/resource/file_spec.rb +1 -1
- data/spec/unit/resource/ifconfig_spec.rb +10 -6
- data/spec/unit/resource/remote_file_spec.rb +5 -0
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/ruby_block_spec.rb +2 -2
- data/spec/unit/resource/template_spec.rb +1 -1
- data/spec/unit/resource/timestamped_deploy_spec.rb +1 -2
- data/spec/unit/resource/windows_service_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +99 -13
- data/spec/unit/rest_spec.rb +5 -5
- data/spec/unit/run_context_spec.rb +41 -0
- data/spec/unit/runner_spec.rb +2 -2
- data/spec/unit/user_spec.rb +406 -93
- data/tasks/maintainers.rb +69 -0
- metadata +37 -4
data/lib/chef/config.rb
CHANGED
data/lib/chef/dsl/recipe.rb
CHANGED
@@ -21,8 +21,10 @@ require 'chef/mixin/convert_to_class_name'
|
|
21
21
|
require 'chef/exceptions'
|
22
22
|
require 'chef/resource_builder'
|
23
23
|
require 'chef/mixin/shell_out'
|
24
|
+
require 'chef/mixin/powershell_out'
|
24
25
|
require 'chef/dsl/resources'
|
25
26
|
require 'chef/dsl/definitions'
|
27
|
+
require 'chef/resource'
|
26
28
|
|
27
29
|
class Chef
|
28
30
|
module DSL
|
@@ -33,58 +35,7 @@ class Chef
|
|
33
35
|
module Recipe
|
34
36
|
|
35
37
|
include Chef::Mixin::ShellOut
|
36
|
-
|
37
|
-
# method_missing must live for backcompat purposes until Chef 13.
|
38
|
-
def method_missing(method_symbol, *args, &block)
|
39
|
-
#
|
40
|
-
# If there is already DSL for this, someone must have called
|
41
|
-
# method_missing manually. Not a fan. Not. A. Fan.
|
42
|
-
#
|
43
|
-
if respond_to?(method_symbol)
|
44
|
-
Chef::Log.deprecation("Calling method_missing(#{method_symbol.inspect}) directly is deprecated in Chef 12 and will be removed in Chef 13.")
|
45
|
-
Chef::Log.deprecation("Use public_send() or send() instead.")
|
46
|
-
return send(method_symbol, *args, &block)
|
47
|
-
end
|
48
|
-
|
49
|
-
#
|
50
|
-
# If a definition exists, then Chef::DSL::Definitions.add_definition was
|
51
|
-
# never called. DEPRECATED.
|
52
|
-
#
|
53
|
-
if run_context.definitions.has_key?(method_symbol.to_sym)
|
54
|
-
Chef::Log.deprecation("Definition #{method_symbol} (#{run_context.definitions[method_symbol.to_sym]}) was added to the run_context without calling Chef::DSL::Definitions.add_definition(#{method_symbol.to_sym.inspect}). This will become required in Chef 13.")
|
55
|
-
Chef::DSL::Definitions.add_definition(method_symbol)
|
56
|
-
return send(method_symbol, *args, &block)
|
57
|
-
end
|
58
|
-
|
59
|
-
#
|
60
|
-
# See if the resource exists anyway. If the user had set
|
61
|
-
# Chef::Resource::Blah = <resource>, a deprecation warning will be
|
62
|
-
# emitted and the DSL method 'blah' will be added to the DSL.
|
63
|
-
#
|
64
|
-
resource_class = Chef::ResourceResolver.new(run_context ? run_context.node : nil, method_symbol).resolve
|
65
|
-
if resource_class
|
66
|
-
#
|
67
|
-
# If the DSL method was *not* added, this is the case where the
|
68
|
-
# matching class implements 'provides?' and matches resources that it
|
69
|
-
# never declared "provides" for (which means we would never have
|
70
|
-
# created DSL). Anything where we don't create DSL is deprecated.
|
71
|
-
#
|
72
|
-
if !respond_to?(method_symbol)
|
73
|
-
Chef::Log.deprecation("#{resource_class} is marked as providing DSL #{method_symbol}, but provides #{method_symbol.inspect} was never called!")
|
74
|
-
Chef::Log.deprecation("In Chef 13, this will break: you must call provides to mark the names you provide, even if you also override provides? yourself.")
|
75
|
-
Chef::DSL::Resources.add_resource_dsl(method_symbol)
|
76
|
-
end
|
77
|
-
return send(method_symbol, *args, &block)
|
78
|
-
end
|
79
|
-
|
80
|
-
begin
|
81
|
-
super
|
82
|
-
rescue NoMethodError
|
83
|
-
raise NoMethodError, "No resource or method named `#{method_symbol}' for #{describe_self_for_error}"
|
84
|
-
rescue NameError
|
85
|
-
raise NameError, "No resource, method, or local variable named `#{method_symbol}' for #{describe_self_for_error}"
|
86
|
-
end
|
87
|
-
end
|
38
|
+
include Chef::Mixin::PowershellOut
|
88
39
|
|
89
40
|
include Chef::DSL::Resources
|
90
41
|
include Chef::DSL::Definitions
|
@@ -183,14 +134,52 @@ class Chef
|
|
183
134
|
raise Chef::Exceptions::ResourceNotFound, "exec was called, but you probably meant to use an execute resource. If not, please call Kernel#exec explicitly. The exec block called was \"#{args}\""
|
184
135
|
end
|
185
136
|
|
137
|
+
# DEPRECATED:
|
138
|
+
# method_missing must live for backcompat purposes until Chef 13.
|
139
|
+
def method_missing(method_symbol, *args, &block)
|
140
|
+
#
|
141
|
+
# If there is already DSL for this, someone must have called
|
142
|
+
# method_missing manually. Not a fan. Not. A. Fan.
|
143
|
+
#
|
144
|
+
if respond_to?(method_symbol)
|
145
|
+
Chef::Log.deprecation("Calling method_missing(#{method_symbol.inspect}) directly is deprecated in Chef 12 and will be removed in Chef 13.")
|
146
|
+
Chef::Log.deprecation("Use public_send() or send() instead.")
|
147
|
+
return send(method_symbol, *args, &block)
|
148
|
+
end
|
149
|
+
|
150
|
+
#
|
151
|
+
# If a definition exists, then Chef::DSL::Definitions.add_definition was
|
152
|
+
# never called. DEPRECATED.
|
153
|
+
#
|
154
|
+
if run_context.definitions.has_key?(method_symbol.to_sym)
|
155
|
+
Chef::Log.deprecation("Definition #{method_symbol} (#{run_context.definitions[method_symbol.to_sym]}) was added to the run_context without calling Chef::DSL::Definitions.add_definition(#{method_symbol.to_sym.inspect}). This will become required in Chef 13.")
|
156
|
+
Chef::DSL::Definitions.add_definition(method_symbol)
|
157
|
+
return send(method_symbol, *args, &block)
|
158
|
+
end
|
159
|
+
|
160
|
+
#
|
161
|
+
# See if the resource exists anyway. If the user had set
|
162
|
+
# Chef::Resource::Blah = <resource>, a deprecation warning will be
|
163
|
+
# emitted and the DSL method 'blah' will be added to the DSL.
|
164
|
+
#
|
165
|
+
resource_class = Chef::ResourceResolver.resolve(method_symbol, node: run_context ? run_context.node : nil)
|
166
|
+
if resource_class
|
167
|
+
Chef::DSL::Resources.add_resource_dsl(method_symbol)
|
168
|
+
return send(method_symbol, *args, &block)
|
169
|
+
end
|
170
|
+
|
171
|
+
begin
|
172
|
+
super
|
173
|
+
rescue NoMethodError
|
174
|
+
raise NoMethodError, "No resource or method named `#{method_symbol}' for #{describe_self_for_error}"
|
175
|
+
rescue NameError
|
176
|
+
raise NameError, "No resource, method, or local variable named `#{method_symbol}' for #{describe_self_for_error}"
|
177
|
+
end
|
178
|
+
end
|
186
179
|
end
|
187
180
|
end
|
188
181
|
end
|
189
182
|
|
190
|
-
# We require this at the BOTTOM of this file to avoid circular requires (it is used
|
191
|
-
# at runtime but not load time)
|
192
|
-
require 'chef/resource'
|
193
|
-
|
194
183
|
# **DEPRECATED**
|
195
184
|
# This used to be part of chef/mixin/recipe_definition_dsl_core. Load the file to activate the deprecation code.
|
196
185
|
require 'chef/mixin/recipe_definition_dsl_core'
|
data/lib/chef/dsl/resources.rb
CHANGED
@@ -10,12 +10,13 @@ class Chef
|
|
10
10
|
def self.add_resource_dsl(dsl_name)
|
11
11
|
begin
|
12
12
|
module_eval(<<-EOM, __FILE__, __LINE__+1)
|
13
|
-
def #{dsl_name}(name, created_at=nil, &block)
|
13
|
+
def #{dsl_name}(name=nil, created_at=nil, &block)
|
14
14
|
declare_resource(#{dsl_name.inspect}, name, created_at || caller[0], &block)
|
15
15
|
end
|
16
16
|
EOM
|
17
17
|
rescue SyntaxError
|
18
|
-
|
18
|
+
# Handle the case where dsl_name has spaces, etc.
|
19
|
+
define_method(dsl_name.to_sym) do |name=nil, created_at=nil, &block|
|
19
20
|
declare_resource(dsl_name, name, created_at || caller[0], &block)
|
20
21
|
end
|
21
22
|
end
|
@@ -82,6 +82,11 @@ class Chef
|
|
82
82
|
def node_load_completed(node, expanded_run_list, config)
|
83
83
|
end
|
84
84
|
|
85
|
+
# Called after the Policyfile was loaded. This event only occurs when
|
86
|
+
# chef is in policyfile mode.
|
87
|
+
def policyfile_loaded(policy)
|
88
|
+
end
|
89
|
+
|
85
90
|
# Called before the cookbook collection is fetched from the server.
|
86
91
|
def cookbook_resolution_start(expanded_run_list)
|
87
92
|
end
|
@@ -239,13 +244,13 @@ class Chef
|
|
239
244
|
end
|
240
245
|
|
241
246
|
# Called when audit phase successfully finishes
|
242
|
-
def audit_phase_complete
|
247
|
+
def audit_phase_complete(audit_output)
|
243
248
|
end
|
244
249
|
|
245
250
|
# Called if there is an uncaught exception during the audit phase. The audit runner should
|
246
251
|
# be catching and handling errors from the examples, so this is only uncaught errors (like
|
247
252
|
# bugs in our handling code)
|
248
|
-
def audit_phase_failed(exception)
|
253
|
+
def audit_phase_failed(exception, audit_output)
|
249
254
|
end
|
250
255
|
|
251
256
|
# Signifies the start of a `control_group` block with a defined name
|
data/lib/chef/exceptions.rb
CHANGED
@@ -73,10 +73,13 @@ class Chef
|
|
73
73
|
class KeyCommandInputError < ArgumentError; end
|
74
74
|
class InvalidKeyArgument < ArgumentError; end
|
75
75
|
class InvalidKeyAttribute < ArgumentError; end
|
76
|
+
class InvalidUserAttribute < ArgumentError; end
|
77
|
+
class InvalidClientAttribute < ArgumentError; end
|
76
78
|
class RedirectLimitExceeded < RuntimeError; end
|
77
79
|
class AmbiguousRunlistSpecification < ArgumentError; end
|
78
80
|
class CookbookFrozen < ArgumentError; end
|
79
81
|
class CookbookNotFound < RuntimeError; end
|
82
|
+
class OnlyApiVersion0SupportedForAction < RuntimeError; end
|
80
83
|
# Cookbook loader used to raise an argument error when cookbook not found.
|
81
84
|
# for back compat, need to raise an error that inherits from ArgumentError
|
82
85
|
class CookbookNotFoundInRepo < ArgumentError; end
|
@@ -435,7 +438,7 @@ class Chef
|
|
435
438
|
wrapped_errors.each_with_index do |e,i|
|
436
439
|
backtrace << "#{i+1}) #{e.class} - #{e.message}"
|
437
440
|
backtrace += e.backtrace if e.backtrace
|
438
|
-
backtrace << ""
|
441
|
+
backtrace << "" unless i == wrapped_errors.length - 1
|
439
442
|
end
|
440
443
|
set_backtrace(backtrace)
|
441
444
|
end
|
@@ -63,12 +63,22 @@ class Chef
|
|
63
63
|
raise Chef::Exceptions::WindowsNotAdmin, "can not get the security information for '#{dst}' due to missing Administrator privileges."
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
dacl_present = dst_sd.dacl_present?
|
67
|
+
if dacl_present
|
68
|
+
if dst_sd.dacl.nil?
|
69
|
+
apply_dacl = nil
|
70
|
+
else
|
71
|
+
apply_dacl = ACL.create(dst_sd.dacl.select { |ace| !ace.inherited? })
|
72
|
+
end
|
68
73
|
end
|
69
74
|
|
70
|
-
|
71
|
-
|
75
|
+
sacl_present = dst_sd.sacl_present?
|
76
|
+
if sacl_present
|
77
|
+
if dst_sd.sacl.nil?
|
78
|
+
apply_sacl = nil
|
79
|
+
else
|
80
|
+
apply_sacl = ACL.create(dst_sd.sacl.select { |ace| !ace.inherited? })
|
81
|
+
end
|
72
82
|
end
|
73
83
|
|
74
84
|
#
|
@@ -84,8 +94,8 @@ class Chef
|
|
84
94
|
dst_so = Security::SecurableObject.new(dst)
|
85
95
|
dst_so.group = dst_sd.group
|
86
96
|
dst_so.owner = dst_sd.owner
|
87
|
-
dst_so.set_dacl(apply_dacl, dst_sd.dacl_inherits?) if
|
88
|
-
dst_so.set_sacl(apply_sacl, dst_sd.sacl_inherits?) if
|
97
|
+
dst_so.set_dacl(apply_dacl, dst_sd.dacl_inherits?) if dacl_present
|
98
|
+
dst_so.set_sacl(apply_sacl, dst_sd.sacl_inherits?) if sacl_present
|
89
99
|
|
90
100
|
end
|
91
101
|
end
|
data/lib/chef/formatters/doc.rb
CHANGED
@@ -3,9 +3,9 @@ require 'chef/config'
|
|
3
3
|
|
4
4
|
class Chef
|
5
5
|
module Formatters
|
6
|
-
|
7
|
-
#
|
8
|
-
#
|
6
|
+
|
7
|
+
# Formatter similar to RSpec's documentation formatter. Uses indentation to
|
8
|
+
# show context.
|
9
9
|
class Doc < Formatters::Base
|
10
10
|
|
11
11
|
attr_reader :start_time, :end_time, :successful_audits, :failed_audits
|
@@ -93,6 +93,10 @@ class Chef
|
|
93
93
|
def node_load_completed(node, expanded_run_list, config)
|
94
94
|
end
|
95
95
|
|
96
|
+
def policyfile_loaded(policy)
|
97
|
+
puts_line "Using policy '#{policy["name"]}' at revision '#{policy["revision_id"]}'"
|
98
|
+
end
|
99
|
+
|
96
100
|
# Called before the cookbook collection is fetched from the server.
|
97
101
|
def cookbook_resolution_start(expanded_run_list)
|
98
102
|
puts_line "resolving cookbooks for run list: #{expanded_run_list.inspect}"
|
@@ -175,17 +179,21 @@ class Chef
|
|
175
179
|
puts_line "Starting audit phase"
|
176
180
|
end
|
177
181
|
|
178
|
-
def audit_phase_complete
|
182
|
+
def audit_phase_complete(audit_output)
|
183
|
+
puts_line audit_output
|
179
184
|
puts_line "Auditing complete"
|
180
185
|
end
|
181
186
|
|
182
|
-
def audit_phase_failed(error)
|
187
|
+
def audit_phase_failed(error, audit_output)
|
188
|
+
puts_line audit_output
|
183
189
|
puts_line ""
|
184
190
|
puts_line "Audit phase exception:"
|
185
191
|
indent
|
186
192
|
puts_line "#{error.message}"
|
187
|
-
error.backtrace
|
188
|
-
|
193
|
+
if error.backtrace
|
194
|
+
error.backtrace.each do |l|
|
195
|
+
puts_line l
|
196
|
+
end
|
189
197
|
end
|
190
198
|
end
|
191
199
|
|
@@ -68,14 +68,17 @@ E
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def describe_406_error(error_description, response)
|
71
|
-
if
|
72
|
-
|
73
|
-
|
71
|
+
if response["x-ops-server-api-version"]
|
72
|
+
version_header = Chef::JSONCompat.from_json(response["x-ops-server-api-version"])
|
73
|
+
client_api_version = version_header["request_version"]
|
74
|
+
min_server_version = version_header["min_version"]
|
75
|
+
max_server_version = version_header["max_version"]
|
76
|
+
|
74
77
|
error_description.section("Incompatible server API version:",<<-E)
|
75
|
-
This version of Chef is not supported by the Chef server you sent this request to
|
76
|
-
|
77
|
-
|
78
|
-
Please either update your Chef client or server to be a compatible set
|
78
|
+
This version of the API that this Chef request specified is not supported by the Chef server you sent this request to.
|
79
|
+
The server supports a min API version of #{min_server_version} and a max API version of #{max_server_version}.
|
80
|
+
Chef just made a request with an API version of #{client_api_version}.
|
81
|
+
Please either update your Chef client or server to be a compatible set.
|
79
82
|
E
|
80
83
|
else
|
81
84
|
describe_http_error(error_description)
|
@@ -92,8 +92,11 @@ class Chef
|
|
92
92
|
raise ArgumentError, "Specified guard interpreter class #{resource_class} must be a kind of Chef::Resource::Execute resource"
|
93
93
|
end
|
94
94
|
|
95
|
+
# Duplicate the node below because the new RunContext
|
96
|
+
# overwrites the state of Node instances passed to it.
|
97
|
+
# See https://github.com/chef/chef/issues/3485.
|
95
98
|
empty_events = Chef::EventDispatch::Dispatcher.new
|
96
|
-
anonymous_run_context = Chef::RunContext.new(parent_resource.node, {}, empty_events)
|
99
|
+
anonymous_run_context = Chef::RunContext.new(parent_resource.node.dup, {}, empty_events)
|
97
100
|
interpreter_resource = resource_class.new('Guard resource', anonymous_run_context)
|
98
101
|
interpreter_resource.is_guard_interpreter = true
|
99
102
|
|
@@ -24,7 +24,7 @@ class Chef
|
|
24
24
|
class HTTP
|
25
25
|
class Authenticator
|
26
26
|
|
27
|
-
|
27
|
+
DEFAULT_SERVER_API_VERSION = "1"
|
28
28
|
|
29
29
|
attr_reader :signing_key_filename
|
30
30
|
attr_reader :raw_key
|
@@ -39,11 +39,16 @@ class Chef
|
|
39
39
|
@signing_key_filename = opts[:signing_key_filename]
|
40
40
|
@key = load_signing_key(opts[:signing_key_filename], opts[:raw_key])
|
41
41
|
@auth_credentials = AuthCredentials.new(opts[:client_name], @key)
|
42
|
+
if opts[:api_version]
|
43
|
+
@api_version = opts[:api_version]
|
44
|
+
else
|
45
|
+
@api_version = DEFAULT_SERVER_API_VERSION
|
46
|
+
end
|
42
47
|
end
|
43
48
|
|
44
49
|
def handle_request(method, url, headers={}, data=false)
|
45
50
|
headers.merge!(authentication_headers(method, url, data)) if sign_requests?
|
46
|
-
headers.merge!({'X-Ops-Server-API-Version' =>
|
51
|
+
headers.merge!({'X-Ops-Server-API-Version' => @api_version})
|
47
52
|
[method, url, headers, data]
|
48
53
|
end
|
49
54
|
|
data/lib/chef/knife.rb
CHANGED
@@ -487,11 +487,13 @@ class Chef
|
|
487
487
|
ui.error "Service temporarily unavailable"
|
488
488
|
ui.info "Response: #{format_rest_error(response)}"
|
489
489
|
when Net::HTTPNotAcceptable
|
490
|
-
|
491
|
-
|
490
|
+
version_header = Chef::JSONCompat.from_json(response["x-ops-server-api-version"])
|
491
|
+
client_api_version = version_header["request_version"]
|
492
|
+
min_server_version = version_header["min_version"]
|
493
|
+
max_server_version = version_header["max_version"]
|
492
494
|
ui.error "The version of Chef that Knife is using is not supported by the Chef server you sent this request to"
|
493
|
-
ui.info "
|
494
|
-
ui.info "The Chef server you sent the request to supports a min API verson of #{
|
495
|
+
ui.info "The request that Knife sent was using API version #{client_api_version}"
|
496
|
+
ui.info "The Chef server you sent the request to supports a min API verson of #{min_server_version} and a max API version of #{max_server_version}"
|
495
497
|
ui.info "Please either update your Chef client or server to be a compatible set"
|
496
498
|
else
|
497
499
|
ui.error response.message
|
@@ -549,6 +551,16 @@ class Chef
|
|
549
551
|
self.msg("Deleted #{obj_name}")
|
550
552
|
end
|
551
553
|
|
554
|
+
# helper method for testing if a field exists
|
555
|
+
# and returning the usage and proper error if not
|
556
|
+
def test_mandatory_field(field, fieldname)
|
557
|
+
if field.nil?
|
558
|
+
show_usage
|
559
|
+
ui.fatal("You must specify a #{fieldname}")
|
560
|
+
exit 1
|
561
|
+
end
|
562
|
+
end
|
563
|
+
|
552
564
|
def rest
|
553
565
|
@rest ||= begin
|
554
566
|
require 'chef/rest'
|
@@ -28,58 +28,82 @@ class Chef
|
|
28
28
|
end
|
29
29
|
|
30
30
|
option :file,
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
:short => "-f FILE",
|
32
|
+
:long => "--file FILE",
|
33
|
+
:description => "Write the private key to a file if the server generated one."
|
34
34
|
|
35
35
|
option :admin,
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
:short => "-a",
|
37
|
+
:long => "--admin",
|
38
|
+
:description => "Open Source Chef 11 only. Create the client as an admin.",
|
39
|
+
:boolean => true
|
40
40
|
|
41
41
|
option :validator,
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
:long => "--validator",
|
43
|
+
:description => "Create the client as a validator.",
|
44
|
+
:boolean => true
|
45
45
|
|
46
|
-
|
46
|
+
option :public_key,
|
47
|
+
:short => "-p FILE",
|
48
|
+
:long => "--public-key",
|
49
|
+
:description => "Set the initial default key for the client from a file on disk (cannot pass with --prevent-keygen)."
|
50
|
+
|
51
|
+
option :prevent_keygen,
|
52
|
+
:short => "-k",
|
53
|
+
:long => "--prevent-keygen",
|
54
|
+
:description => "API V1 only. Prevent server from generating a default key pair for you. Cannot be passed with --public-key.",
|
55
|
+
:boolean => true
|
56
|
+
|
57
|
+
banner "knife client create CLIENTNAME (options)"
|
58
|
+
|
59
|
+
def client
|
60
|
+
@client_field ||= Chef::ApiClient.new
|
61
|
+
end
|
62
|
+
|
63
|
+
def create_client(client)
|
64
|
+
# should not be using save :( bad behavior
|
65
|
+
client.save
|
66
|
+
end
|
47
67
|
|
48
68
|
def run
|
49
|
-
@
|
69
|
+
test_mandatory_field(@name_args[0], "client name")
|
70
|
+
client.name @name_args[0]
|
50
71
|
|
51
|
-
if
|
72
|
+
if config[:public_key] && config[:prevent_keygen]
|
52
73
|
show_usage
|
53
|
-
ui.fatal("You
|
74
|
+
ui.fatal("You cannot pass --public-key and --prevent-keygen")
|
54
75
|
exit 1
|
55
76
|
end
|
56
77
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
78
|
+
if !config[:prevent_keygen] && !config[:public_key]
|
79
|
+
client.create_key(true)
|
80
|
+
end
|
81
|
+
|
82
|
+
if config[:admin]
|
83
|
+
client.admin(true)
|
84
|
+
end
|
62
85
|
|
63
|
-
|
86
|
+
if config[:validator]
|
87
|
+
client.validator(true)
|
88
|
+
end
|
64
89
|
|
65
|
-
|
66
|
-
|
67
|
-
|
90
|
+
if config[:public_key]
|
91
|
+
client.public_key File.read(File.expand_path(config[:public_key]))
|
92
|
+
end
|
68
93
|
|
69
|
-
|
70
|
-
|
71
|
-
|
94
|
+
output = edit_data(client)
|
95
|
+
final_client = create_client(output)
|
96
|
+
ui.info("Created #{output}")
|
72
97
|
|
98
|
+
# output private_key if one
|
99
|
+
if final_client.private_key
|
73
100
|
if config[:file]
|
74
101
|
File.open(config[:file], "w") do |f|
|
75
|
-
f.print(
|
102
|
+
f.print(final_client.private_key)
|
76
103
|
end
|
77
104
|
else
|
78
|
-
puts
|
105
|
+
puts final_client.private_key
|
79
106
|
end
|
80
|
-
else
|
81
|
-
ui.error "Client '#{client['name']}' already exists"
|
82
|
-
exit 1
|
83
107
|
end
|
84
108
|
end
|
85
109
|
end
|