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
|
@@ -39,28 +39,16 @@ class Chef
|
|
|
39
39
|
def create_group
|
|
40
40
|
command = "pw groupadd"
|
|
41
41
|
command << set_options
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
run_command(:command => command)
|
|
45
|
-
else
|
|
46
|
-
member_options.each do |option|
|
|
47
|
-
run_command(:command => command + option)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
42
|
+
command << set_members_option
|
|
43
|
+
run_command(:command => command)
|
|
50
44
|
end
|
|
51
45
|
|
|
52
46
|
# Manage the group when it already exists
|
|
53
47
|
def manage_group
|
|
54
48
|
command = "pw groupmod"
|
|
55
49
|
command << set_options
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
run_command(:command => command)
|
|
59
|
-
else
|
|
60
|
-
member_options.each do |option|
|
|
61
|
-
run_command(:command => command + option)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
50
|
+
command << set_members_option
|
|
51
|
+
run_command(:command => command)
|
|
64
52
|
end
|
|
65
53
|
|
|
66
54
|
# Remove the group
|
|
@@ -82,52 +70,21 @@ class Chef
|
|
|
82
70
|
end
|
|
83
71
|
|
|
84
72
|
# Set the membership option depending on the current resource states
|
|
85
|
-
def
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if @new_resource.append
|
|
91
|
-
# Append is set so we will only add members given in the
|
|
92
|
-
# members list and remove members given in the
|
|
93
|
-
# excluded_members list.
|
|
94
|
-
if @new_resource.members && !@new_resource.members.empty?
|
|
95
|
-
@new_resource.members.each do |member|
|
|
96
|
-
members_to_be_added << member if !@current_resource.members.include?(member)
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
if @new_resource.excluded_members && !@new_resource.excluded_members.empty?
|
|
101
|
-
@new_resource.excluded_members.each do |member|
|
|
102
|
-
members_to_be_removed << member if @current_resource.members.include?(member)
|
|
103
|
-
end
|
|
104
|
-
end
|
|
73
|
+
def set_members_option
|
|
74
|
+
opt = ""
|
|
75
|
+
unless @new_resource.members.empty?
|
|
76
|
+
opt << " -M #{@new_resource.members.join(',')}"
|
|
77
|
+
Chef::Log.debug("#{@new_resource} setting group members to #{@new_resource.members.join(', ')}")
|
|
105
78
|
else
|
|
106
|
-
#
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
#
|
|
112
|
-
if members_to_be_added.include? member
|
|
113
|
-
members_to_be_added.delete member
|
|
114
|
-
else
|
|
115
|
-
members_to_be_removed << member
|
|
116
|
-
end
|
|
79
|
+
# New member list is empty so we should delete any old group members
|
|
80
|
+
unless @current_resource.members.empty?
|
|
81
|
+
opt << " -d #{@current_resource.members.join(',')}"
|
|
82
|
+
Chef::Log.debug("#{@new_resource} removing group members #{@current_resource.members.join(', ')}")
|
|
83
|
+
else
|
|
84
|
+
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members")
|
|
117
85
|
end
|
|
118
86
|
end
|
|
119
|
-
|
|
120
|
-
unless members_to_be_added.empty?
|
|
121
|
-
Chef::Log.debug("#{@new_resource} adding group members: #{members_to_be_added.join(',')}")
|
|
122
|
-
opts << " -m #{members_to_be_added.join(',')}"
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
unless members_to_be_removed.empty?
|
|
126
|
-
Chef::Log.debug("#{@new_resource} removing group members: #{members_to_be_removed.join(',')}")
|
|
127
|
-
opts << " -d #{members_to_be_removed.join(',')}"
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
opts
|
|
87
|
+
opt
|
|
131
88
|
end
|
|
132
89
|
|
|
133
90
|
end
|
|
@@ -39,24 +39,21 @@ class Chef
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def
|
|
43
|
-
unless @
|
|
44
|
-
|
|
42
|
+
def modify_group_members
|
|
43
|
+
unless @new_resource.members.empty?
|
|
44
|
+
if(@new_resource.append)
|
|
45
|
+
@new_resource.members.each do |member|
|
|
46
|
+
Chef::Log.debug("#{@new_resource} appending member #{member} to group #{@new_resource.group_name}")
|
|
47
|
+
shell_out!("groupmod -A #{member} #{@new_resource.group_name}")
|
|
48
|
+
end
|
|
49
|
+
else
|
|
50
|
+
Chef::Log.debug("#{@new_resource} setting group members to #{@new_resource.members.join(', ')}")
|
|
51
|
+
shell_out!("groupmod -A #{@new_resource.members.join(',')} #{@new_resource.group_name}")
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members")
|
|
45
55
|
end
|
|
46
|
-
|
|
47
|
-
unless members.empty?
|
|
48
|
-
shell_out!("groupmod -A #{members.join(',')} #{@new_resource.group_name}")
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def add_member(member)
|
|
53
|
-
shell_out!("groupmod -A #{member} #{@new_resource.group_name}")
|
|
54
56
|
end
|
|
55
|
-
|
|
56
|
-
def remove_member(member)
|
|
57
|
-
shell_out!("groupmod -R #{member} #{@new_resource.group_name}")
|
|
58
|
-
end
|
|
59
|
-
|
|
60
57
|
end
|
|
61
58
|
end
|
|
62
59
|
end
|
|
@@ -17,14 +17,12 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require 'chef/provider/group/groupadd'
|
|
20
|
-
require 'chef/mixin/shell_out'
|
|
21
20
|
|
|
22
21
|
class Chef
|
|
23
22
|
class Provider
|
|
24
23
|
class Group
|
|
25
24
|
class Usermod < Chef::Provider::Group::Groupadd
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
|
|
28
26
|
def load_current_resource
|
|
29
27
|
super
|
|
30
28
|
end
|
|
@@ -38,52 +36,32 @@ class Chef
|
|
|
38
36
|
# No whyrun alternative: this component should be available in the base install of any given system that uses it
|
|
39
37
|
end
|
|
40
38
|
|
|
41
|
-
requirements.assert(:modify, :
|
|
42
|
-
a.assertion { @new_resource.members.empty? || @new_resource.append }
|
|
39
|
+
requirements.assert(:modify, :create) do |a|
|
|
40
|
+
a.assertion { @new_resource.members.empty? || @new_resource.append }
|
|
43
41
|
a.failure_message Chef::Exceptions::Group, "setting group members directly is not supported by #{self.to_s}, must set append true in group"
|
|
44
42
|
# No whyrun alternative - this action is simply not supported.
|
|
45
43
|
end
|
|
46
|
-
|
|
47
|
-
requirements.assert(:all_actions) do |a|
|
|
48
|
-
a.assertion { @new_resource.excluded_members.empty? }
|
|
49
|
-
a.failure_message Chef::Exceptions::Group, "excluded_members is not supported by #{self.to_s}"
|
|
50
|
-
# No whyrun alternative - this action is simply not supported.
|
|
51
|
-
end
|
|
52
44
|
end
|
|
45
|
+
|
|
46
|
+
def modify_group_members
|
|
47
|
+
case node[:platform]
|
|
48
|
+
when "openbsd", "netbsd", "aix", "solaris2"
|
|
49
|
+
append_flags = "-G"
|
|
50
|
+
when "solaris"
|
|
51
|
+
append_flags = "-a -G"
|
|
52
|
+
end
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
members.each do |member|
|
|
61
|
-
add_member(member)
|
|
54
|
+
unless @new_resource.members.empty?
|
|
55
|
+
if(@new_resource.append)
|
|
56
|
+
@new_resource.members.each do |member|
|
|
57
|
+
Chef::Log.debug("#{@new_resource} appending member #{member} to group #{@new_resource.group_name}")
|
|
58
|
+
run_command(:command => "usermod #{append_flags} #{@new_resource.group_name} #{member}" )
|
|
59
|
+
end
|
|
62
60
|
end
|
|
63
61
|
else
|
|
64
|
-
|
|
62
|
+
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members")
|
|
65
63
|
end
|
|
66
64
|
end
|
|
67
|
-
|
|
68
|
-
def add_member(member)
|
|
69
|
-
shell_out!("usermod #{append_flags} #{@new_resource.group_name} #{member}")
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def remove_member(member)
|
|
73
|
-
# This provider only supports adding members with
|
|
74
|
-
# append. This function should never be called.
|
|
75
|
-
raise Chef::Exceptions::UnsupportedAction, "Removing members members is not supported by #{self.to_s}"
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def append_flags
|
|
79
|
-
case node[:platform]
|
|
80
|
-
when "openbsd", "netbsd", "aix", "solaris2", "smartos"
|
|
81
|
-
"-G"
|
|
82
|
-
when "solaris", "suse", "opensuse"
|
|
83
|
-
"-a -G"
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
65
|
end
|
|
88
66
|
end
|
|
89
67
|
end
|
|
@@ -57,20 +57,13 @@ class Chef
|
|
|
57
57
|
|
|
58
58
|
def manage_group
|
|
59
59
|
if @new_resource.append
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
begin
|
|
61
|
+
#ERROR_MEMBER_IN_ALIAS if a member already exists in the group
|
|
62
|
+
@net_group.local_add_members(@new_resource.members)
|
|
63
|
+
rescue
|
|
64
|
+
members = @new_resource.members + @current_resource.members
|
|
65
|
+
@net_group.local_set_members(members.uniq)
|
|
63
66
|
end
|
|
64
|
-
|
|
65
|
-
# local_add_members will raise ERROR_MEMBER_IN_ALIAS if a
|
|
66
|
-
# member already exists in the group.
|
|
67
|
-
@net_group.local_add_members(members_to_be_added) unless members_to_be_added.empty?
|
|
68
|
-
|
|
69
|
-
members_to_be_removed = [ ]
|
|
70
|
-
@new_resource.excluded_members.each do |member|
|
|
71
|
-
members_to_be_removed << member if @current_resource.members.include?(member)
|
|
72
|
-
end
|
|
73
|
-
@net_group.local_delete_members(members_to_be_removed) unless members_to_be_removed.empty?
|
|
74
67
|
else
|
|
75
68
|
@net_group.local_set_members(@new_resource.members)
|
|
76
69
|
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.
|
|
@@ -36,13 +36,9 @@ class Chef
|
|
|
36
36
|
def action_head
|
|
37
37
|
message = check_message(@new_resource.message)
|
|
38
38
|
# returns true from Chef::REST if returns 2XX (Net::HTTPSuccess)
|
|
39
|
-
modified = @rest.
|
|
40
|
-
|
|
41
|
-
@
|
|
42
|
-
@new_resource.headers,
|
|
43
|
-
false,
|
|
44
|
-
10,
|
|
45
|
-
false
|
|
39
|
+
modified = @rest.head(
|
|
40
|
+
"#{@new_resource.url}?message=#{message}",
|
|
41
|
+
@new_resource.headers
|
|
46
42
|
)
|
|
47
43
|
Chef::Log.info("#{@new_resource} HEAD to #{@new_resource.url} successful")
|
|
48
44
|
Chef::Log.debug("#{@new_resource} HEAD request response: #{modified}")
|
|
@@ -53,76 +49,63 @@ class Chef
|
|
|
53
49
|
end
|
|
54
50
|
|
|
55
51
|
# Send a GET request to @new_resource.url, with ?message=@new_resource.message
|
|
56
|
-
def action_get
|
|
52
|
+
def action_get
|
|
57
53
|
converge_by("#{@new_resource} GET to #{@new_resource.url}") do
|
|
58
54
|
|
|
59
55
|
message = check_message(@new_resource.message)
|
|
60
|
-
body = @rest.
|
|
61
|
-
|
|
62
|
-
@rest.create_url("#{@new_resource.url}?message=#{message}"),
|
|
63
|
-
@new_resource.headers,
|
|
56
|
+
body = @rest.get(
|
|
57
|
+
"#{@new_resource.url}?message=#{message}",
|
|
64
58
|
false,
|
|
65
|
-
|
|
66
|
-
false
|
|
59
|
+
@new_resource.headers
|
|
67
60
|
)
|
|
68
61
|
Chef::Log.info("#{@new_resource} GET to #{@new_resource.url} successful")
|
|
69
62
|
Chef::Log.debug("#{@new_resource} GET request response: #{body}")
|
|
70
63
|
end
|
|
71
64
|
end
|
|
72
|
-
|
|
65
|
+
|
|
73
66
|
# Send a PUT request to @new_resource.url, with the message as the payload
|
|
74
|
-
def action_put
|
|
67
|
+
def action_put
|
|
75
68
|
converge_by("#{@new_resource} PUT to #{@new_resource.url}") do
|
|
76
69
|
message = check_message(@new_resource.message)
|
|
77
|
-
body = @rest.
|
|
78
|
-
|
|
79
|
-
@rest.create_url("#{@new_resource.url}"),
|
|
80
|
-
@new_resource.headers,
|
|
70
|
+
body = @rest.put(
|
|
71
|
+
"#{@new_resource.url}",
|
|
81
72
|
message,
|
|
82
|
-
|
|
83
|
-
false
|
|
73
|
+
@new_resource.headers
|
|
84
74
|
)
|
|
85
75
|
Chef::Log.info("#{@new_resource} PUT to #{@new_resource.url} successful")
|
|
86
76
|
Chef::Log.debug("#{@new_resource} PUT request response: #{body}")
|
|
87
77
|
end
|
|
88
78
|
end
|
|
89
|
-
|
|
79
|
+
|
|
90
80
|
# Send a POST request to @new_resource.url, with the message as the payload
|
|
91
81
|
def action_post
|
|
92
82
|
converge_by("#{@new_resource} POST to #{@new_resource.url}") do
|
|
93
83
|
message = check_message(@new_resource.message)
|
|
94
|
-
body = @rest.
|
|
95
|
-
|
|
96
|
-
@rest.create_url("#{@new_resource.url}"),
|
|
97
|
-
@new_resource.headers,
|
|
84
|
+
body = @rest.post(
|
|
85
|
+
"#{@new_resource.url}",
|
|
98
86
|
message,
|
|
99
|
-
|
|
100
|
-
false
|
|
87
|
+
@new_resource.headers
|
|
101
88
|
)
|
|
102
89
|
Chef::Log.info("#{@new_resource} POST to #{@new_resource.url} message: #{message.inspect} successful")
|
|
103
90
|
Chef::Log.debug("#{@new_resource} POST request response: #{body}")
|
|
104
91
|
end
|
|
105
92
|
end
|
|
106
|
-
|
|
93
|
+
|
|
107
94
|
# Send a DELETE request to @new_resource.url
|
|
108
95
|
def action_delete
|
|
109
96
|
converge_by("#{@new_resource} DELETE to #{@new_resource.url}") do
|
|
110
|
-
body = @rest.
|
|
111
|
-
|
|
112
|
-
@
|
|
113
|
-
@new_resource.headers,
|
|
114
|
-
false,
|
|
115
|
-
10,
|
|
116
|
-
false
|
|
97
|
+
body = @rest.delete(
|
|
98
|
+
"#{@new_resource.url}",
|
|
99
|
+
@new_resource.headers
|
|
117
100
|
)
|
|
118
101
|
@new_resource.updated_by_last_action(true)
|
|
119
102
|
Chef::Log.info("#{@new_resource} DELETE to #{@new_resource.url} successful")
|
|
120
103
|
Chef::Log.debug("#{@new_resource} DELETE request response: #{body}")
|
|
121
104
|
end
|
|
122
105
|
end
|
|
123
|
-
|
|
106
|
+
|
|
124
107
|
private
|
|
125
|
-
|
|
108
|
+
|
|
126
109
|
def check_message(message)
|
|
127
110
|
if message.kind_of?(Proc)
|
|
128
111
|
message.call
|
|
@@ -130,7 +113,7 @@ class Chef
|
|
|
130
113
|
message
|
|
131
114
|
end
|
|
132
115
|
end
|
|
133
|
-
|
|
116
|
+
|
|
134
117
|
end
|
|
135
118
|
end
|
|
136
119
|
end
|
data/lib/chef/provider/link.rb
CHANGED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
4
|
+
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
5
|
+
# Copyright:: Copyright (c) 2008-2012 Opscode, Inc.
|
|
6
|
+
# License:: Apache License, Version 2.0
|
|
7
|
+
#
|
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
# See the License for the specific language governing permissions and
|
|
18
|
+
# limitations under the License.
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
require 'chef/provider'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Provider
|
|
25
|
+
|
|
26
|
+
# == Chef::Provider::LWRPBase
|
|
27
|
+
# Base class from which LWRP providers inherit.
|
|
28
|
+
class LWRPBase < Provider
|
|
29
|
+
|
|
30
|
+
# Chef::Provider::LWRPBase::InlineResources
|
|
31
|
+
# Implementation of inline resource convergence for LWRP providers. See
|
|
32
|
+
# Provider::LWRPBase.use_inline_resources for a longer explanation.
|
|
33
|
+
#
|
|
34
|
+
# This code is restricted to a module so that it can be selectively
|
|
35
|
+
# applied to providers on an opt-in basis.
|
|
36
|
+
module InlineResources
|
|
37
|
+
|
|
38
|
+
# Class methods for InlineResources. Overrides the `action` DSL method
|
|
39
|
+
# with one that enables inline resource convergence.
|
|
40
|
+
module ClassMethods
|
|
41
|
+
# Defines an action method on the provider, using
|
|
42
|
+
# recipe_eval_with_update_check to execute the given block.
|
|
43
|
+
def action(name, &block)
|
|
44
|
+
define_method("action_#{name}") do
|
|
45
|
+
recipe_eval_with_update_check(&block)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Executes the given block in a temporary run_context with its own
|
|
51
|
+
# resource collection. After the block is executed, any resources
|
|
52
|
+
# declared inside are converged, and if any are updated, the
|
|
53
|
+
# new_resource will be marked updated.
|
|
54
|
+
def recipe_eval_with_update_check(&block)
|
|
55
|
+
saved_run_context = @run_context
|
|
56
|
+
temp_run_context = @run_context.dup
|
|
57
|
+
@run_context = temp_run_context
|
|
58
|
+
@run_context.resource_collection = Chef::ResourceCollection.new
|
|
59
|
+
|
|
60
|
+
return_value = instance_eval(&block)
|
|
61
|
+
Chef::Runner.new(@run_context).converge
|
|
62
|
+
return_value
|
|
63
|
+
ensure
|
|
64
|
+
@run_context = saved_run_context
|
|
65
|
+
if temp_run_context.resource_collection.any? {|r| r.updated? }
|
|
66
|
+
new_resource.updated_by_last_action(true)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
extend Chef::Mixin::ConvertToClassName
|
|
73
|
+
extend Chef::Mixin::FromFile
|
|
74
|
+
|
|
75
|
+
include Chef::DSL::Recipe
|
|
76
|
+
|
|
77
|
+
# These were previously provided by Chef::Mixin::RecipeDefinitionDSLCore.
|
|
78
|
+
# They are not included by its replacment, Chef::DSL::Recipe, but
|
|
79
|
+
# they may be used in existing LWRPs.
|
|
80
|
+
include Chef::DSL::PlatformIntrospection
|
|
81
|
+
include Chef::DSL::DataQuery
|
|
82
|
+
|
|
83
|
+
def self.build_from_file(cookbook_name, filename, run_context)
|
|
84
|
+
provider_name = filename_to_qualified_string(cookbook_name, filename)
|
|
85
|
+
|
|
86
|
+
# Add log entry if we override an existing light-weight provider.
|
|
87
|
+
class_name = convert_to_class_name(provider_name)
|
|
88
|
+
|
|
89
|
+
if Chef::Provider.const_defined?(class_name)
|
|
90
|
+
Chef::Log.info("#{class_name} light-weight provider already initialized -- overriding!")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
provider_class = Class.new(self)
|
|
94
|
+
provider_class.class_from_file(filename)
|
|
95
|
+
|
|
96
|
+
class_name = convert_to_class_name(provider_name)
|
|
97
|
+
Chef::Provider.const_set(class_name, provider_class)
|
|
98
|
+
Chef::Log.debug("Loaded contents of #{filename} into a provider named #{provider_name} defined in Chef::Provider::#{class_name}")
|
|
99
|
+
|
|
100
|
+
provider_class
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Enables inline evaluation of resources in provider actions.
|
|
104
|
+
#
|
|
105
|
+
# Without this option, any resources declared inside the LWRP are added
|
|
106
|
+
# to the resource collection after the current position at the time the
|
|
107
|
+
# action is executed. Because they are added to the primary resource
|
|
108
|
+
# collection for the chef run, they can notify other resources outside
|
|
109
|
+
# the LWRP, and potentially be notified by resources outside the LWRP
|
|
110
|
+
# (but this is complicated by the fact that they don't exist until the
|
|
111
|
+
# provider executes). In this mode, it is impossible to correctly set the
|
|
112
|
+
# updated_by_last_action flag on the parent LWRP resource, since it
|
|
113
|
+
# executes and returns before its component resources are run.
|
|
114
|
+
#
|
|
115
|
+
# With this option enabled, each action creates a temporary run_context
|
|
116
|
+
# with its own resource collection, evaluates the action's code in that
|
|
117
|
+
# context, and then converges the resources created. If any resources
|
|
118
|
+
# were updated, then this provider's new_resource will be marked updated.
|
|
119
|
+
#
|
|
120
|
+
# In this mode, resources created within the LWRP cannot interact with
|
|
121
|
+
# external resources via notifies, though notifications to other
|
|
122
|
+
# resources within the LWRP will work. Delayed notifications are executed
|
|
123
|
+
# at the conclusion of the provider's action, *not* at the end of the
|
|
124
|
+
# main chef run.
|
|
125
|
+
#
|
|
126
|
+
# This mode of evaluation is experimental, but is believed to be a better
|
|
127
|
+
# set of tradeoffs than the append-after mode, so it will likely become
|
|
128
|
+
# the default in a future major release of Chef.
|
|
129
|
+
#
|
|
130
|
+
def self.use_inline_resources
|
|
131
|
+
extend InlineResources::ClassMethods
|
|
132
|
+
include InlineResources
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# DSL for defining a provider's actions.
|
|
136
|
+
def self.action(name, &block)
|
|
137
|
+
define_method("action_#{name}") do
|
|
138
|
+
instance_eval(&block)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# no-op `load_current_resource`. Allows simple LWRP providers to work
|
|
143
|
+
# without defining this method explicitly (silences
|
|
144
|
+
# Chef::Exceptions::Override exception)
|
|
145
|
+
def load_current_resource
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|