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/daemon.rb
CHANGED
|
@@ -46,10 +46,7 @@ class Chef
|
|
|
46
46
|
$stdout.reopen("/dev/null", "a")
|
|
47
47
|
$stderr.reopen($stdout)
|
|
48
48
|
save_pid_file
|
|
49
|
-
at_exit {
|
|
50
|
-
Chef::Log.debug("daemon pid #{Process.pid} in at_exit handler")
|
|
51
|
-
remove_pid_file
|
|
52
|
-
}
|
|
49
|
+
at_exit { remove_pid_file }
|
|
53
50
|
rescue NotImplementedError => e
|
|
54
51
|
Chef::Application.fatal!("There is no fork: #{e.message}")
|
|
55
52
|
end
|
|
@@ -110,9 +107,7 @@ class Chef
|
|
|
110
107
|
end
|
|
111
108
|
|
|
112
109
|
begin
|
|
113
|
-
|
|
114
|
-
File.open(file, "w") { |f| f.write(pid) }
|
|
115
|
-
Chef::Log.debug("Wrote #{pid} to #{file}")
|
|
110
|
+
File.open(file, "w") { |f| f.write(Process.pid.to_s) }
|
|
116
111
|
rescue Errno::EACCES => e
|
|
117
112
|
Chef::Application.fatal!("Couldn't write to pidfile #{file}, permission denied: #{e.message}")
|
|
118
113
|
end
|
|
@@ -120,17 +115,7 @@ class Chef
|
|
|
120
115
|
|
|
121
116
|
# Delete the PID from the filesystem
|
|
122
117
|
def remove_pid_file
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
daemon_pid = pid_from_file
|
|
126
|
-
my_pid = Process.pid
|
|
127
|
-
if daemon_pid != my_pid
|
|
128
|
-
Chef::Log.debug("My pid is #{my_pid}; not removing #{pid_file} which contains #{daemon_pid}")
|
|
129
|
-
return
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
FileUtils.rm(pid_file)
|
|
133
|
-
Chef::Log.debug("Removed #{pid_file}")
|
|
118
|
+
FileUtils.rm(pid_file) if File.exists?(pid_file)
|
|
134
119
|
end
|
|
135
120
|
|
|
136
121
|
# Change process user/group to those specified in Chef::Config
|
data/lib/chef/data_bag.rb
CHANGED
|
@@ -21,9 +21,7 @@
|
|
|
21
21
|
require 'chef/config'
|
|
22
22
|
require 'chef/mixin/params_validate'
|
|
23
23
|
require 'chef/mixin/from_file'
|
|
24
|
-
require 'chef/couchdb'
|
|
25
24
|
require 'chef/data_bag_item'
|
|
26
|
-
require 'chef/index_queue'
|
|
27
25
|
require 'chef/mash'
|
|
28
26
|
require 'chef/json_compat'
|
|
29
27
|
|
|
@@ -32,58 +30,18 @@ class Chef
|
|
|
32
30
|
|
|
33
31
|
include Chef::Mixin::FromFile
|
|
34
32
|
include Chef::Mixin::ParamsValidate
|
|
35
|
-
include Chef::IndexQueue::Indexable
|
|
36
33
|
|
|
37
34
|
VALID_NAME = /^[\-[:alnum:]_]+$/
|
|
38
35
|
|
|
39
|
-
DESIGN_DOCUMENT = {
|
|
40
|
-
"version" => 2,
|
|
41
|
-
"language" => "javascript",
|
|
42
|
-
"views" => {
|
|
43
|
-
"all" => {
|
|
44
|
-
"map" => <<-EOJS
|
|
45
|
-
function(doc) {
|
|
46
|
-
if (doc.chef_type == "data_bag") {
|
|
47
|
-
emit(doc.name, doc);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
EOJS
|
|
51
|
-
},
|
|
52
|
-
"all_id" => {
|
|
53
|
-
"map" => <<-EOJS
|
|
54
|
-
function(doc) {
|
|
55
|
-
if (doc.chef_type == "data_bag") {
|
|
56
|
-
emit(doc.name, doc.name);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
EOJS
|
|
60
|
-
},
|
|
61
|
-
"entries" => {
|
|
62
|
-
"map" => <<-EOJS
|
|
63
|
-
function(doc) {
|
|
64
|
-
if (doc.chef_type == "data_bag_item") {
|
|
65
|
-
emit(doc.data_bag, doc.raw_data.id);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
EOJS
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
36
|
def self.validate_name!(name)
|
|
74
37
|
unless name =~ VALID_NAME
|
|
75
38
|
raise Exceptions::InvalidDataBagName, "DataBags must have a name matching #{VALID_NAME.inspect}, you gave #{name.inspect}"
|
|
76
39
|
end
|
|
77
40
|
end
|
|
78
41
|
|
|
79
|
-
attr_accessor :couchdb_rev, :couchdb_id, :couchdb
|
|
80
|
-
|
|
81
42
|
# Create a new Chef::DataBag
|
|
82
|
-
def initialize
|
|
43
|
+
def initialize
|
|
83
44
|
@name = ''
|
|
84
|
-
@couchdb_rev = nil
|
|
85
|
-
@couchdb_id = nil
|
|
86
|
-
@couchdb = (couchdb || Chef::CouchDB.new)
|
|
87
45
|
end
|
|
88
46
|
|
|
89
47
|
def name(arg=nil)
|
|
@@ -100,7 +58,6 @@ class Chef
|
|
|
100
58
|
'json_class' => self.class.name,
|
|
101
59
|
"chef_type" => "data_bag",
|
|
102
60
|
}
|
|
103
|
-
result["_rev"] = @couchdb_rev if @couchdb_rev
|
|
104
61
|
result
|
|
105
62
|
end
|
|
106
63
|
|
|
@@ -121,20 +78,9 @@ class Chef
|
|
|
121
78
|
def self.json_create(o)
|
|
122
79
|
bag = new
|
|
123
80
|
bag.name(o["name"])
|
|
124
|
-
bag.couchdb_rev = o["_rev"] if o.has_key?("_rev")
|
|
125
|
-
bag.couchdb_id = o["_id"] if o.has_key?("_id")
|
|
126
|
-
bag.index_id = bag.couchdb_id
|
|
127
81
|
bag
|
|
128
82
|
end
|
|
129
83
|
|
|
130
|
-
# List all the Chef::DataBag objects in the CouchDB. If inflate is set to true, you will get
|
|
131
|
-
# the full list of all Roles, fully inflated.
|
|
132
|
-
def self.cdb_list(inflate=false, couchdb=nil)
|
|
133
|
-
rs = (couchdb || Chef::CouchDB.new).list("data_bags", inflate)
|
|
134
|
-
lookup = (inflate ? "value" : "key")
|
|
135
|
-
rs["rows"].collect { |r| r[lookup] }
|
|
136
|
-
end
|
|
137
|
-
|
|
138
84
|
def self.list(inflate=false)
|
|
139
85
|
if inflate
|
|
140
86
|
# Can't search for all data bags like other objects, fall back to N+1 :(
|
|
@@ -147,11 +93,6 @@ class Chef
|
|
|
147
93
|
end
|
|
148
94
|
end
|
|
149
95
|
|
|
150
|
-
# Load a Data Bag by name from CouchDB
|
|
151
|
-
def self.cdb_load(name, couchdb=nil)
|
|
152
|
-
(couchdb || Chef::CouchDB.new).load("data_bag", name)
|
|
153
|
-
end
|
|
154
|
-
|
|
155
96
|
# Load a Data Bag by name via either the RESTful API or local data_bag_path if run in solo mode
|
|
156
97
|
def self.load(name)
|
|
157
98
|
if Chef::Config[:solo]
|
|
@@ -169,37 +110,21 @@ class Chef
|
|
|
169
110
|
end
|
|
170
111
|
end
|
|
171
112
|
|
|
172
|
-
# Remove this Data Bag from CouchDB
|
|
173
|
-
def cdb_destroy
|
|
174
|
-
removed = @couchdb.delete("data_bag", @name, @couchdb_rev)
|
|
175
|
-
rs = @couchdb.get_view("data_bags", "entries", :include_docs => true, :startkey => @name, :endkey => @name)
|
|
176
|
-
rs["rows"].each do |row|
|
|
177
|
-
row["doc"].couchdb = couchdb
|
|
178
|
-
row["doc"].cdb_destroy
|
|
179
|
-
end
|
|
180
|
-
removed
|
|
181
|
-
end
|
|
182
|
-
|
|
183
113
|
def destroy
|
|
184
114
|
chef_server_rest.delete_rest("data/#{@name}")
|
|
185
115
|
end
|
|
186
116
|
|
|
187
|
-
# Save this Data Bag to the CouchDB
|
|
188
|
-
def cdb_save
|
|
189
|
-
results = @couchdb.store("data_bag", @name, self)
|
|
190
|
-
@couchdb_rev = results["rev"]
|
|
191
|
-
end
|
|
192
|
-
|
|
193
117
|
# Save the Data Bag via RESTful API
|
|
194
118
|
def save
|
|
195
119
|
begin
|
|
196
120
|
if Chef::Config[:why_run]
|
|
197
121
|
Chef::Log.warn("In whyrun mode, so NOT performing data bag save.")
|
|
198
122
|
else
|
|
199
|
-
|
|
123
|
+
chef_server_rest.put_rest("data/#{@name}", self)
|
|
200
124
|
end
|
|
201
125
|
rescue Net::HTTPServerException => e
|
|
202
|
-
raise e unless e.response.code == "
|
|
126
|
+
raise e unless e.response.code == "404"
|
|
127
|
+
chef_server_rest.post_rest("data", self)
|
|
203
128
|
end
|
|
204
129
|
self
|
|
205
130
|
end
|
|
@@ -210,24 +135,6 @@ class Chef
|
|
|
210
135
|
self
|
|
211
136
|
end
|
|
212
137
|
|
|
213
|
-
# List all the items in this Bag from CouchDB
|
|
214
|
-
# The self.load method does this through the REST API
|
|
215
|
-
def list(inflate=false)
|
|
216
|
-
rs = nil
|
|
217
|
-
if inflate
|
|
218
|
-
rs = @couchdb.get_view("data_bags", "entries", :include_docs => true, :startkey => @name, :endkey => @name)
|
|
219
|
-
rs["rows"].collect { |r| r["doc"] }
|
|
220
|
-
else
|
|
221
|
-
rs = @couchdb.get_view("data_bags", "entries", :startkey => @name, :endkey => @name)
|
|
222
|
-
rs["rows"].collect { |r| r["value"] }
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
# Set up our CouchDB design document
|
|
227
|
-
def self.create_design_document(couchdb=nil)
|
|
228
|
-
(couchdb || Chef::CouchDB.new).create_design_document("data_bags", DESIGN_DOCUMENT)
|
|
229
|
-
end
|
|
230
|
-
|
|
231
138
|
# As a string
|
|
232
139
|
def to_s
|
|
233
140
|
"data_bag[#{@name}]"
|
data/lib/chef/data_bag_item.rb
CHANGED
|
@@ -23,8 +23,6 @@ require 'forwardable'
|
|
|
23
23
|
require 'chef/config'
|
|
24
24
|
require 'chef/mixin/params_validate'
|
|
25
25
|
require 'chef/mixin/from_file'
|
|
26
|
-
require 'chef/couchdb'
|
|
27
|
-
require 'chef/index_queue'
|
|
28
26
|
require 'chef/data_bag'
|
|
29
27
|
require 'chef/mash'
|
|
30
28
|
require 'chef/json_compat'
|
|
@@ -36,35 +34,9 @@ class Chef
|
|
|
36
34
|
|
|
37
35
|
include Chef::Mixin::FromFile
|
|
38
36
|
include Chef::Mixin::ParamsValidate
|
|
39
|
-
include Chef::IndexQueue::Indexable
|
|
40
37
|
|
|
41
38
|
VALID_ID = /^[\-[:alnum:]_]+$/
|
|
42
39
|
|
|
43
|
-
DESIGN_DOCUMENT = {
|
|
44
|
-
"version" => 1,
|
|
45
|
-
"language" => "javascript",
|
|
46
|
-
"views" => {
|
|
47
|
-
"all" => {
|
|
48
|
-
"map" => <<-EOJS
|
|
49
|
-
function(doc) {
|
|
50
|
-
if (doc.chef_type == "data_bag_item") {
|
|
51
|
-
emit(doc.name, doc);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
EOJS
|
|
55
|
-
},
|
|
56
|
-
"all_id" => {
|
|
57
|
-
"map" => <<-EOJS
|
|
58
|
-
function(doc) {
|
|
59
|
-
if (doc.chef_type == "data_bag_item") {
|
|
60
|
-
emit(doc.name, doc.name);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
EOJS
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
40
|
def self.validate_id!(id_str)
|
|
69
41
|
if id_str.nil? || ( id_str !~ VALID_ID )
|
|
70
42
|
raise Exceptions::InvalidDataBagItemID, "Data Bag items must have an id matching #{VALID_ID.inspect}, you gave: #{id_str.inspect}"
|
|
@@ -74,16 +46,12 @@ class Chef
|
|
|
74
46
|
# Define all Hash's instance methods as delegating to @raw_data
|
|
75
47
|
def_delegators(:@raw_data, *(Hash.instance_methods - Object.instance_methods))
|
|
76
48
|
|
|
77
|
-
attr_accessor :couchdb_rev, :couchdb_id, :couchdb
|
|
78
49
|
attr_reader :raw_data
|
|
79
50
|
|
|
80
51
|
# Create a new Chef::DataBagItem
|
|
81
|
-
def initialize
|
|
82
|
-
@couchdb_rev = nil
|
|
83
|
-
@couchdb_id = nil
|
|
52
|
+
def initialize
|
|
84
53
|
@data_bag = nil
|
|
85
54
|
@raw_data = Mash.new
|
|
86
|
-
@couchdb = couchdb || Chef::CouchDB.new
|
|
87
55
|
end
|
|
88
56
|
|
|
89
57
|
def chef_server_rest
|
|
@@ -138,7 +106,6 @@ class Chef
|
|
|
138
106
|
result = self.raw_data
|
|
139
107
|
result["chef_type"] = "data_bag_item"
|
|
140
108
|
result["data_bag"] = self.data_bag
|
|
141
|
-
result["_rev"] = @couchdb_rev if @couchdb_rev
|
|
142
109
|
result
|
|
143
110
|
end
|
|
144
111
|
|
|
@@ -151,7 +118,6 @@ class Chef
|
|
|
151
118
|
"data_bag" => self.data_bag,
|
|
152
119
|
"raw_data" => self.raw_data
|
|
153
120
|
}
|
|
154
|
-
result["_rev"] = @couchdb_rev if @couchdb_rev
|
|
155
121
|
result.to_json(*a)
|
|
156
122
|
end
|
|
157
123
|
|
|
@@ -169,24 +135,11 @@ class Chef
|
|
|
169
135
|
o.delete("chef_type")
|
|
170
136
|
o.delete("json_class")
|
|
171
137
|
o.delete("name")
|
|
172
|
-
|
|
173
|
-
bag_item.couchdb_rev = o["_rev"]
|
|
174
|
-
o.delete("_rev")
|
|
175
|
-
end
|
|
176
|
-
if o.has_key?("_id")
|
|
177
|
-
bag_item.couchdb_id = o["_id"]
|
|
178
|
-
bag_item.index_id = bag_item.couchdb_id
|
|
179
|
-
o.delete("_id")
|
|
180
|
-
end
|
|
138
|
+
|
|
181
139
|
bag_item.raw_data = Mash.new(o["raw_data"])
|
|
182
140
|
bag_item
|
|
183
141
|
end
|
|
184
142
|
|
|
185
|
-
# Load a Data Bag Item by name from CouchDB
|
|
186
|
-
def self.cdb_load(data_bag, name, couchdb=nil)
|
|
187
|
-
(couchdb || Chef::CouchDB.new).load("data_bag_item", object_name(data_bag, name))
|
|
188
|
-
end
|
|
189
|
-
|
|
190
143
|
# Load a Data Bag Item by name via either the RESTful API or local data_bag_path if run in solo mode
|
|
191
144
|
def self.load(data_bag, name)
|
|
192
145
|
if Chef::Config[:solo]
|
|
@@ -205,21 +158,10 @@ class Chef
|
|
|
205
158
|
end
|
|
206
159
|
end
|
|
207
160
|
|
|
208
|
-
# Remove this Data Bag Item from CouchDB
|
|
209
|
-
def cdb_destroy
|
|
210
|
-
Chef::Log.debug "Destroying data bag item: #{self.inspect}"
|
|
211
|
-
@couchdb.delete("data_bag_item", object_name, @couchdb_rev)
|
|
212
|
-
end
|
|
213
|
-
|
|
214
161
|
def destroy(data_bag=data_bag, databag_item=name)
|
|
215
162
|
chef_server_rest.delete_rest("data/#{data_bag}/#{databag_item}")
|
|
216
163
|
end
|
|
217
164
|
|
|
218
|
-
# Save this Data Bag Item to CouchDB
|
|
219
|
-
def cdb_save
|
|
220
|
-
@couchdb_rev = @couchdb.store("data_bag_item", object_name, self)["rev"]
|
|
221
|
-
end
|
|
222
|
-
|
|
223
165
|
# Save this Data Bag Item via RESTful API
|
|
224
166
|
def save(item_id=@raw_data['id'])
|
|
225
167
|
r = chef_server_rest
|
|
@@ -242,11 +184,6 @@ class Chef
|
|
|
242
184
|
self
|
|
243
185
|
end
|
|
244
186
|
|
|
245
|
-
# Set up our CouchDB design document
|
|
246
|
-
def self.create_design_document(couchdb=nil)
|
|
247
|
-
(couchdb || Chef::CouchDB.new).create_design_document("data_bag_items", DESIGN_DOCUMENT)
|
|
248
|
-
end
|
|
249
|
-
|
|
250
187
|
def ==(other)
|
|
251
188
|
other.respond_to?(:to_hash) &&
|
|
252
189
|
other.respond_to?(:data_bag) &&
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
|
4
|
+
# Copyright:: Copyright (c) 2009 Opscode, Inc.
|
|
5
|
+
# Copyright:: Copyright (c) 2009 Daniel DeLeo
|
|
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 'digest'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Digester
|
|
25
|
+
|
|
26
|
+
def self.instance
|
|
27
|
+
@instance ||= new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.checksum_for_file(*args)
|
|
31
|
+
instance.checksum_for_file(*args)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def validate_checksum(*args)
|
|
35
|
+
self.class.validate_checksum(*args)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def checksum_for_file(file)
|
|
39
|
+
generate_checksum(file)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def generate_checksum(file)
|
|
43
|
+
checksum_file(file, Digest::SHA256.new)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.generate_md5_checksum_for_file(*args)
|
|
47
|
+
instance.generate_md5_checksum_for_file(*args)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def generate_md5_checksum_for_file(file)
|
|
51
|
+
checksum_file(file, Digest::MD5.new)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def generate_md5_checksum(io)
|
|
55
|
+
checksum_io(io, Digest::MD5.new)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def checksum_file(file, digest)
|
|
61
|
+
File.open(file, 'rb') { |f| checksum_io(f, digest) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def checksum_io(io, digest)
|
|
65
|
+
while chunk = io.read(1024 * 8)
|
|
66
|
+
digest.update(chunk)
|
|
67
|
+
end
|
|
68
|
+
digest.hexdigest
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
data/lib/chef/dsl.rb
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'chef/search/query'
|
|
20
|
+
require 'chef/data_bag'
|
|
21
|
+
require 'chef/data_bag_item'
|
|
22
|
+
require 'chef/encrypted_data_bag_item'
|
|
23
|
+
|
|
24
|
+
class Chef
|
|
25
|
+
module DSL
|
|
26
|
+
|
|
27
|
+
# ==Chef::DSL::DataQuery
|
|
28
|
+
# Provides DSL for querying data from the chef-server via search or data
|
|
29
|
+
# bag.
|
|
30
|
+
module DataQuery
|
|
31
|
+
|
|
32
|
+
def search(*args, &block)
|
|
33
|
+
# If you pass a block, or have at least the start argument, do raw result parsing
|
|
34
|
+
#
|
|
35
|
+
# Otherwise, do the iteration for the end user
|
|
36
|
+
if Kernel.block_given? || args.length >= 4
|
|
37
|
+
Chef::Search::Query.new.search(*args, &block)
|
|
38
|
+
else
|
|
39
|
+
results = Array.new
|
|
40
|
+
Chef::Search::Query.new.search(*args) do |o|
|
|
41
|
+
results << o
|
|
42
|
+
end
|
|
43
|
+
results
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def data_bag(bag)
|
|
48
|
+
DataBag.validate_name!(bag.to_s)
|
|
49
|
+
rbag = DataBag.load(bag)
|
|
50
|
+
rbag.keys
|
|
51
|
+
rescue Exception
|
|
52
|
+
Log.error("Failed to list data bag items in data bag: #{bag.inspect}")
|
|
53
|
+
raise
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def data_bag_item(bag, item)
|
|
57
|
+
DataBag.validate_name!(bag.to_s)
|
|
58
|
+
DataBagItem.validate_id!(item)
|
|
59
|
+
DataBagItem.load(bag, item)
|
|
60
|
+
rescue Exception
|
|
61
|
+
Log.error("Failed to load data bag item: #{bag.inspect} #{item.inspect}")
|
|
62
|
+
raise
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|