chef 12.4.3-universal-mingw32 → 12.5.1-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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
|