chef 12.4.3-universal-mingw32 → 12.5.1-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/CONTRIBUTING.md +21 -25
- data/Gemfile +46 -0
- data/README.md +4 -4
- data/Rakefile +4 -110
- data/bin/chef-service-manager +3 -1
- data/distro/common/html/knife_cookbook_site.html +18 -18
- data/distro/common/man/man1/knife-cookbook-site.1 +11 -11
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +1 -1
- data/lib/chef/application/apply.rb +19 -1
- data/lib/chef/application/client.rb +11 -5
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +1 -1
- data/lib/chef/application/windows_service_manager.rb +19 -12
- data/lib/chef/chef_class.rb +46 -0
- data/lib/chef/chef_fs/config.rb +22 -24
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +3 -1
- data/lib/chef/chef_fs/file_pattern.rb +4 -15
- data/lib/chef/chef_fs/file_system/acl_dir.rb +3 -4
- data/lib/chef/chef_fs/file_system/acls_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +0 -5
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +5 -2
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +2 -9
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +2 -9
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +10 -17
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +1 -12
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +15 -11
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +8 -2
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +4 -4
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +3 -11
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +3 -5
- data/lib/chef/chef_fs/file_system/environments_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +7 -4
- data/lib/chef/chef_fs/file_system/memory_dir.rb +2 -3
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +15 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -2
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +4 -9
- data/lib/chef/chef_fs/knife.rb +35 -7
- data/lib/chef/chef_fs/path_utils.rb +65 -34
- data/lib/chef/client.rb +2 -3
- data/lib/chef/config.rb +34 -2
- data/lib/chef/{mixin/wstring.rb → constants.rb} +9 -13
- data/lib/chef/cookbook/metadata.rb +25 -3
- data/lib/chef/cookbook/synchronizer.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +3 -3
- data/lib/chef/delayed_evaluator.rb +21 -0
- data/lib/chef/deprecation/mixin/template.rb +1 -2
- data/lib/chef/deprecation/provider/cookbook_file.rb +1 -1
- data/lib/chef/deprecation/provider/file.rb +1 -1
- data/lib/chef/deprecation/provider/remote_directory.rb +52 -0
- data/lib/chef/deprecation/provider/remote_file.rb +1 -2
- data/lib/chef/deprecation/provider/template.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +3 -4
- data/lib/chef/dsl/reboot_pending.rb +3 -2
- data/lib/chef/dsl/recipe.rb +26 -7
- data/lib/chef/dsl/resources.rb +2 -2
- data/lib/chef/event_dispatch/base.rb +51 -22
- data/lib/chef/event_dispatch/dispatcher.rb +21 -6
- data/lib/chef/event_dispatch/dsl.rb +64 -0
- data/lib/chef/exceptions.rb +28 -1
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/base.rb +3 -0
- data/lib/chef/formatters/doc.rb +56 -6
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +36 -0
- data/lib/chef/formatters/minimal.rb +2 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/knife.rb +35 -55
- data/lib/chef/knife/bootstrap.rb +41 -0
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -0
- data/lib/chef/knife/bootstrap/client_builder.rb +16 -0
- data/lib/chef/knife/bootstrap/templates/README.md +3 -4
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +1 -1
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_download.rb +1 -1
- data/lib/chef/knife/cookbook_site_install.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +6 -6
- data/lib/chef/knife/cookbook_site_unshare.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +12 -4
- data/lib/chef/knife/core/custom_manifest_loader.rb +69 -0
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -0
- data/lib/chef/knife/core/hashed_command_loader.rb +80 -0
- data/lib/chef/knife/core/node_presenter.rb +24 -1
- data/lib/chef/knife/core/object_loader.rb +1 -0
- data/lib/chef/knife/core/subcommand_loader.rb +131 -146
- data/lib/chef/knife/node_run_list_remove.rb +12 -1
- data/lib/chef/knife/null.rb +10 -0
- data/lib/chef/knife/rehash.rb +62 -0
- data/lib/chef/knife/search.rb +3 -3
- data/lib/chef/knife/ssh.rb +52 -30
- data/lib/chef/knife/ssl_check.rb +3 -2
- data/lib/chef/knife/user_edit.rb +1 -2
- data/lib/chef/local_mode.rb +5 -0
- data/lib/chef/log.rb +5 -1
- data/lib/chef/mixin/deprecation.rb +8 -8
- data/lib/chef/mixin/params_validate.rb +362 -135
- data/lib/chef/mixin/template.rb +48 -0
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/mixin/wide_string.rb +72 -0
- data/lib/chef/mixin/windows_architecture_helper.rb +15 -39
- data/lib/chef/mixin/windows_env_helper.rb +4 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -0
- data/lib/chef/monkey_patches/win32/registry.rb +72 -0
- data/lib/chef/node.rb +116 -3
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/platform/handler_map.rb +0 -5
- data/lib/chef/platform/provider_mapping.rb +5 -6
- data/lib/chef/platform/query_helpers.rb +46 -4
- data/lib/chef/platform/rebooter.rb +1 -1
- data/lib/chef/platform/service_helpers.rb +30 -32
- data/lib/chef/policy_builder.rb +1 -8
- data/lib/chef/policy_builder/dynamic.rb +186 -0
- data/lib/chef/policy_builder/expand_node_object.rb +30 -15
- data/lib/chef/policy_builder/policyfile.rb +155 -18
- data/lib/chef/property.rb +568 -0
- data/lib/chef/provider.rb +222 -13
- data/lib/chef/provider/batch.rb +8 -0
- data/lib/chef/provider/deploy.rb +5 -7
- data/lib/chef/provider/directory.rb +14 -2
- data/lib/chef/provider/dsc_resource.rb +5 -9
- data/lib/chef/provider/group/pw.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/lwrp_base.rb +1 -75
- data/lib/chef/provider/mount.rb +7 -3
- data/lib/chef/provider/package.rb +1 -1
- data/lib/chef/provider/package/dpkg.rb +5 -11
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +17 -5
- data/lib/chef/provider/powershell_script.rb +59 -23
- data/lib/chef/provider/registry_key.rb +5 -5
- data/lib/chef/provider/remote_directory.rb +190 -102
- data/lib/chef/provider/service.rb +12 -2
- data/lib/chef/provider/service/aix.rb +1 -1
- data/lib/chef/provider/service/debian.rb +3 -5
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +3 -3
- data/lib/chef/provider/service/init.rb +3 -3
- data/lib/chef/provider/service/insserv.rb +2 -4
- data/lib/chef/provider/service/invokercd.rb +2 -4
- data/lib/chef/provider/service/macosx.rb +5 -1
- data/lib/chef/provider/service/openbsd.rb +2 -1
- data/lib/chef/provider/service/redhat.rb +52 -16
- data/lib/chef/provider/service/simple.rb +2 -2
- data/lib/chef/provider/service/systemd.rb +3 -5
- data/lib/chef/provider/service/upstart.rb +4 -6
- data/lib/chef/provider/subversion.rb +13 -7
- data/lib/chef/provider/template/content.rb +16 -6
- data/lib/chef/provider/user/solaris.rb +32 -4
- data/lib/chef/provider/windows_script.rb +3 -5
- data/lib/chef/provider_resolver.rb +2 -2
- data/lib/chef/recipe.rb +1 -8
- data/lib/chef/resource.rb +563 -90
- data/lib/chef/resource/action_class.rb +83 -0
- data/lib/chef/resource/chef_gem.rb +3 -3
- data/lib/chef/resource/deploy.rb +8 -2
- data/lib/chef/resource/dsc_script.rb +2 -0
- data/lib/chef/resource/file/verification.rb +7 -1
- data/lib/chef/resource/lwrp_base.rb +1 -7
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/service.rb +10 -2
- data/lib/chef/resource/subversion.rb +5 -0
- data/lib/chef/resource/windows_script.rb +6 -2
- data/lib/chef/resource/yum_package.rb +10 -1
- data/lib/chef/resource_resolver.rb +3 -3
- data/lib/chef/run_context.rb +402 -83
- data/lib/chef/run_list/versioned_recipe_list.rb +15 -0
- data/lib/chef/run_lock.rb +30 -21
- data/lib/chef/util/powershell/ps_credential.rb +4 -0
- data/lib/chef/util/windows.rb +0 -32
- data/lib/chef/util/windows/net_group.rb +85 -106
- data/lib/chef/util/windows/net_use.rb +35 -71
- data/lib/chef/util/windows/net_user.rb +0 -1
- data/lib/chef/util/windows/volume.rb +19 -19
- data/lib/chef/version.rb +3 -3
- data/lib/chef/win32/api.rb +1 -0
- data/lib/chef/win32/api/file.rb +20 -0
- data/lib/chef/win32/api/net.rb +163 -43
- data/lib/chef/win32/api/registry.rb +51 -0
- data/lib/chef/win32/api/system.rb +23 -0
- data/lib/chef/win32/api/unicode.rb +0 -43
- data/lib/chef/win32/crypto.rb +2 -1
- data/lib/chef/win32/file.rb +28 -3
- data/lib/chef/win32/mutex.rb +1 -2
- data/lib/chef/win32/net.rb +162 -8
- data/lib/chef/win32/process.rb +13 -0
- data/lib/chef/win32/registry.rb +35 -30
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/token.rb +1 -1
- data/lib/chef/win32/system.rb +62 -0
- data/lib/chef/win32/unicode.rb +7 -2
- data/lib/chef/win32/version.rb +0 -4
- data/lib/chef/workstation_config_loader.rb +3 -158
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -0
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -0
- data/spec/data/dsc_lcm.pfx +0 -0
- data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -0
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +33 -43
- data/spec/functional/knife/cookbook_delete_spec.rb +17 -7
- data/spec/functional/knife/ssh_spec.rb +16 -0
- data/spec/functional/rebooter_spec.rb +1 -1
- data/spec/functional/resource/deploy_revision_spec.rb +1 -1
- data/spec/functional/resource/dsc_resource_spec.rb +2 -0
- data/spec/functional/resource/dsc_script_spec.rb +91 -2
- data/spec/functional/resource/group_spec.rb +67 -44
- data/spec/functional/resource/{powershell_spec.rb → powershell_script_spec.rb} +107 -18
- data/spec/functional/resource/windows_service_spec.rb +1 -1
- data/spec/functional/run_lock_spec.rb +368 -189
- data/spec/functional/win32/{registry_helper_spec.rb → registry_spec.rb} +16 -23
- data/spec/functional/win32/service_manager_spec.rb +2 -2
- data/spec/integration/client/client_spec.rb +51 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +13 -11
- data/spec/integration/knife/download_spec.rb +4 -0
- data/spec/integration/knife/list_spec.rb +8 -0
- data/spec/integration/knife/upload_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -16
- data/spec/integration/recipes/remote_directory.rb +74 -0
- data/spec/integration/recipes/resource_action_spec.rb +363 -0
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +423 -0
- data/spec/integration/recipes/resource_load_spec.rb +206 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/platform_helpers.rb +13 -0
- data/spec/support/shared/context/win32.rb +34 -0
- data/spec/support/shared/functional/win32_service.rb +2 -1
- data/spec/support/shared/functional/windows_script.rb +63 -26
- data/spec/support/shared/unit/mock_shellout.rb +46 -0
- data/spec/support/shared/unit/provider/file.rb +10 -4
- data/spec/unit/application/client_spec.rb +16 -3
- data/spec/unit/application/knife_spec.rb +2 -2
- data/spec/unit/application/solo_spec.rb +4 -3
- data/spec/unit/chef_class_spec.rb +23 -4
- data/spec/unit/chef_fs/path_util_spec.rb +108 -0
- data/spec/unit/client_spec.rb +6 -1
- data/spec/unit/config_spec.rb +31 -0
- data/spec/unit/cookbook/metadata_spec.rb +23 -3
- data/spec/unit/cookbook/syntax_check_spec.rb +3 -0
- data/spec/unit/deprecation_spec.rb +3 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +12 -6
- data/spec/unit/event_dispatch/dispatcher_spec.rb +65 -3
- data/spec/unit/event_dispatch/dsl_spec.rb +83 -0
- data/spec/unit/formatters/doc_spec.rb +32 -0
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +26 -0
- data/spec/unit/json_compat_spec.rb +4 -3
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +27 -0
- data/spec/unit/knife/bootstrap_spec.rb +55 -3
- data/spec/unit/knife/cookbook_site_share_spec.rb +3 -3
- data/spec/unit/knife/core/bootstrap_context_spec.rb +21 -4
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +41 -0
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +210 -0
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +93 -0
- data/spec/unit/knife/core/subcommand_loader_spec.rb +16 -192
- data/spec/unit/knife/node_run_list_remove_spec.rb +17 -0
- data/spec/unit/knife/ssl_check_spec.rb +4 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +10 -10
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/template_spec.rb +5 -1
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +13 -8
- data/spec/unit/node_spec.rb +220 -0
- data/spec/unit/platform/query_helpers_spec.rb +146 -3
- data/spec/unit/policy_builder/dynamic_spec.rb +275 -0
- data/spec/unit/policy_builder/expand_node_object_spec.rb +37 -38
- data/spec/unit/policy_builder/policyfile_spec.rb +260 -46
- data/spec/unit/property/state_spec.rb +506 -0
- data/spec/unit/property/validation_spec.rb +663 -0
- data/spec/unit/property_spec.rb +1094 -0
- data/spec/unit/provider/deploy_spec.rb +5 -5
- data/spec/unit/provider/directory_spec.rb +35 -0
- data/spec/unit/provider/dsc_resource_spec.rb +3 -10
- data/spec/unit/provider/ifconfig_spec.rb +22 -2
- data/spec/unit/provider/mount/aix_spec.rb +2 -1
- data/spec/unit/provider/mount/mount_spec.rb +6 -0
- data/spec/unit/provider/mount/windows_spec.rb +14 -0
- data/spec/unit/provider/mount_spec.rb +12 -1
- data/spec/unit/provider/package/dpkg_spec.rb +8 -1
- data/spec/unit/provider/package/rpm_spec.rb +18 -1
- data/spec/unit/provider/package/rubygems_spec.rb +18 -0
- data/spec/unit/provider/package/yum_spec.rb +97 -24
- data/spec/unit/provider/powershell_script_spec.rb +106 -0
- data/spec/unit/provider/registry_key_spec.rb +12 -0
- data/spec/unit/provider/remote_directory_spec.rb +1 -2
- data/spec/unit/provider/service/aix_service_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +4 -4
- data/spec/unit/provider/service/openbsd_service_spec.rb +10 -8
- data/spec/unit/provider/service/redhat_spec.rb +88 -8
- data/spec/unit/provider/service/upstart_service_spec.rb +11 -7
- data/spec/unit/provider/service/windows_spec.rb +211 -200
- data/spec/unit/provider/subversion_spec.rb +50 -31
- data/spec/unit/provider/template/content_spec.rb +93 -2
- data/spec/unit/provider/user/solaris_spec.rb +66 -9
- data/spec/unit/provider_resolver_spec.rb +707 -650
- data/spec/unit/provider_spec.rb +1 -3
- data/spec/unit/recipe_spec.rb +0 -4
- data/spec/unit/resource/deploy_spec.rb +7 -1
- data/spec/unit/resource/dsc_script_spec.rb +4 -0
- data/spec/unit/resource/file/verification_spec.rb +33 -5
- data/spec/unit/resource/{powershell_spec.rb → powershell_script_spec.rb} +17 -13
- data/spec/unit/resource/service_spec.rb +4 -4
- data/spec/unit/resource/subversion_spec.rb +4 -0
- data/spec/unit/resource/yum_package_spec.rb +10 -1
- data/spec/unit/resource_spec.rb +2 -2
- data/spec/unit/run_context/child_run_context_spec.rb +133 -0
- data/spec/unit/run_context_spec.rb +7 -0
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +5 -0
- data/spec/unit/win32/registry_spec.rb +394 -0
- data/tasks/external_tests.rb +47 -23
- data/tasks/maintainers.rb +155 -14
- metadata +64 -53
- data/lib/chef/knife/bootstrap/templates/archlinux-gems.erb +0 -76
- data/lib/chef/knife/bootstrap/templates/chef-aix.erb +0 -72
- data/spec/unit/provider/powershell_spec.rb +0 -80
- data/spec/unit/registry_helper_spec.rb +0 -376
- data/spec/unit/workstation_config_loader_spec.rb +0 -283
data/lib/chef.rb
CHANGED
data/lib/chef/application.rb
CHANGED
@@ -382,7 +382,7 @@ class Chef
|
|
382
382
|
|
383
383
|
def emit_warnings
|
384
384
|
if Chef::Config[:chef_gem_compile_time]
|
385
|
-
Chef
|
385
|
+
Chef.log_deprecation "setting chef_gem_compile_time to true is deprecated"
|
386
386
|
end
|
387
387
|
end
|
388
388
|
|
@@ -49,6 +49,24 @@ class Chef::Application::Apply < Chef::Application
|
|
49
49
|
:description => "Load attributes from a JSON file or URL",
|
50
50
|
:proc => nil
|
51
51
|
|
52
|
+
option :force_logger,
|
53
|
+
:long => "--force-logger",
|
54
|
+
:description => "Use logger output instead of formatter output",
|
55
|
+
:boolean => true,
|
56
|
+
:default => false
|
57
|
+
|
58
|
+
option :force_formatter,
|
59
|
+
:long => "--force-formatter",
|
60
|
+
:description => "Use formatter output instead of logger output",
|
61
|
+
:boolean => true,
|
62
|
+
:default => false
|
63
|
+
|
64
|
+
option :formatter,
|
65
|
+
:short => "-F FORMATTER",
|
66
|
+
:long => "--format FORMATTER",
|
67
|
+
:description => "output format to use",
|
68
|
+
:proc => lambda { |format| Chef::Config.add_formatter(format) }
|
69
|
+
|
52
70
|
option :log_level,
|
53
71
|
:short => "-l LEVEL",
|
54
72
|
:long => "--log_level LEVEL",
|
@@ -82,7 +100,7 @@ class Chef::Application::Apply < Chef::Application
|
|
82
100
|
option :color,
|
83
101
|
:long => '--[no-]color',
|
84
102
|
:boolean => true,
|
85
|
-
:default =>
|
103
|
+
:default => true,
|
86
104
|
:description => "Use colored output, defaults to enabled"
|
87
105
|
|
88
106
|
option :minimal_ohai,
|
@@ -58,8 +58,8 @@ class Chef::Application::Client < Chef::Application
|
|
58
58
|
option :color,
|
59
59
|
:long => '--[no-]color',
|
60
60
|
:boolean => true,
|
61
|
-
:default =>
|
62
|
-
:description => "Use colored output, defaults to
|
61
|
+
:default => true,
|
62
|
+
:description => "Use colored output, defaults to enabled"
|
63
63
|
|
64
64
|
option :log_level,
|
65
65
|
:short => "-l LEVEL",
|
@@ -160,6 +160,12 @@ class Chef::Application::Client < Chef::Application
|
|
160
160
|
:description => "Set the client key file location",
|
161
161
|
:proc => nil
|
162
162
|
|
163
|
+
option :named_run_list,
|
164
|
+
:short => "-n NAMED_RUN_LIST",
|
165
|
+
:long => "--named-run-list NAMED_RUN_LIST",
|
166
|
+
:description => "Use a policyfile's named run list instead of the default run list",
|
167
|
+
:default => nil
|
168
|
+
|
163
169
|
option :environment,
|
164
170
|
:short => '-E ENVIRONMENT',
|
165
171
|
:long => '--environment ENVIRONMENT',
|
@@ -449,9 +455,9 @@ class Chef::Application::Client < Chef::Application
|
|
449
455
|
end
|
450
456
|
|
451
457
|
def audit_mode_settings_explanation
|
452
|
-
"\n* To enable audit mode after converge, use command line option `--audit-mode enabled` or set
|
453
|
-
"\n* To disable audit mode, use command line option `--audit-mode disabled` or set
|
454
|
-
"\n* To only run audit mode, use command line option `--audit-mode audit-only` or set
|
458
|
+
"\n* To enable audit mode after converge, use command line option `--audit-mode enabled` or set `audit_mode :enabled` in your config file." +
|
459
|
+
"\n* To disable audit mode, use command line option `--audit-mode disabled` or set `audit_mode :disabled` in your config file." +
|
460
|
+
"\n* To only run audit mode, use command line option `--audit-mode audit-only` or set `audit_mode :audit_only` in your config file." +
|
455
461
|
"\nAudit mode is disabled by default."
|
456
462
|
end
|
457
463
|
|
@@ -44,8 +44,8 @@ class Chef::Application::Knife < Chef::Application
|
|
44
44
|
option :color,
|
45
45
|
:long => '--[no-]color',
|
46
46
|
:boolean => true,
|
47
|
-
:default =>
|
48
|
-
:description => "Use colored output, defaults to
|
47
|
+
:default => true,
|
48
|
+
:description => "Use colored output, defaults to enabled"
|
49
49
|
|
50
50
|
option :environment,
|
51
51
|
:short => "-E ENVIRONMENT",
|
@@ -214,7 +214,7 @@ class Chef::Application::Solo < Chef::Application
|
|
214
214
|
FileUtils.mkdir_p(recipes_path)
|
215
215
|
tarball_path = File.join(recipes_path, 'recipes.tgz')
|
216
216
|
fetch_recipe_tarball(Chef::Config[:recipe_url], tarball_path)
|
217
|
-
|
217
|
+
Mixlib::ShellOut.new("tar zxvf #{tarball_path} -C #{recipes_path}").run_command
|
218
218
|
end
|
219
219
|
|
220
220
|
# json_attribs shuld be fetched after recipe_url tarball is unpacked.
|
@@ -78,7 +78,7 @@ class Chef
|
|
78
78
|
|
79
79
|
raise ArgumentError, "Service definition is not provided" if service_options.nil?
|
80
80
|
|
81
|
-
required_options = [:service_name, :service_display_name, :
|
81
|
+
required_options = [:service_name, :service_display_name, :service_description, :service_file_path]
|
82
82
|
|
83
83
|
required_options.each do |req_option|
|
84
84
|
if !service_options.has_key?(req_option)
|
@@ -92,6 +92,8 @@ class Chef
|
|
92
92
|
@service_file_path = service_options[:service_file_path]
|
93
93
|
@service_start_name = service_options[:run_as_user]
|
94
94
|
@password = service_options[:run_as_password]
|
95
|
+
@delayed_start = service_options[:delayed_start]
|
96
|
+
@dependencies = service_options[:dependencies]
|
95
97
|
end
|
96
98
|
|
97
99
|
def run(params = ARGV)
|
@@ -113,17 +115,22 @@ class Chef
|
|
113
115
|
cmd = "\"#{ruby}\" \"#{@service_file_path}\" #{opts}".gsub(File::SEPARATOR, File::ALT_SEPARATOR)
|
114
116
|
|
115
117
|
::Win32::Service.new(
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
118
|
+
:service_name => @service_name,
|
119
|
+
:display_name => @service_display_name,
|
120
|
+
:description => @service_description,
|
121
|
+
# Prior to 0.8.5, win32-service creates interactive services by default,
|
122
|
+
# and we don't want that, so we need to override the service type.
|
123
|
+
:service_type => ::Win32::Service::SERVICE_WIN32_OWN_PROCESS,
|
124
|
+
:start_type => ::Win32::Service::SERVICE_AUTO_START,
|
125
|
+
:binary_path_name => cmd,
|
126
|
+
:service_start_name => @service_start_name,
|
127
|
+
:password => @password,
|
128
|
+
:dependencies => @dependencies
|
129
|
+
)
|
130
|
+
::Win32::Service.configure(
|
131
|
+
:service_name => @service_name,
|
132
|
+
:delayed_start => @delayed_start
|
133
|
+
) unless @delayed_start.nil?
|
127
134
|
puts "Service '#{@service_name}' has successfully been installed."
|
128
135
|
end
|
129
136
|
when 'status'
|
data/lib/chef/chef_class.rb
CHANGED
@@ -52,7 +52,14 @@ class Chef
|
|
52
52
|
#
|
53
53
|
attr_reader :run_context
|
54
54
|
|
55
|
+
# Register an event handler with user specified block
|
55
56
|
#
|
57
|
+
# @return[Chef::EventDispatch::Base] handler object
|
58
|
+
def event_handler(&block)
|
59
|
+
dsl = Chef::EventDispatch::DSL.new('Chef client DSL')
|
60
|
+
dsl.instance_eval(&block)
|
61
|
+
end
|
62
|
+
|
56
63
|
# Get the array of providers associated with a resource_name for the current node
|
57
64
|
#
|
58
65
|
# @param resource_name [Symbol] name of the resource as a symbol
|
@@ -183,6 +190,45 @@ class Chef
|
|
183
190
|
def resource_handler_map
|
184
191
|
@resource_handler_map ||= Chef::Platform::ResourceHandlerMap.instance
|
185
192
|
end
|
193
|
+
|
194
|
+
#
|
195
|
+
# Emit a deprecation message.
|
196
|
+
#
|
197
|
+
# @param message The message to send.
|
198
|
+
# @param location The location. Defaults to the caller who called you (since
|
199
|
+
# generally the person who triggered the check is the one that needs to be
|
200
|
+
# fixed).
|
201
|
+
#
|
202
|
+
# @example
|
203
|
+
# Chef.deprecation("Deprecated!")
|
204
|
+
#
|
205
|
+
# @api private this will likely be removed in favor of an as-yet unwritten
|
206
|
+
# `Chef.log`
|
207
|
+
def log_deprecation(message, location=nil)
|
208
|
+
if !location
|
209
|
+
# Pick the first caller that is *not* part of the Chef gem, that's the
|
210
|
+
# thing the user wrote.
|
211
|
+
chef_gem_path = File.expand_path("../..", __FILE__)
|
212
|
+
caller(0..10).each do |c|
|
213
|
+
if !c.start_with?(chef_gem_path)
|
214
|
+
location = c
|
215
|
+
break
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
# `run_context.events` is the primary deprecation target if we're in a
|
220
|
+
# run. If we are not yet in a run, print to `Chef::Log`.
|
221
|
+
if run_context && run_context.events
|
222
|
+
run_context.events.deprecation(message, location)
|
223
|
+
else
|
224
|
+
Chef::Log.deprecation(message, location)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
# @api private Only for test dependency injection; not evenly implemented as yet.
|
230
|
+
def self.path_to(path)
|
231
|
+
path
|
186
232
|
end
|
187
233
|
|
188
234
|
reset!
|
data/lib/chef/chef_fs/config.rb
CHANGED
@@ -111,7 +111,7 @@ class Chef
|
|
111
111
|
#
|
112
112
|
def initialize(chef_config = Chef::Config, cwd = Dir.pwd, options = {}, ui = nil)
|
113
113
|
@chef_config = chef_config
|
114
|
-
@cwd = cwd
|
114
|
+
@cwd = File.expand_path(cwd)
|
115
115
|
@cookbook_version = options[:cookbook_version]
|
116
116
|
|
117
117
|
if @chef_config[:repo_mode] == 'everything' && is_hosted? && !ui.nil?
|
@@ -166,34 +166,37 @@ class Chef
|
|
166
166
|
# server_path('/home/jkeiser/chef_repo/cookbooks/blah') == '/cookbooks/blah'
|
167
167
|
# server_path('/home/*/chef_repo/cookbooks/blah') == nil
|
168
168
|
#
|
169
|
-
# If there are multiple
|
170
|
-
# have separate paths), and cwd+the
|
171
|
-
#
|
172
|
-
#
|
169
|
+
# If there are multiple different, manually specified paths to object locations
|
170
|
+
# (cookbooks, roles, data bags, etc. can all have separate paths), and cwd+the
|
171
|
+
# path reaches into one of them, we will return a path relative to the first
|
172
|
+
# one to match it. Otherwise we expect the path provided to be to the chef
|
173
|
+
# repo path itself. Paths that are not available on the server are not supported.
|
173
174
|
#
|
174
175
|
# Globs are allowed as well, but globs outside server paths are NOT
|
175
176
|
# (presently) supported. See above examples. TODO support that.
|
176
177
|
#
|
177
178
|
# If the path does not reach into ANY specified directory, nil is returned.
|
178
179
|
def server_path(file_path)
|
179
|
-
|
180
|
-
absolute_pwd = Chef::ChefFS::PathUtils.realest_path(File.expand_path(file_path, pwd))
|
180
|
+
target_path = Chef::ChefFS::PathUtils.realest_path(file_path, @cwd)
|
181
181
|
|
182
182
|
# Check all object paths (cookbooks_dir, data_bags_dir, etc.)
|
183
|
+
# These are either manually specified by the user or autogenerated relative
|
184
|
+
# to chef_repo_path.
|
183
185
|
object_paths.each_pair do |name, paths|
|
184
186
|
paths.each do |path|
|
185
|
-
|
186
|
-
if PathUtils.
|
187
|
-
|
188
|
-
return relative_path == '.' ? "/#{name}" : "/#{name}/#{relative_path}"
|
187
|
+
object_abs_path = Chef::ChefFS::PathUtils.realest_path(path, @cwd)
|
188
|
+
if relative_path = PathUtils.descendant_path(target_path, object_abs_path)
|
189
|
+
return Chef::ChefFS::PathUtils.join("/#{name}", relative_path)
|
189
190
|
end
|
190
191
|
end
|
191
192
|
end
|
192
193
|
|
193
194
|
# Check chef_repo_path
|
194
195
|
Array(@chef_config[:chef_repo_path]).flatten.each do |chef_repo_path|
|
195
|
-
|
196
|
-
if
|
196
|
+
# We're using realest_path here but we really don't need to - we can just expand the
|
197
|
+
# path and use realpath because a repo_path if provided *must* exist.
|
198
|
+
realest_chef_repo_path = Chef::ChefFS::PathUtils.realest_path(chef_repo_path, @cwd)
|
199
|
+
if Chef::ChefFS::PathUtils.os_path_eq?(target_path, realest_chef_repo_path)
|
197
200
|
return '/'
|
198
201
|
end
|
199
202
|
end
|
@@ -201,15 +204,10 @@ class Chef
|
|
201
204
|
nil
|
202
205
|
end
|
203
206
|
|
204
|
-
# The current directory, relative to server root
|
207
|
+
# The current directory, relative to server root. This is a case-sensitive server path.
|
208
|
+
# It only exists if the current directory is a child of one of the recognized object_paths below.
|
205
209
|
def base_path
|
206
|
-
@base_path ||=
|
207
|
-
if @chef_config[:chef_repo_path]
|
208
|
-
server_path(File.expand_path(@cwd))
|
209
|
-
else
|
210
|
-
nil
|
211
|
-
end
|
212
|
-
end
|
210
|
+
@base_path ||= server_path(@cwd)
|
213
211
|
end
|
214
212
|
|
215
213
|
# Print the given server path, relative to the current directory
|
@@ -217,10 +215,10 @@ class Chef
|
|
217
215
|
server_path = entry.path
|
218
216
|
if base_path && server_path[0,base_path.length] == base_path
|
219
217
|
if server_path == base_path
|
220
|
-
return
|
221
|
-
elsif server_path[base_path.length,1] ==
|
218
|
+
return '.'
|
219
|
+
elsif server_path[base_path.length,1] == '/'
|
222
220
|
return server_path[base_path.length + 1, server_path.length - base_path.length - 1]
|
223
|
-
elsif base_path ==
|
221
|
+
elsif base_path == '/' && server_path[0,1] == '/'
|
224
222
|
return server_path[1, server_path.length - 1]
|
225
223
|
end
|
226
224
|
end
|
@@ -13,11 +13,13 @@ class Chef
|
|
13
13
|
'validator' => false,
|
14
14
|
'chef_type' => 'client'
|
15
15
|
}
|
16
|
+
# Handle the fact that admin/validator have changed type from string -> boolean
|
17
|
+
client['admin'] = (client['admin'] == 'true') if client['admin'].is_a?(String)
|
18
|
+
client['validator'] = (client['validator'] == 'true') if client['validator'].is_a?(String)
|
16
19
|
if entry.respond_to?(:org) && entry.org
|
17
20
|
defaults['orgname'] = entry.org
|
18
21
|
end
|
19
22
|
result = normalize_hash(client, defaults)
|
20
|
-
# You can NOT send json_class, or it will fail
|
21
23
|
result.delete('json_class')
|
22
24
|
result
|
23
25
|
end
|
@@ -72,7 +72,7 @@ class Chef
|
|
72
72
|
def could_match_children?(path)
|
73
73
|
return false if path == '' # Empty string is not a path
|
74
74
|
|
75
|
-
argument_is_absolute =
|
75
|
+
argument_is_absolute = Chef::ChefFS::PathUtils::is_absolute?(path)
|
76
76
|
return false if is_absolute != argument_is_absolute
|
77
77
|
path = path[1,path.length-1] if argument_is_absolute
|
78
78
|
|
@@ -111,7 +111,7 @@ class Chef
|
|
111
111
|
#
|
112
112
|
# This method assumes +could_match_children?(path)+ is +true+.
|
113
113
|
def exact_child_name_under(path)
|
114
|
-
path = path[1,path.length-1] if
|
114
|
+
path = path[1,path.length-1] if Chef::ChefFS::PathUtils::is_absolute?(path)
|
115
115
|
dirs_in_path = Chef::ChefFS::PathUtils::split(path).length
|
116
116
|
return nil if exact_parts.length <= dirs_in_path
|
117
117
|
return exact_parts[dirs_in_path]
|
@@ -149,7 +149,7 @@ class Chef
|
|
149
149
|
# abc/*/def.match?('abc/foo/def') == true
|
150
150
|
# abc/*/def.match?('abc/foo') == false
|
151
151
|
def match?(path)
|
152
|
-
argument_is_absolute =
|
152
|
+
argument_is_absolute = Chef::ChefFS::PathUtils::is_absolute?(path)
|
153
153
|
return false if is_absolute != argument_is_absolute
|
154
154
|
path = path[1,path.length-1] if argument_is_absolute
|
155
155
|
!!regexp.match(path)
|
@@ -160,17 +160,6 @@ class Chef
|
|
160
160
|
pattern
|
161
161
|
end
|
162
162
|
|
163
|
-
# Given a relative file pattern and a directory, makes a new file pattern
|
164
|
-
# starting with the directory.
|
165
|
-
#
|
166
|
-
# FilePattern.relative_to('/usr/local', 'bin/*grok') == FilePattern.new('/usr/local/bin/*grok')
|
167
|
-
#
|
168
|
-
# BUG: this does not support patterns starting with <tt>..</tt>
|
169
|
-
def self.relative_to(dir, pattern)
|
170
|
-
return FilePattern.new(pattern) if pattern =~ /^#{Chef::ChefFS::PathUtils::regexp_path_separator}/
|
171
|
-
FilePattern.new(Chef::ChefFS::PathUtils::join(dir, pattern))
|
172
|
-
end
|
173
|
-
|
174
163
|
private
|
175
164
|
|
176
165
|
def regexp
|
@@ -195,7 +184,7 @@ class Chef
|
|
195
184
|
|
196
185
|
def calculate
|
197
186
|
if !@regexp
|
198
|
-
@is_absolute =
|
187
|
+
@is_absolute = Chef::ChefFS::PathUtils::is_absolute?(@pattern)
|
199
188
|
|
200
189
|
full_regexp_parts = []
|
201
190
|
normalized_parts = []
|
@@ -28,10 +28,9 @@ class Chef
|
|
28
28
|
parent.parent.child(name).api_path
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def make_child_entry(name, exists = nil)
|
32
32
|
result = @children.select { |child| child.name == name }.first if @children
|
33
|
-
result
|
34
|
-
AclEntry.new(name, self) : NonexistentFSObject.new(name, self)
|
33
|
+
result || AclEntry.new(name, self, exists)
|
35
34
|
end
|
36
35
|
|
37
36
|
def can_have_child?(name, is_dir)
|
@@ -42,7 +41,7 @@ class Chef
|
|
42
41
|
if @children.nil?
|
43
42
|
# Grab the ACTUAL children (/nodes, /containers, etc.) and get their names
|
44
43
|
names = parent.parent.child(name).children.map { |child| child.dir? ? "#{child.name}.json" : child.name }
|
45
|
-
@children = names.map { |name|
|
44
|
+
@children = names.map { |name| make_child_entry(name, true) }
|
46
45
|
end
|
47
46
|
@children
|
48
47
|
end
|
@@ -40,8 +40,12 @@ class Chef
|
|
40
40
|
parent.api_path
|
41
41
|
end
|
42
42
|
|
43
|
+
def make_child_entry(name)
|
44
|
+
children.select { |child| child.name == name }.first
|
45
|
+
end
|
46
|
+
|
43
47
|
def can_have_child?(name, is_dir)
|
44
|
-
is_dir ? ENTITY_TYPES.include(name) : name == 'organization.json'
|
48
|
+
is_dir ? ENTITY_TYPES.include?(name) : name == 'organization.json'
|
45
49
|
end
|
46
50
|
|
47
51
|
def children
|
@@ -31,11 +31,6 @@ class Chef
|
|
31
31
|
true
|
32
32
|
end
|
33
33
|
|
34
|
-
# Override child(name) to provide a child object by name without the network read
|
35
|
-
def child(name)
|
36
|
-
children.select { |child| child.name == name }.first || NonexistentFSObject.new(name, self)
|
37
|
-
end
|
38
|
-
|
39
34
|
def can_have_child?(name, is_dir)
|
40
35
|
true
|
41
36
|
end
|
@@ -95,7 +95,10 @@ class Chef
|
|
95
95
|
# directly perform a network request to retrieve the y.json data bag. No
|
96
96
|
# network request was necessary to retrieve
|
97
97
|
def child(name)
|
98
|
-
|
98
|
+
if can_have_child?(name, true) || can_have_child?(name, false)
|
99
|
+
result = make_child_entry(name)
|
100
|
+
end
|
101
|
+
result || NonexistentFSObject.new(name, self)
|
99
102
|
end
|
100
103
|
|
101
104
|
# Override children to report your *actual* list of children as an array.
|
@@ -171,7 +174,7 @@ class Chef
|
|
171
174
|
|
172
175
|
# Important directory attributes: name, parent, path, root
|
173
176
|
# Overridable attributes: dir?, child(name), path_for_printing
|
174
|
-
# Abstract: read, write, delete, children, can_have_child?, create_child, compare_to
|
177
|
+
# Abstract: read, write, delete, children, can_have_child?, create_child, compare_to, make_child_entry
|
175
178
|
end # class BaseFsObject
|
176
179
|
end
|
177
180
|
end
|