chef 10.34.6 → 11.0.0.beta.0
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.
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +4 -12
- data/bin/chef-apply +25 -0
- data/bin/chef-shell +34 -0
- data/bin/shef +6 -5
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
- data/distro/common/html/chef-solo.8.html +18 -12
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +10 -7
- data/distro/common/html/knife-data-bag.1.html +10 -7
- data/distro/common/html/knife-environment.1.html +8 -6
- data/distro/common/html/knife-exec.1.html +9 -9
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +8 -13
- data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +15 -2
- data/distro/common/man/man1/knife-data-bag.1 +15 -2
- data/distro/common/man/man1/knife-environment.1 +12 -2
- data/distro/common/man/man1/knife-exec.1 +4 -7
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +3 -6
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +36 -4
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
- data/distro/common/markdown/man1/knife-exec.mkd +11 -6
- data/distro/common/markdown/man1/knife.mkd +4 -9
- data/distro/debian/etc/default/chef-client +0 -1
- data/distro/debian/etc/init.d/chef-client +2 -2
- data/lib/chef.rb +2 -5
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +71 -14
- data/lib/chef/application/apply.rb +160 -0
- data/lib/chef/application/client.rb +25 -18
- data/lib/chef/application/knife.rb +0 -2
- data/lib/chef/application/solo.rb +23 -8
- data/lib/chef/application/windows_service.rb +5 -2
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +11 -0
- data/lib/chef/chef_fs/command_line.rb +232 -0
- data/lib/chef/chef_fs/file_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +358 -0
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb} +12 -15
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
- data/lib/chef/{index_queue.rb → chef_fs/file_system/file_system_error.rb} +14 -12
- data/lib/chef/{resource/whyrun_safe_ruby_block.rb → chef_fs/file_system/file_system_root_dir.rb} +10 -10
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → chef_fs/file_system/nonexistent_fs_object.rb} +19 -9
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
- data/lib/chef/chef_fs/knife.rb +77 -0
- data/lib/chef/chef_fs/path_utils.rb +64 -0
- data/lib/chef/client.rb +44 -21
- data/lib/chef/config.rb +52 -43
- data/lib/chef/cookbook/synchronizer.rb +6 -8
- data/lib/chef/cookbook/syntax_check.rb +61 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +17 -19
- data/lib/chef/cookbook_version.rb +3 -302
- data/lib/chef/daemon.rb +3 -18
- data/lib/chef/data_bag.rb +4 -97
- data/lib/chef/data_bag_item.rb +2 -65
- data/lib/chef/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +66 -0
- data/lib/chef/dsl/include_attribute.rb +60 -0
- data/lib/chef/dsl/include_recipe.rb +42 -0
- data/lib/chef/dsl/platform_introspection.rb +213 -0
- data/lib/chef/dsl/recipe.rb +84 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +74 -19
- data/lib/chef/environment.rb +9 -180
- data/lib/chef/exceptions.rb +87 -14
- data/lib/chef/formatters/base.rb +4 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +0 -4
- data/lib/chef/json_compat.rb +1 -97
- data/lib/chef/knife.rb +90 -41
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
- data/lib/chef/knife/configure.rb +1 -2
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +3 -2
- data/lib/chef/knife/cookbook_upload.rb +12 -7
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +26 -13
- data/lib/chef/knife/core/node_editor.rb +36 -16
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +15 -9
- data/lib/chef/knife/delete.rb +39 -0
- data/lib/chef/knife/diff.rb +46 -0
- data/lib/chef/knife/download.rb +50 -0
- data/lib/chef/knife/environment_show.rb +7 -0
- data/lib/chef/knife/exec.rb +5 -5
- data/lib/chef/knife/help_topics.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +91 -7
- data/lib/chef/knife/list.rb +109 -0
- data/lib/chef/knife/raw.rb +108 -0
- data/lib/chef/knife/search.rb +40 -22
- data/lib/chef/knife/show.rb +32 -0
- data/lib/chef/knife/ssh.rb +6 -2
- data/lib/chef/knife/upload.rb +50 -0
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +55 -197
- data/lib/chef/mixin/language.rb +9 -222
- data/lib/chef/mixin/language_include_attribute.rb +6 -38
- data/lib/chef/mixin/language_include_recipe.rb +3 -35
- data/lib/chef/mixin/params_validate.rb +6 -19
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +8 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +40 -0
- data/lib/chef/mixins.rb +0 -4
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/node.rb +133 -309
- data/lib/chef/node/attribute.rb +333 -473
- data/lib/chef/node/attribute_collections.rb +199 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +7 -22
- data/lib/chef/provider.rb +2 -49
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +5 -33
- data/lib/chef/provider/deploy.rb +2 -1
- data/lib/chef/provider/directory.rb +14 -17
- data/lib/chef/provider/file.rb +19 -52
- data/lib/chef/provider/group.rb +31 -51
- data/lib/chef/provider/group/dscl.rb +13 -53
- data/lib/chef/provider/group/gpasswd.rb +19 -14
- data/lib/chef/provider/group/groupadd.rb +1 -41
- data/lib/chef/provider/group/groupmod.rb +36 -46
- data/lib/chef/provider/group/pw.rb +16 -59
- data/lib/chef/provider/group/suse.rb +13 -16
- data/lib/chef/provider/group/usermod.rb +18 -40
- data/lib/chef/provider/group/windows.rb +6 -13
- data/lib/chef/provider/http_request.rb +25 -42
- data/lib/chef/provider/link.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +150 -0
- data/lib/chef/provider/package/portage.rb +4 -9
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +9 -41
- data/lib/chef/provider/package/yum.rb +12 -19
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +2 -0
- data/lib/chef/provider/remote_file.rb +21 -12
- data/lib/chef/provider/ruby_block.rb +5 -2
- data/lib/chef/provider/service.rb +15 -0
- data/lib/chef/provider/service/init.rb +9 -7
- data/lib/chef/provider/service/macosx.rb +15 -73
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +3 -3
- data/lib/chef/provider/template.rb +22 -25
- data/lib/chef/provider/template_finder.rb +61 -0
- data/lib/chef/provider/user.rb +0 -1
- data/lib/chef/provider/user/dscl.rb +175 -568
- data/lib/chef/provider/user/useradd.rb +30 -47
- data/lib/chef/providers.rb +3 -2
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +13 -154
- data/lib/chef/resource/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/lwrp_base.rb +127 -0
- data/lib/chef/resource/mount.rb +10 -11
- data/lib/chef/resource/registry_key.rb +86 -0
- data/lib/chef/resource/remote_directory.rb +6 -5
- data/lib/chef/resource/remote_file.rb +22 -31
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource_collection.rb +25 -21
- data/lib/chef/resources.rb +2 -1
- data/lib/chef/rest.rb +50 -131
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +2 -7
- data/lib/chef/role.rb +1 -97
- data/lib/chef/run_context.rb +108 -130
- data/lib/chef/run_context/cookbook_compiler.rb +280 -0
- data/lib/chef/run_list.rb +0 -2
- data/lib/chef/run_list/run_list_expansion.rb +0 -15
- data/lib/chef/run_lock.rb +90 -0
- data/lib/chef/runner.rb +28 -5
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +2 -4
- data/lib/chef/shef/ext.rb +3 -575
- data/lib/chef/{shef.rb → shell.rb} +35 -40
- data/lib/chef/shell/ext.rb +593 -0
- data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
- data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
- data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +17 -15
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/util/windows/net_group.rb +1 -5
- data/lib/chef/version.rb +3 -3
- data/lib/chef/win32/api/process.rb +0 -1
- data/lib/chef/win32/handle.rb +1 -8
- data/lib/chef/win32/registry.rb +371 -0
- data/spec/data/big_json.json +1 -2
- data/spec/data/big_json_plus_one.json +1 -2
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/{knife-home/.chef/plugins/knife/example_home_subcommand.rb → run_context/cookbooks/circular-dep1/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/{lwrp_const_scoping/resources/conflict.rb → run_context/cookbooks/circular-dep2/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +7 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/knife/ssh_spec.rb +5 -1
- data/spec/functional/resource/cookbook_file_spec.rb +7 -19
- data/spec/functional/resource/directory_spec.rb +4 -0
- data/spec/functional/resource/file_spec.rb +56 -22
- data/spec/functional/resource/link_spec.rb +2 -0
- data/spec/functional/resource/registry_spec.rb +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +142 -36
- data/spec/functional/resource/remote_file_spec.rb +18 -0
- data/spec/functional/resource/template_spec.rb +23 -2
- data/spec/functional/run_lock_spec.rb +106 -0
- data/spec/functional/shell_spec.rb +100 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/spec_helper.rb +5 -29
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +0 -2
- data/spec/support/platform_helpers.rb +8 -15
- data/spec/support/shared/functional/directory_resource.rb +84 -22
- data/spec/support/shared/functional/file_resource.rb +169 -71
- data/spec/support/shared/functional/securable_resource.rb +143 -119
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
- data/spec/support/shared/unit/file_system_support.rb +110 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/unit/api_client/registration_spec.rb +175 -0
- data/spec/unit/api_client_spec.rb +78 -156
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/client_spec.rb +1 -37
- data/spec/unit/application/knife_spec.rb +5 -0
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
- data/spec/unit/chef_fs/diff_spec.rb +328 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
- data/spec/unit/chef_fs/file_system_spec.rb +136 -0
- data/spec/unit/client_spec.rb +124 -33
- data/spec/unit/config_spec.rb +46 -13
- data/spec/unit/cookbook/synchronizer_spec.rb +1 -49
- data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
- data/spec/unit/cookbook_loader_spec.rb +153 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/daemon_spec.rb +3 -24
- data/spec/unit/data_bag_spec.rb +6 -4
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +50 -105
- data/spec/unit/environment_spec.rb +0 -130
- data/spec/unit/exceptions_spec.rb +2 -3
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
- data/spec/unit/json_compat_spec.rb +15 -7
- data/spec/unit/knife/bootstrap_spec.rb +2 -0
- data/spec/unit/knife/configure_spec.rb +20 -14
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +43 -8
- data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +156 -125
- data/spec/unit/knife/data_bag_create_spec.rb +9 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_edit_spec.rb +6 -33
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife_spec.rb +53 -0
- data/spec/unit/lwrp_spec.rb +59 -42
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +101 -799
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -37
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +119 -0
- data/spec/unit/node/attribute_spec.rb +195 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +366 -370
- data/spec/unit/platform_spec.rb +9 -10
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file_spec.rb +4 -8
- data/spec/unit/provider/directory_spec.rb +96 -64
- data/spec/unit/provider/env_spec.rb +2 -2
- data/spec/unit/provider/file_spec.rb +48 -39
- data/spec/unit/provider/group/dscl_spec.rb +0 -36
- data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
- data/spec/unit/provider/group/groupadd_spec.rb +4 -3
- data/spec/unit/provider/group/groupmod_spec.rb +1 -0
- data/spec/unit/provider/group/pw_spec.rb +15 -12
- data/spec/unit/provider/group/usermod_spec.rb +6 -21
- data/spec/unit/provider/group/windows_spec.rb +8 -0
- data/spec/unit/provider/group_spec.rb +6 -28
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/portage_spec.rb +0 -44
- data/spec/unit/provider/package/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -44
- data/spec/unit/provider/package/yum_spec.rb +39 -36
- data/spec/unit/provider/package_spec.rb +7 -5
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -3
- data/spec/unit/provider/remote_file_spec.rb +36 -0
- data/spec/unit/provider/route_spec.rb +4 -3
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
- data/spec/unit/provider/service/init_service_spec.rb +27 -4
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +11 -66
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +9 -9
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template_spec.rb +35 -11
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/useradd_spec.rb +1 -22
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +374 -0
- data/spec/unit/resource/mount_spec.rb +0 -11
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +21 -23
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource_spec.rb +4 -19
- data/spec/unit/rest/auth_credentials_spec.rb +2 -19
- data/spec/unit/rest_spec.rb +130 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +101 -2
- data/spec/unit/scan_access_control_spec.rb +4 -4
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +14 -69
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- metadata +275 -234
- checksums.yaml +0 -15
- data/README.rdoc +0 -177
- data/distro/common/html/knife-recipe.1.html +0 -92
- data/lib/chef/certificate.rb +0 -161
- data/lib/chef/checksum.rb +0 -167
- data/lib/chef/checksum_cache.rb +0 -190
- data/lib/chef/cookbook_version_selector.rb +0 -168
- data/lib/chef/couchdb.rb +0 -246
- data/lib/chef/index_queue/amqp_client.rb +0 -116
- data/lib/chef/index_queue/consumer.rb +0 -76
- data/lib/chef/index_queue/indexable.rb +0 -109
- data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
- data/lib/chef/monkey_patches/moneta.rb +0 -50
- data/lib/chef/monkey_patches/uri.rb +0 -70
- data/lib/chef/openid_registration.rb +0 -187
- data/lib/chef/provider/user/solaris.rb +0 -90
- data/lib/chef/solr_query.rb +0 -187
- data/lib/chef/solr_query/lucene.treetop +0 -150
- data/lib/chef/solr_query/lucene_nodes.rb +0 -285
- data/lib/chef/solr_query/query_transform.rb +0 -65
- data/lib/chef/solr_query/solr_http_request.rb +0 -132
- data/lib/chef/webui_user.rb +0 -231
- data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -1
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -1
- data/spec/data/mac_users/10.7-8.plist.xml +0 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
- data/spec/data/mac_users/10.7.plist.xml +0 -559
- data/spec/data/mac_users/10.7.shadow.xml +0 -11
- data/spec/data/mac_users/10.8.plist.xml +0 -559
- data/spec/data/mac_users/10.8.shadow.xml +0 -21
- data/spec/data/mac_users/10.9.plist.xml +0 -560
- data/spec/data/mac_users/10.9.shadow.xml +0 -21
- data/spec/functional/resource/base.rb +0 -40
- data/spec/functional/resource/group_spec.rb +0 -343
- data/spec/functional/resource/user/dscl_spec.rb +0 -199
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/provider/user/solaris_spec.rb +0 -414
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
data/lib/chef/provider.rb
CHANGED
|
@@ -19,14 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
require 'chef/mixin/from_file'
|
|
21
21
|
require 'chef/mixin/convert_to_class_name'
|
|
22
|
-
require 'chef/
|
|
22
|
+
require 'chef/dsl/recipe'
|
|
23
23
|
require 'chef/mixin/enforce_ownership_and_permissions'
|
|
24
24
|
require 'chef/mixin/why_run'
|
|
25
25
|
class Chef
|
|
26
26
|
class Provider
|
|
27
|
-
include Chef::
|
|
27
|
+
include Chef::DSL::Recipe
|
|
28
28
|
include Chef::Mixin::WhyRun
|
|
29
|
-
include Chef::Mixin::EnforceOwnershipAndPermissions
|
|
30
29
|
|
|
31
30
|
attr_accessor :new_resource
|
|
32
31
|
attr_accessor :current_resource
|
|
@@ -173,51 +172,5 @@ class Chef
|
|
|
173
172
|
end
|
|
174
173
|
end
|
|
175
174
|
|
|
176
|
-
public
|
|
177
|
-
|
|
178
|
-
class << self
|
|
179
|
-
include Chef::Mixin::ConvertToClassName
|
|
180
|
-
|
|
181
|
-
def build_from_file(cookbook_name, filename, run_context)
|
|
182
|
-
pname = filename_to_qualified_string(cookbook_name, filename)
|
|
183
|
-
|
|
184
|
-
# Add log entry if we override an existing light-weight provider.
|
|
185
|
-
class_name = convert_to_class_name(pname)
|
|
186
|
-
overriding = Chef::Provider.const_defined?(class_name)
|
|
187
|
-
Chef::Log.info("#{class_name} light-weight provider already initialized -- overriding!") if overriding
|
|
188
|
-
|
|
189
|
-
new_provider_class = Class.new self do |cls|
|
|
190
|
-
|
|
191
|
-
include Chef::Mixin::RecipeDefinitionDSLCore
|
|
192
|
-
|
|
193
|
-
def load_current_resource
|
|
194
|
-
# silence Chef::Exceptions::Override exception
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
class << cls
|
|
198
|
-
include Chef::Mixin::FromFile
|
|
199
|
-
|
|
200
|
-
# setup DSL's shortcut methods
|
|
201
|
-
def action(name, &block)
|
|
202
|
-
define_method("action_#{name.to_s}") do
|
|
203
|
-
instance_eval(&block)
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
# load provider definition from file
|
|
209
|
-
cls.class_from_file(filename)
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
# register new class as a Chef::Provider
|
|
213
|
-
pname = filename_to_qualified_string(cookbook_name, filename)
|
|
214
|
-
class_name = convert_to_class_name(pname)
|
|
215
|
-
Chef::Provider.const_set(class_name, new_provider_class)
|
|
216
|
-
Chef::Log.debug("Loaded contents of #{filename} into a provider named #{pname} defined in Chef::Provider::#{class_name}")
|
|
217
|
-
|
|
218
|
-
new_provider_class
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
|
|
222
175
|
end
|
|
223
176
|
end
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
8
8
|
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
11
|
+
#
|
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -19,18 +19,18 @@
|
|
|
19
19
|
class Chef
|
|
20
20
|
class Provider
|
|
21
21
|
class Breakpoint < Chef::Provider
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
def load_current_resource
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
def action_break
|
|
27
|
-
if defined?(
|
|
27
|
+
if defined?(Shell) && Shell.running?
|
|
28
28
|
run_context.resource_collection.iterator.pause
|
|
29
29
|
@new_resource.updated_by_last_action(true)
|
|
30
30
|
run_context.resource_collection.iterator
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
end
|
|
@@ -23,6 +23,9 @@ require 'tempfile'
|
|
|
23
23
|
class Chef
|
|
24
24
|
class Provider
|
|
25
25
|
class CookbookFile < Chef::Provider::File
|
|
26
|
+
|
|
27
|
+
include Chef::Mixin::EnforceOwnershipAndPermissions
|
|
28
|
+
|
|
26
29
|
def whyrun_supported?
|
|
27
30
|
true
|
|
28
31
|
end
|
|
@@ -33,7 +36,7 @@ class Chef
|
|
|
33
36
|
end
|
|
34
37
|
|
|
35
38
|
def action_create
|
|
36
|
-
if file_cache_location && content_stale?
|
|
39
|
+
if file_cache_location && content_stale?
|
|
37
40
|
description = []
|
|
38
41
|
description << "create a new cookbook_file #{@new_resource.path}"
|
|
39
42
|
description << diff_current(file_cache_location)
|
|
@@ -44,8 +47,8 @@ class Chef
|
|
|
44
47
|
Chef::Log.debug("#{@new_resource} staging #{file_cache_location} to #{tempfile.path}")
|
|
45
48
|
tempfile.close
|
|
46
49
|
FileUtils.cp(file_cache_location, tempfile.path)
|
|
47
|
-
enforce_tempfile_inheritance(tempfile.path)
|
|
48
50
|
end
|
|
51
|
+
update_new_file_state
|
|
49
52
|
Chef::Log.info("#{@new_resource} created file #{@new_resource.path}")
|
|
50
53
|
end
|
|
51
54
|
else
|
|
@@ -77,37 +80,6 @@ class Chef
|
|
|
77
80
|
( ! ::File.exist?(@new_resource.path)) || ( ! compare_content)
|
|
78
81
|
end
|
|
79
82
|
|
|
80
|
-
protected
|
|
81
|
-
|
|
82
|
-
def enforce_tempfile_inheritance(tempfile_path)
|
|
83
|
-
# On the Windows platform, files in the temp directory
|
|
84
|
-
# default to not inherit unless the new resource specifies rights of
|
|
85
|
-
# some sort. Here we ensure that even when no rights are
|
|
86
|
-
# specified, the dacl's inheritance flag is set.
|
|
87
|
-
if Chef::Platform.windows? &&
|
|
88
|
-
@new_resource.rights.nil? &&
|
|
89
|
-
@new_resource.group.nil? &&
|
|
90
|
-
@new_resource.owner.nil? &&
|
|
91
|
-
@new_resource.deny_rights.nil?
|
|
92
|
-
|
|
93
|
-
securable_tempfile = Chef::ReservedNames::Win32::Security::SecurableObject.new(tempfile_path)
|
|
94
|
-
|
|
95
|
-
# No rights were specified, so the dacl will have no explicit aces
|
|
96
|
-
default_dacl = Chef::ReservedNames::Win32::Security::ACL.create([])
|
|
97
|
-
|
|
98
|
-
# In setting this default dacl, set inheritance to true
|
|
99
|
-
securable_tempfile.set_dacl(default_dacl, true)
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
|
|
105
|
-
def managing_content?
|
|
106
|
-
return true if @new_resource.checksum
|
|
107
|
-
return true if !@new_resource.source.nil? && @action != :create_if_missing
|
|
108
|
-
false
|
|
109
|
-
end
|
|
110
|
-
|
|
111
83
|
end
|
|
112
84
|
end
|
|
113
85
|
end
|
data/lib/chef/provider/deploy.rb
CHANGED
|
@@ -21,12 +21,13 @@ require "chef/mixin/from_file"
|
|
|
21
21
|
require "chef/monkey_patches/fileutils"
|
|
22
22
|
require "chef/provider/git"
|
|
23
23
|
require "chef/provider/subversion"
|
|
24
|
+
require 'chef/dsl/recipe'
|
|
24
25
|
|
|
25
26
|
class Chef
|
|
26
27
|
class Provider
|
|
27
28
|
class Deploy < Chef::Provider
|
|
28
29
|
|
|
29
|
-
include Chef::
|
|
30
|
+
include Chef::DSL::Recipe
|
|
30
31
|
include Chef::Mixin::FromFile
|
|
31
32
|
include Chef::Mixin::Command
|
|
32
33
|
|
|
@@ -26,6 +26,9 @@ require 'fileutils'
|
|
|
26
26
|
class Chef
|
|
27
27
|
class Provider
|
|
28
28
|
class Directory < Chef::Provider::File
|
|
29
|
+
|
|
30
|
+
include Chef::Mixin::EnforceOwnershipAndPermissions
|
|
31
|
+
|
|
29
32
|
def whyrun_supported?
|
|
30
33
|
true
|
|
31
34
|
end
|
|
@@ -33,7 +36,6 @@ class Chef
|
|
|
33
36
|
def load_current_resource
|
|
34
37
|
@current_resource = Chef::Resource::Directory.new(@new_resource.name)
|
|
35
38
|
@current_resource.path(@new_resource.path)
|
|
36
|
-
load_current_resource_attrs
|
|
37
39
|
setup_acl
|
|
38
40
|
|
|
39
41
|
@current_resource
|
|
@@ -59,8 +61,8 @@ class Chef
|
|
|
59
61
|
# find the lowest-level directory in @new_resource.path that already exists
|
|
60
62
|
# make sure we have write permissions to that directory
|
|
61
63
|
is_parent_writable = lambda do |base_dir|
|
|
62
|
-
base_dir = ::File.dirname(base_dir)
|
|
63
|
-
if ::File.exist?(base_dir)
|
|
64
|
+
base_dir = ::File.dirname(base_dir)
|
|
65
|
+
if ::File.exist?(base_dir)
|
|
64
66
|
::File.writable?(base_dir)
|
|
65
67
|
else
|
|
66
68
|
is_parent_writable.call(base_dir)
|
|
@@ -70,27 +72,27 @@ class Chef
|
|
|
70
72
|
else
|
|
71
73
|
# in why run mode & parent directory does not exist no permissions check is required
|
|
72
74
|
# If not in why run, permissions must be valid and we rely on prior assertion that dir exists
|
|
73
|
-
if !whyrun_mode? || ::File.exist?(parent_directory)
|
|
75
|
+
if !whyrun_mode? || ::File.exist?(parent_directory)
|
|
74
76
|
::File.writable?(parent_directory)
|
|
75
77
|
else
|
|
76
78
|
true
|
|
77
79
|
end
|
|
78
80
|
end
|
|
79
81
|
end
|
|
80
|
-
a.failure_message(Chef::Exceptions::InsufficientPermissions,
|
|
82
|
+
a.failure_message(Chef::Exceptions::InsufficientPermissions,
|
|
81
83
|
"Cannot create #{@new_resource} at #{@new_resource.path} due to insufficient permissions")
|
|
82
84
|
end
|
|
83
85
|
|
|
84
|
-
requirements.assert(:delete) do |a|
|
|
85
|
-
a.assertion do
|
|
86
|
+
requirements.assert(:delete) do |a|
|
|
87
|
+
a.assertion do
|
|
86
88
|
if ::File.exist?(@new_resource.path)
|
|
87
|
-
::File.directory?(@new_resource.path) && ::File.writable?(@new_resource.path)
|
|
89
|
+
::File.directory?(@new_resource.path) && ::File.writable?(@new_resource.path)
|
|
88
90
|
else
|
|
89
91
|
true
|
|
90
92
|
end
|
|
91
93
|
end
|
|
92
94
|
a.failure_message(RuntimeError, "Cannot delete #{@new_resource} at #{@new_resource.path}!")
|
|
93
|
-
# No why-run handling here:
|
|
95
|
+
# No why-run handling here:
|
|
94
96
|
# * if we don't have permissions, this is unlikely to be changed earlier in the run
|
|
95
97
|
# * if the target is a file (not a dir), there's no reasonable path by which this would have been changed
|
|
96
98
|
end
|
|
@@ -98,16 +100,17 @@ class Chef
|
|
|
98
100
|
|
|
99
101
|
def action_create
|
|
100
102
|
unless ::File.exist?(@new_resource.path)
|
|
101
|
-
converge_by("create new directory #{@new_resource.path}") do
|
|
103
|
+
converge_by("create new directory #{@new_resource.path}") do
|
|
102
104
|
if @new_resource.recursive == true
|
|
103
105
|
::FileUtils.mkdir_p(@new_resource.path)
|
|
104
106
|
else
|
|
105
107
|
::Dir.mkdir(@new_resource.path)
|
|
106
108
|
end
|
|
107
109
|
Chef::Log.info("#{@new_resource} created directory #{@new_resource.path}")
|
|
108
|
-
end
|
|
110
|
+
end
|
|
109
111
|
end
|
|
110
112
|
set_all_access_controls
|
|
113
|
+
update_new_file_state
|
|
111
114
|
end
|
|
112
115
|
|
|
113
116
|
def action_delete
|
|
@@ -123,12 +126,6 @@ class Chef
|
|
|
123
126
|
end
|
|
124
127
|
end
|
|
125
128
|
end
|
|
126
|
-
|
|
127
|
-
private
|
|
128
|
-
|
|
129
|
-
def managing_content?
|
|
130
|
-
false
|
|
131
|
-
end
|
|
132
129
|
end
|
|
133
130
|
end
|
|
134
131
|
end
|
data/lib/chef/provider/file.rb
CHANGED
|
@@ -30,6 +30,7 @@ class Chef
|
|
|
30
30
|
|
|
31
31
|
class Provider
|
|
32
32
|
class File < Chef::Provider
|
|
33
|
+
include Chef::Mixin::EnforceOwnershipAndPermissions
|
|
33
34
|
include Chef::Mixin::Checksum
|
|
34
35
|
include Chef::Mixin::ShellOut
|
|
35
36
|
|
|
@@ -48,9 +49,9 @@ class Chef
|
|
|
48
49
|
|
|
49
50
|
def diff_current_from_content(new_content)
|
|
50
51
|
result = nil
|
|
51
|
-
Tempfile.open("chef-diff") do |file|
|
|
52
|
+
Tempfile.open("chef-diff") do |file|
|
|
52
53
|
file.write new_content
|
|
53
|
-
file.close
|
|
54
|
+
file.close
|
|
54
55
|
result = diff_current file.path
|
|
55
56
|
end
|
|
56
57
|
result
|
|
@@ -96,12 +97,12 @@ class Chef
|
|
|
96
97
|
# -u: Unified diff format
|
|
97
98
|
result = shell_out("diff -u #{target_path} #{temp_path}" )
|
|
98
99
|
rescue Exception => e
|
|
99
|
-
# Should *not* receive this, but in some circumstances it seems that
|
|
100
|
+
# Should *not* receive this, but in some circumstances it seems that
|
|
100
101
|
# an exception can be thrown even using shell_out instead of shell_out!
|
|
101
102
|
return [ "Could not determine diff. Error: #{e.message}" ]
|
|
102
103
|
end
|
|
103
104
|
|
|
104
|
-
# diff will set a non-zero return code even when there's
|
|
105
|
+
# diff will set a non-zero return code even when there's
|
|
105
106
|
# valid stdout results, if it encounters something unexpected
|
|
106
107
|
# So as long as we have output, we'll show it.
|
|
107
108
|
if not result.stdout.empty?
|
|
@@ -118,7 +119,7 @@ class Chef
|
|
|
118
119
|
else
|
|
119
120
|
[ "(no diff)" ]
|
|
120
121
|
end
|
|
121
|
-
end
|
|
122
|
+
end
|
|
122
123
|
|
|
123
124
|
def whyrun_supported?
|
|
124
125
|
true
|
|
@@ -132,46 +133,20 @@ class Chef
|
|
|
132
133
|
@current_resource.path(@new_resource.path)
|
|
133
134
|
if !::File.directory?(@new_resource.path)
|
|
134
135
|
if ::File.exist?(@new_resource.path)
|
|
135
|
-
if
|
|
136
|
+
if @action != :create_if_missing
|
|
136
137
|
@current_resource.checksum(checksum(@new_resource.path))
|
|
137
138
|
end
|
|
138
139
|
end
|
|
139
140
|
end
|
|
140
|
-
load_current_resource_attrs
|
|
141
141
|
setup_acl
|
|
142
142
|
|
|
143
143
|
@current_resource
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
-
def load_current_resource_attrs
|
|
147
|
-
if Chef::Platform.windows?
|
|
148
|
-
# TODO: To work around CHEF-3554, add support for Windows
|
|
149
|
-
# equivalent, or implicit resource reporting won't work for
|
|
150
|
-
# Windows.
|
|
151
|
-
return
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
if ::File.exist?(@new_resource.path)
|
|
155
|
-
stat = ::File.stat(@new_resource.path)
|
|
156
|
-
@current_resource.owner(stat.uid)
|
|
157
|
-
@current_resource.mode(stat.mode & 07777)
|
|
158
|
-
@current_resource.group(stat.gid)
|
|
159
|
-
|
|
160
|
-
if @new_resource.group.nil?
|
|
161
|
-
@new_resource.group(@current_resource.group)
|
|
162
|
-
end
|
|
163
|
-
if @new_resource.owner.nil?
|
|
164
|
-
@new_resource.owner(@current_resource.owner)
|
|
165
|
-
end
|
|
166
|
-
if @new_resource.mode.nil?
|
|
167
|
-
@new_resource.mode(@current_resource.mode)
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
|
|
172
146
|
def setup_acl
|
|
173
|
-
|
|
174
|
-
|
|
147
|
+
return if Chef::Platform.windows?
|
|
148
|
+
acl_scanner = ScanAccessControl.new(@new_resource, @current_resource)
|
|
149
|
+
acl_scanner.set_all!
|
|
175
150
|
end
|
|
176
151
|
|
|
177
152
|
def define_resource_requirements
|
|
@@ -191,7 +166,7 @@ class Chef
|
|
|
191
166
|
# Make sure the file is deletable if it exists. Otherwise, fail.
|
|
192
167
|
requirements.assert(:delete) do |a|
|
|
193
168
|
a.assertion do
|
|
194
|
-
if ::File.exists?(@new_resource.path)
|
|
169
|
+
if ::File.exists?(@new_resource.path)
|
|
195
170
|
::File.writable?(@new_resource.path)
|
|
196
171
|
else
|
|
197
172
|
true
|
|
@@ -211,7 +186,7 @@ class Chef
|
|
|
211
186
|
unless compare_content
|
|
212
187
|
description = []
|
|
213
188
|
description << "update content in file #{@new_resource.path} from #{short_cksum(@current_resource.checksum)} to #{short_cksum(new_resource_content_checksum)}"
|
|
214
|
-
description << diff_current_from_content(@new_resource.content)
|
|
189
|
+
description << diff_current_from_content(@new_resource.content)
|
|
215
190
|
converge_by(description) do
|
|
216
191
|
backup @new_resource.path if ::File.exists?(@new_resource.path)
|
|
217
192
|
::File.open(@new_resource.path, "w") {|f| f.write @new_resource.content }
|
|
@@ -221,10 +196,10 @@ class Chef
|
|
|
221
196
|
end
|
|
222
197
|
|
|
223
198
|
# if you are using a tempfile before creating, you must
|
|
224
|
-
# override the default with the tempfile, since the
|
|
199
|
+
# override the default with the tempfile, since the
|
|
225
200
|
# file at @new_resource.path will not be updated on converge
|
|
226
201
|
def update_new_file_state(path=@new_resource.path)
|
|
227
|
-
if !::File.directory?(path)
|
|
202
|
+
if !::File.directory?(path)
|
|
228
203
|
@new_resource.checksum(checksum(path))
|
|
229
204
|
end
|
|
230
205
|
|
|
@@ -235,10 +210,8 @@ class Chef
|
|
|
235
210
|
return
|
|
236
211
|
end
|
|
237
212
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
@new_resource.mode(stat.mode & 07777)
|
|
241
|
-
@new_resource.group(stat.gid)
|
|
213
|
+
acl_scanner = ScanAccessControl.new(@new_resource, @new_resource)
|
|
214
|
+
acl_scanner.set_all!
|
|
242
215
|
end
|
|
243
216
|
|
|
244
217
|
def action_create
|
|
@@ -247,7 +220,7 @@ class Chef
|
|
|
247
220
|
desc = "create new file #{@new_resource.path}"
|
|
248
221
|
desc << " with content checksum #{short_cksum(new_resource_content_checksum)}" if new_resource.content
|
|
249
222
|
description << desc
|
|
250
|
-
description << diff_current_from_content(@new_resource.content)
|
|
223
|
+
description << diff_current_from_content(@new_resource.content)
|
|
251
224
|
|
|
252
225
|
converge_by(description) do
|
|
253
226
|
Chef::Log.info("entered create")
|
|
@@ -264,7 +237,7 @@ class Chef
|
|
|
264
237
|
|
|
265
238
|
def set_all_access_controls
|
|
266
239
|
if access_controls.requires_changes?
|
|
267
|
-
converge_by(access_controls.describe_changes) do
|
|
240
|
+
converge_by(access_controls.describe_changes) do
|
|
268
241
|
access_controls.set_all
|
|
269
242
|
#Update file state with new access values
|
|
270
243
|
update_new_file_state
|
|
@@ -282,7 +255,7 @@ class Chef
|
|
|
282
255
|
|
|
283
256
|
def action_delete
|
|
284
257
|
if ::File.exists?(@new_resource.path)
|
|
285
|
-
converge_by("delete file #{@new_resource.path}") do
|
|
258
|
+
converge_by("delete file #{@new_resource.path}") do
|
|
286
259
|
backup unless ::File.symlink?(@new_resource.path)
|
|
287
260
|
::File.delete(@new_resource.path)
|
|
288
261
|
Chef::Log.info("#{@new_resource} deleted file at #{@new_resource.path}")
|
|
@@ -342,12 +315,6 @@ class Chef
|
|
|
342
315
|
|
|
343
316
|
private
|
|
344
317
|
|
|
345
|
-
def managing_content?
|
|
346
|
-
return true if @new_resource.checksum
|
|
347
|
-
return true if !@new_resource.content.nil? && @action != :create_if_missing
|
|
348
|
-
false
|
|
349
|
-
end
|
|
350
|
-
|
|
351
318
|
def short_cksum(checksum)
|
|
352
319
|
return "none" if checksum.nil?
|
|
353
320
|
checksum.slice(0,6)
|