chef 10.34.6 → 11.0.0.beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +4 -12
- data/bin/chef-apply +25 -0
- data/bin/chef-shell +34 -0
- data/bin/shef +6 -5
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
- data/distro/common/html/chef-solo.8.html +18 -12
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +10 -7
- data/distro/common/html/knife-data-bag.1.html +10 -7
- data/distro/common/html/knife-environment.1.html +8 -6
- data/distro/common/html/knife-exec.1.html +9 -9
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +8 -13
- data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +15 -2
- data/distro/common/man/man1/knife-data-bag.1 +15 -2
- data/distro/common/man/man1/knife-environment.1 +12 -2
- data/distro/common/man/man1/knife-exec.1 +4 -7
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +3 -6
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +36 -4
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
- data/distro/common/markdown/man1/knife-exec.mkd +11 -6
- data/distro/common/markdown/man1/knife.mkd +4 -9
- data/distro/debian/etc/default/chef-client +0 -1
- data/distro/debian/etc/init.d/chef-client +2 -2
- data/lib/chef.rb +2 -5
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +71 -14
- data/lib/chef/application/apply.rb +160 -0
- data/lib/chef/application/client.rb +25 -18
- data/lib/chef/application/knife.rb +0 -2
- data/lib/chef/application/solo.rb +23 -8
- data/lib/chef/application/windows_service.rb +5 -2
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +11 -0
- data/lib/chef/chef_fs/command_line.rb +232 -0
- data/lib/chef/chef_fs/file_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +358 -0
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb} +12 -15
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
- data/lib/chef/{index_queue.rb → chef_fs/file_system/file_system_error.rb} +14 -12
- data/lib/chef/{resource/whyrun_safe_ruby_block.rb → chef_fs/file_system/file_system_root_dir.rb} +10 -10
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → chef_fs/file_system/nonexistent_fs_object.rb} +19 -9
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
- data/lib/chef/chef_fs/knife.rb +77 -0
- data/lib/chef/chef_fs/path_utils.rb +64 -0
- data/lib/chef/client.rb +44 -21
- data/lib/chef/config.rb +52 -43
- data/lib/chef/cookbook/synchronizer.rb +6 -8
- data/lib/chef/cookbook/syntax_check.rb +61 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +17 -19
- data/lib/chef/cookbook_version.rb +3 -302
- data/lib/chef/daemon.rb +3 -18
- data/lib/chef/data_bag.rb +4 -97
- data/lib/chef/data_bag_item.rb +2 -65
- data/lib/chef/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +66 -0
- data/lib/chef/dsl/include_attribute.rb +60 -0
- data/lib/chef/dsl/include_recipe.rb +42 -0
- data/lib/chef/dsl/platform_introspection.rb +213 -0
- data/lib/chef/dsl/recipe.rb +84 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +74 -19
- data/lib/chef/environment.rb +9 -180
- data/lib/chef/exceptions.rb +87 -14
- data/lib/chef/formatters/base.rb +4 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +0 -4
- data/lib/chef/json_compat.rb +1 -97
- data/lib/chef/knife.rb +90 -41
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
- data/lib/chef/knife/configure.rb +1 -2
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +3 -2
- data/lib/chef/knife/cookbook_upload.rb +12 -7
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +26 -13
- data/lib/chef/knife/core/node_editor.rb +36 -16
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +15 -9
- data/lib/chef/knife/delete.rb +39 -0
- data/lib/chef/knife/diff.rb +46 -0
- data/lib/chef/knife/download.rb +50 -0
- data/lib/chef/knife/environment_show.rb +7 -0
- data/lib/chef/knife/exec.rb +5 -5
- data/lib/chef/knife/help_topics.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +91 -7
- data/lib/chef/knife/list.rb +109 -0
- data/lib/chef/knife/raw.rb +108 -0
- data/lib/chef/knife/search.rb +40 -22
- data/lib/chef/knife/show.rb +32 -0
- data/lib/chef/knife/ssh.rb +6 -2
- data/lib/chef/knife/upload.rb +50 -0
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +55 -197
- data/lib/chef/mixin/language.rb +9 -222
- data/lib/chef/mixin/language_include_attribute.rb +6 -38
- data/lib/chef/mixin/language_include_recipe.rb +3 -35
- data/lib/chef/mixin/params_validate.rb +6 -19
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +8 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +40 -0
- data/lib/chef/mixins.rb +0 -4
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/node.rb +133 -309
- data/lib/chef/node/attribute.rb +333 -473
- data/lib/chef/node/attribute_collections.rb +199 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +7 -22
- data/lib/chef/provider.rb +2 -49
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +5 -33
- data/lib/chef/provider/deploy.rb +2 -1
- data/lib/chef/provider/directory.rb +14 -17
- data/lib/chef/provider/file.rb +19 -52
- data/lib/chef/provider/group.rb +31 -51
- data/lib/chef/provider/group/dscl.rb +13 -53
- data/lib/chef/provider/group/gpasswd.rb +19 -14
- data/lib/chef/provider/group/groupadd.rb +1 -41
- data/lib/chef/provider/group/groupmod.rb +36 -46
- data/lib/chef/provider/group/pw.rb +16 -59
- data/lib/chef/provider/group/suse.rb +13 -16
- data/lib/chef/provider/group/usermod.rb +18 -40
- data/lib/chef/provider/group/windows.rb +6 -13
- data/lib/chef/provider/http_request.rb +25 -42
- data/lib/chef/provider/link.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +150 -0
- data/lib/chef/provider/package/portage.rb +4 -9
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +9 -41
- data/lib/chef/provider/package/yum.rb +12 -19
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +2 -0
- data/lib/chef/provider/remote_file.rb +21 -12
- data/lib/chef/provider/ruby_block.rb +5 -2
- data/lib/chef/provider/service.rb +15 -0
- data/lib/chef/provider/service/init.rb +9 -7
- data/lib/chef/provider/service/macosx.rb +15 -73
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +3 -3
- data/lib/chef/provider/template.rb +22 -25
- data/lib/chef/provider/template_finder.rb +61 -0
- data/lib/chef/provider/user.rb +0 -1
- data/lib/chef/provider/user/dscl.rb +175 -568
- data/lib/chef/provider/user/useradd.rb +30 -47
- data/lib/chef/providers.rb +3 -2
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +13 -154
- data/lib/chef/resource/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/lwrp_base.rb +127 -0
- data/lib/chef/resource/mount.rb +10 -11
- data/lib/chef/resource/registry_key.rb +86 -0
- data/lib/chef/resource/remote_directory.rb +6 -5
- data/lib/chef/resource/remote_file.rb +22 -31
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource_collection.rb +25 -21
- data/lib/chef/resources.rb +2 -1
- data/lib/chef/rest.rb +50 -131
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +2 -7
- data/lib/chef/role.rb +1 -97
- data/lib/chef/run_context.rb +108 -130
- data/lib/chef/run_context/cookbook_compiler.rb +280 -0
- data/lib/chef/run_list.rb +0 -2
- data/lib/chef/run_list/run_list_expansion.rb +0 -15
- data/lib/chef/run_lock.rb +90 -0
- data/lib/chef/runner.rb +28 -5
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +2 -4
- data/lib/chef/shef/ext.rb +3 -575
- data/lib/chef/{shef.rb → shell.rb} +35 -40
- data/lib/chef/shell/ext.rb +593 -0
- data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
- data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
- data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +17 -15
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/util/windows/net_group.rb +1 -5
- data/lib/chef/version.rb +3 -3
- data/lib/chef/win32/api/process.rb +0 -1
- data/lib/chef/win32/handle.rb +1 -8
- data/lib/chef/win32/registry.rb +371 -0
- data/spec/data/big_json.json +1 -2
- data/spec/data/big_json_plus_one.json +1 -2
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/{knife-home/.chef/plugins/knife/example_home_subcommand.rb → run_context/cookbooks/circular-dep1/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/{lwrp_const_scoping/resources/conflict.rb → run_context/cookbooks/circular-dep2/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +7 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/knife/ssh_spec.rb +5 -1
- data/spec/functional/resource/cookbook_file_spec.rb +7 -19
- data/spec/functional/resource/directory_spec.rb +4 -0
- data/spec/functional/resource/file_spec.rb +56 -22
- data/spec/functional/resource/link_spec.rb +2 -0
- data/spec/functional/resource/registry_spec.rb +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +142 -36
- data/spec/functional/resource/remote_file_spec.rb +18 -0
- data/spec/functional/resource/template_spec.rb +23 -2
- data/spec/functional/run_lock_spec.rb +106 -0
- data/spec/functional/shell_spec.rb +100 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/spec_helper.rb +5 -29
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +0 -2
- data/spec/support/platform_helpers.rb +8 -15
- data/spec/support/shared/functional/directory_resource.rb +84 -22
- data/spec/support/shared/functional/file_resource.rb +169 -71
- data/spec/support/shared/functional/securable_resource.rb +143 -119
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
- data/spec/support/shared/unit/file_system_support.rb +110 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/unit/api_client/registration_spec.rb +175 -0
- data/spec/unit/api_client_spec.rb +78 -156
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/client_spec.rb +1 -37
- data/spec/unit/application/knife_spec.rb +5 -0
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
- data/spec/unit/chef_fs/diff_spec.rb +328 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
- data/spec/unit/chef_fs/file_system_spec.rb +136 -0
- data/spec/unit/client_spec.rb +124 -33
- data/spec/unit/config_spec.rb +46 -13
- data/spec/unit/cookbook/synchronizer_spec.rb +1 -49
- data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
- data/spec/unit/cookbook_loader_spec.rb +153 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/daemon_spec.rb +3 -24
- data/spec/unit/data_bag_spec.rb +6 -4
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +50 -105
- data/spec/unit/environment_spec.rb +0 -130
- data/spec/unit/exceptions_spec.rb +2 -3
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
- data/spec/unit/json_compat_spec.rb +15 -7
- data/spec/unit/knife/bootstrap_spec.rb +2 -0
- data/spec/unit/knife/configure_spec.rb +20 -14
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +43 -8
- data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +156 -125
- data/spec/unit/knife/data_bag_create_spec.rb +9 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_edit_spec.rb +6 -33
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife_spec.rb +53 -0
- data/spec/unit/lwrp_spec.rb +59 -42
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +101 -799
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -37
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +119 -0
- data/spec/unit/node/attribute_spec.rb +195 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +366 -370
- data/spec/unit/platform_spec.rb +9 -10
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file_spec.rb +4 -8
- data/spec/unit/provider/directory_spec.rb +96 -64
- data/spec/unit/provider/env_spec.rb +2 -2
- data/spec/unit/provider/file_spec.rb +48 -39
- data/spec/unit/provider/group/dscl_spec.rb +0 -36
- data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
- data/spec/unit/provider/group/groupadd_spec.rb +4 -3
- data/spec/unit/provider/group/groupmod_spec.rb +1 -0
- data/spec/unit/provider/group/pw_spec.rb +15 -12
- data/spec/unit/provider/group/usermod_spec.rb +6 -21
- data/spec/unit/provider/group/windows_spec.rb +8 -0
- data/spec/unit/provider/group_spec.rb +6 -28
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/portage_spec.rb +0 -44
- data/spec/unit/provider/package/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -44
- data/spec/unit/provider/package/yum_spec.rb +39 -36
- data/spec/unit/provider/package_spec.rb +7 -5
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -3
- data/spec/unit/provider/remote_file_spec.rb +36 -0
- data/spec/unit/provider/route_spec.rb +4 -3
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
- data/spec/unit/provider/service/init_service_spec.rb +27 -4
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +11 -66
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +9 -9
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template_spec.rb +35 -11
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/useradd_spec.rb +1 -22
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +374 -0
- data/spec/unit/resource/mount_spec.rb +0 -11
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +21 -23
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource_spec.rb +4 -19
- data/spec/unit/rest/auth_credentials_spec.rb +2 -19
- data/spec/unit/rest_spec.rb +130 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +101 -2
- data/spec/unit/scan_access_control_spec.rb +4 -4
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +14 -69
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- metadata +275 -234
- checksums.yaml +0 -15
- data/README.rdoc +0 -177
- data/distro/common/html/knife-recipe.1.html +0 -92
- data/lib/chef/certificate.rb +0 -161
- data/lib/chef/checksum.rb +0 -167
- data/lib/chef/checksum_cache.rb +0 -190
- data/lib/chef/cookbook_version_selector.rb +0 -168
- data/lib/chef/couchdb.rb +0 -246
- data/lib/chef/index_queue/amqp_client.rb +0 -116
- data/lib/chef/index_queue/consumer.rb +0 -76
- data/lib/chef/index_queue/indexable.rb +0 -109
- data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
- data/lib/chef/monkey_patches/moneta.rb +0 -50
- data/lib/chef/monkey_patches/uri.rb +0 -70
- data/lib/chef/openid_registration.rb +0 -187
- data/lib/chef/provider/user/solaris.rb +0 -90
- data/lib/chef/solr_query.rb +0 -187
- data/lib/chef/solr_query/lucene.treetop +0 -150
- data/lib/chef/solr_query/lucene_nodes.rb +0 -285
- data/lib/chef/solr_query/query_transform.rb +0 -65
- data/lib/chef/solr_query/solr_http_request.rb +0 -132
- data/lib/chef/webui_user.rb +0 -231
- data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -1
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -1
- data/spec/data/mac_users/10.7-8.plist.xml +0 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
- data/spec/data/mac_users/10.7.plist.xml +0 -559
- data/spec/data/mac_users/10.7.shadow.xml +0 -11
- data/spec/data/mac_users/10.8.plist.xml +0 -559
- data/spec/data/mac_users/10.8.shadow.xml +0 -21
- data/spec/data/mac_users/10.9.plist.xml +0 -560
- data/spec/data/mac_users/10.9.shadow.xml +0 -21
- data/spec/functional/resource/base.rb +0 -40
- data/spec/functional/resource/group_spec.rb +0 -343
- data/spec/functional/resource/user/dscl_spec.rb +0 -199
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/provider/user/solaris_spec.rb +0 -414
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
data/lib/chef/provider/group.rb
CHANGED
|
@@ -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.
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
|
|
19
19
|
require 'chef/provider'
|
|
20
20
|
require 'chef/mixin/command'
|
|
21
|
-
require 'chef/resource/group'
|
|
22
21
|
require 'etc'
|
|
23
22
|
|
|
24
23
|
class Chef
|
|
@@ -36,11 +35,11 @@ class Chef
|
|
|
36
35
|
super
|
|
37
36
|
@group_exists = true
|
|
38
37
|
end
|
|
39
|
-
|
|
38
|
+
|
|
40
39
|
def load_current_resource
|
|
41
40
|
@current_resource = Chef::Resource::Group.new(@new_resource.name)
|
|
42
41
|
@current_resource.group_name(@new_resource.group_name)
|
|
43
|
-
|
|
42
|
+
|
|
44
43
|
group_info = nil
|
|
45
44
|
begin
|
|
46
45
|
group_info = Etc.getgrnam(@new_resource.group_name)
|
|
@@ -48,47 +47,37 @@ class Chef
|
|
|
48
47
|
@group_exists = false
|
|
49
48
|
Chef::Log.debug("#{@new_resource} group does not exist")
|
|
50
49
|
end
|
|
51
|
-
|
|
50
|
+
|
|
52
51
|
if group_info
|
|
53
52
|
@new_resource.gid(group_info.gid) unless @new_resource.gid
|
|
54
53
|
@current_resource.gid(group_info.gid)
|
|
55
54
|
@current_resource.members(group_info.mem)
|
|
56
55
|
end
|
|
57
|
-
|
|
56
|
+
|
|
58
57
|
@current_resource
|
|
59
58
|
end
|
|
60
59
|
|
|
61
60
|
def define_resource_requirements
|
|
62
|
-
requirements.assert(:modify) do |a|
|
|
63
|
-
a.assertion { @group_exists }
|
|
61
|
+
requirements.assert(:modify) do |a|
|
|
62
|
+
a.assertion { @group_exists }
|
|
64
63
|
a.failure_message(Chef::Exceptions::Group, "Cannot modify #{@new_resource} - group does not exist!")
|
|
65
64
|
a.whyrun("Group #{@new_resource} does not exist. Unless it would have been created earlier in this run, this attempt to modify it would fail.")
|
|
66
65
|
end
|
|
67
|
-
|
|
68
|
-
requirements.assert(:all_actions) do |a|
|
|
69
|
-
# Make sure that the resource doesn't contain any common
|
|
70
|
-
# user names in the members and exclude_members properties.
|
|
71
|
-
if !@new_resource.members.nil? && !@new_resource.excluded_members.nil?
|
|
72
|
-
common_members = @new_resource.members & @new_resource.excluded_members
|
|
73
|
-
a.assertion { common_members.empty? }
|
|
74
|
-
a.failure_message(Chef::Exceptions::ConflictingMembersInGroup, "Attempting to both add and remove users from a group: '#{common_members.join(', ')}'")
|
|
75
|
-
# No why-run alternative
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
66
|
end
|
|
79
|
-
|
|
80
|
-
# Check to see if a group needs any changes. Populate
|
|
81
|
-
# @change_desc with a description of why a change must occur
|
|
67
|
+
|
|
68
|
+
# Check to see if a group needs any changes. Populate
|
|
69
|
+
# @change_desc with a description of why a change must occur
|
|
82
70
|
#
|
|
83
71
|
# ==== Returns
|
|
84
72
|
# <true>:: If a change is required
|
|
85
73
|
# <false>:: If a change is not required
|
|
86
74
|
def compare_group
|
|
87
|
-
@change_desc =
|
|
75
|
+
@change_desc = nil
|
|
88
76
|
if @new_resource.gid != @current_resource.gid
|
|
89
|
-
@change_desc
|
|
77
|
+
@change_desc = "change gid #{@current_resource.gid} to #{@new_resource.gid}"
|
|
78
|
+
return true
|
|
90
79
|
end
|
|
91
|
-
|
|
80
|
+
|
|
92
81
|
if(@new_resource.append)
|
|
93
82
|
missing_members = []
|
|
94
83
|
@new_resource.members.each do |member|
|
|
@@ -96,44 +85,35 @@ class Chef
|
|
|
96
85
|
missing_members << member
|
|
97
86
|
end
|
|
98
87
|
if missing_members.length > 0
|
|
99
|
-
@change_desc
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
members_to_be_removed = []
|
|
103
|
-
@new_resource.excluded_members.each do |member|
|
|
104
|
-
if @current_resource.members.include?(member)
|
|
105
|
-
members_to_be_removed << member
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
if members_to_be_removed.length > 0
|
|
109
|
-
@change_desc << "remove existing member(s): #{members_to_be_removed.join(", ")}"
|
|
88
|
+
@change_desc = "add missing member(s): #{missing_members.join(", ")}"
|
|
89
|
+
return true
|
|
110
90
|
end
|
|
111
91
|
else
|
|
112
92
|
if @new_resource.members != @current_resource.members
|
|
113
|
-
@change_desc
|
|
93
|
+
@change_desc = "replace group members with new list of members"
|
|
94
|
+
return true
|
|
114
95
|
end
|
|
115
96
|
end
|
|
116
|
-
|
|
117
|
-
!@change_desc.empty?
|
|
97
|
+
return false
|
|
118
98
|
end
|
|
119
|
-
|
|
99
|
+
|
|
120
100
|
def action_create
|
|
121
101
|
case @group_exists
|
|
122
102
|
when false
|
|
123
|
-
converge_by("create #{@new_resource}") do
|
|
103
|
+
converge_by("create #{@new_resource}") do
|
|
124
104
|
create_group
|
|
125
105
|
Chef::Log.info("#{@new_resource} created")
|
|
126
106
|
end
|
|
127
|
-
else
|
|
107
|
+
else
|
|
128
108
|
if compare_group
|
|
129
|
-
converge_by(["alter group #{@new_resource}"
|
|
109
|
+
converge_by(["alter group #{@new_resource}", @change_desc ]) do
|
|
130
110
|
manage_group
|
|
131
111
|
Chef::Log.info("#{@new_resource} altered")
|
|
132
112
|
end
|
|
133
113
|
end
|
|
134
114
|
end
|
|
135
115
|
end
|
|
136
|
-
|
|
116
|
+
|
|
137
117
|
def action_remove
|
|
138
118
|
if @group_exists
|
|
139
119
|
converge_by("remove group #{@new_resource}") do
|
|
@@ -142,25 +122,25 @@ class Chef
|
|
|
142
122
|
end
|
|
143
123
|
end
|
|
144
124
|
end
|
|
145
|
-
|
|
125
|
+
|
|
146
126
|
def action_manage
|
|
147
127
|
if @group_exists && compare_group
|
|
148
|
-
converge_by(["manage group #{@new_resource}"
|
|
149
|
-
manage_group
|
|
128
|
+
converge_by(["manage group #{@new_resource}", @change_desc]) do
|
|
129
|
+
manage_group
|
|
150
130
|
Chef::Log.info("#{@new_resource} managed")
|
|
151
131
|
end
|
|
152
132
|
end
|
|
153
133
|
end
|
|
154
|
-
|
|
134
|
+
|
|
155
135
|
def action_modify
|
|
156
136
|
if compare_group
|
|
157
|
-
converge_by(["modify group #{@new_resource}"
|
|
137
|
+
converge_by(["modify group #{@new_resource}", @change_desc]) do
|
|
158
138
|
manage_group
|
|
159
139
|
Chef::Log.info("#{@new_resource} modified")
|
|
160
140
|
end
|
|
161
141
|
end
|
|
162
142
|
end
|
|
163
|
-
|
|
143
|
+
|
|
164
144
|
def create_group
|
|
165
145
|
raise NotImplementedError, "subclasses of Chef::Provider::Group should define #create_group"
|
|
166
146
|
end
|
|
@@ -39,33 +39,11 @@ class Chef
|
|
|
39
39
|
return result[2]
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
group_info = safe_dscl("read /Groups/#{@new_resource.name}")
|
|
48
|
-
rescue Chef::Exceptions::Group
|
|
49
|
-
@group_exists = false
|
|
50
|
-
Chef::Log.debug("#{@new_resource} group does not exist")
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
if group_info
|
|
54
|
-
group_info.each_line do |line|
|
|
55
|
-
key, val = line.split(': ')
|
|
56
|
-
val.strip! if val
|
|
57
|
-
case key.downcase
|
|
58
|
-
when 'primarygroupid'
|
|
59
|
-
@new_resource.gid(val) unless @new_resource.gid
|
|
60
|
-
@current_resource.gid(val)
|
|
61
|
-
when 'groupmembership'
|
|
62
|
-
@current_resource.members(val.split(' '))
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
@current_resource
|
|
68
|
-
end
|
|
42
|
+
# This is handled in providers/group.rb by Etc.getgrnam()
|
|
43
|
+
# def group_exists?(group)
|
|
44
|
+
# groups = safe_dscl("list /Groups")
|
|
45
|
+
# !! ( groups =~ Regexp.new("\n#{group}\n") )
|
|
46
|
+
# end
|
|
69
47
|
|
|
70
48
|
# get a free GID greater than 200
|
|
71
49
|
def get_free_gid(search_limit=1000)
|
|
@@ -95,36 +73,14 @@ class Chef
|
|
|
95
73
|
end
|
|
96
74
|
|
|
97
75
|
def set_members
|
|
98
|
-
# First reset the memberships if the append is not set
|
|
99
76
|
unless @new_resource.append
|
|
100
77
|
Chef::Log.debug("#{@new_resource} removing group members #{@current_resource.members.join(' ')}") unless @current_resource.members.empty?
|
|
101
78
|
safe_dscl("create /Groups/#{@new_resource.group_name} GroupMembers ''") # clear guid list
|
|
102
79
|
safe_dscl("create /Groups/#{@new_resource.group_name} GroupMembership ''") # clear user list
|
|
103
|
-
@current_resource.members([ ])
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
# Add any members that need to be added
|
|
107
|
-
if @new_resource.members && !@new_resource.members.empty?
|
|
108
|
-
members_to_be_added = [ ]
|
|
109
|
-
@new_resource.members.each do |member|
|
|
110
|
-
members_to_be_added << member if !@current_resource.members.include?(member)
|
|
111
|
-
end
|
|
112
|
-
unless members_to_be_added.empty?
|
|
113
|
-
Chef::Log.debug("#{@new_resource} setting group members #{members_to_be_added.join(', ')}")
|
|
114
|
-
safe_dscl("append /Groups/#{@new_resource.group_name} GroupMembership #{members_to_be_added.join(' ')}")
|
|
115
|
-
end
|
|
116
80
|
end
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
members_to_be_removed = [ ]
|
|
121
|
-
@new_resource.excluded_members.each do |member|
|
|
122
|
-
members_to_be_removed << member if @current_resource.members.include?(member)
|
|
123
|
-
end
|
|
124
|
-
unless members_to_be_removed.empty?
|
|
125
|
-
Chef::Log.debug("#{@new_resource} removing group members #{members_to_be_removed.join(', ')}")
|
|
126
|
-
safe_dscl("delete /Groups/#{@new_resource.group_name} GroupMembership #{members_to_be_removed.join(' ')}")
|
|
127
|
-
end
|
|
81
|
+
unless @new_resource.members.empty?
|
|
82
|
+
Chef::Log.debug("#{@new_resource} setting group members #{@new_resource.members.join(', ')}")
|
|
83
|
+
safe_dscl("append /Groups/#{@new_resource.group_name} GroupMembership #{@new_resource.members.join(' ')}")
|
|
128
84
|
end
|
|
129
85
|
end
|
|
130
86
|
|
|
@@ -137,6 +93,10 @@ class Chef
|
|
|
137
93
|
end
|
|
138
94
|
end
|
|
139
95
|
|
|
96
|
+
def load_current_resource
|
|
97
|
+
super
|
|
98
|
+
end
|
|
99
|
+
|
|
140
100
|
def create_group
|
|
141
101
|
dscl_create_group
|
|
142
102
|
set_gid
|
|
@@ -150,7 +110,7 @@ class Chef
|
|
|
150
110
|
if @new_resource.gid && (@current_resource.gid != @new_resource.gid)
|
|
151
111
|
set_gid
|
|
152
112
|
end
|
|
153
|
-
if @new_resource.members
|
|
113
|
+
if @new_resource.members && (@current_resource.members != @new_resource.members)
|
|
154
114
|
set_members
|
|
155
115
|
end
|
|
156
116
|
end
|
|
@@ -39,20 +39,25 @@ class Chef
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
def modify_group_members
|
|
43
|
+
if(@new_resource.append)
|
|
44
|
+
unless @new_resource.members.empty?
|
|
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!("gpasswd -a #{member} #{@new_resource.group_name}")
|
|
48
|
+
end
|
|
49
|
+
else
|
|
50
|
+
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members to add")
|
|
51
|
+
end
|
|
52
|
+
else
|
|
53
|
+
unless @new_resource.members.empty?
|
|
54
|
+
Chef::Log.debug("#{@new_resource} setting group members to #{@new_resource.members.join(', ')}")
|
|
55
|
+
shell_out!("gpasswd -M #{@new_resource.members.join(',')} #{@new_resource.group_name}")
|
|
56
|
+
else
|
|
57
|
+
Chef::Log.debug("#{@new_resource} setting group members to: none")
|
|
58
|
+
shell_out!("gpasswd -M \"\" #{@new_resource.group_name}")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
56
61
|
end
|
|
57
62
|
end
|
|
58
63
|
end
|
|
@@ -65,48 +65,8 @@ class Chef
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
def modify_group_members
|
|
68
|
-
|
|
69
|
-
if @new_resource.members && !@new_resource.members.empty?
|
|
70
|
-
members_to_be_added = [ ]
|
|
71
|
-
@new_resource.members.each do |member|
|
|
72
|
-
members_to_be_added << member if !@current_resource.members.include?(member)
|
|
73
|
-
end
|
|
74
|
-
members_to_be_added.each do |member|
|
|
75
|
-
Chef::Log.debug("#{@new_resource} appending member #{member} to group #{@new_resource.group_name}")
|
|
76
|
-
add_member(member)
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
if @new_resource.excluded_members && !@new_resource.excluded_members.empty?
|
|
81
|
-
members_to_be_removed = [ ]
|
|
82
|
-
@new_resource.excluded_members.each do |member|
|
|
83
|
-
members_to_be_removed << member if @current_resource.members.include?(member)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
members_to_be_removed.each do |member|
|
|
87
|
-
Chef::Log.debug("#{@new_resource} removing member #{member} from group #{@new_resource.group_name}")
|
|
88
|
-
remove_member(member)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
else
|
|
92
|
-
members_description = @new_resource.members.empty? ? "none" : @new_resource.members.join(", ")
|
|
93
|
-
Chef::Log.debug("#{@new_resource} setting group members to: #{members_description}")
|
|
94
|
-
set_members(@new_resource.members)
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def add_member(member)
|
|
99
|
-
raise Chef::Exceptions::Group, "you must override add_member in #{self.to_s}"
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def remove_member(member)
|
|
103
|
-
raise Chef::Exceptions::Group, "you must override remove_member in #{self.to_s}"
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def set_members(members)
|
|
107
|
-
raise Chef::Exceptions::Group, "you must override set_members in #{self.to_s}"
|
|
68
|
+
raise Chef::Exceptions::Group, "you must override modify_group_members in #{self.to_s}"
|
|
108
69
|
end
|
|
109
|
-
|
|
110
70
|
# Little bit of magic as per Adam's useradd provider to pull the assign the command line flags
|
|
111
71
|
#
|
|
112
72
|
# ==== Returns
|
|
@@ -44,40 +44,45 @@ class Chef
|
|
|
44
44
|
# Manage the group when it already exists
|
|
45
45
|
def manage_group
|
|
46
46
|
if @new_resource.append
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
unless members_to_be_removed.empty?
|
|
56
|
-
# We are using a magic trick to remove the groups.
|
|
57
|
-
reset_group_membership
|
|
58
|
-
|
|
59
|
-
# Capture the members we need to add in
|
|
60
|
-
# members_to_be_added to be added later on.
|
|
61
|
-
@current_resource.members.each do |member|
|
|
62
|
-
members_to_be_added << member unless members_to_be_removed.include?(member)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
if @new_resource.members && !@new_resource.members.empty?
|
|
68
|
-
@new_resource.members.each do |member|
|
|
69
|
-
members_to_be_added << member if !@current_resource.members.include?(member)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members to add") if members_to_be_added.empty?
|
|
74
|
-
|
|
75
|
-
add_group_members(members_to_be_added)
|
|
47
|
+
to_add = @new_resource.members.dup
|
|
48
|
+
to_add.reject! { |user| @current_resource.members.include?(user) }
|
|
49
|
+
|
|
50
|
+
to_delete = Array.new
|
|
51
|
+
|
|
52
|
+
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members to add") if to_add.empty?
|
|
76
53
|
else
|
|
77
|
-
|
|
78
|
-
|
|
54
|
+
to_add = @new_resource.members.dup
|
|
55
|
+
to_add.reject! { |user| @current_resource.members.include?(user) }
|
|
56
|
+
|
|
57
|
+
to_delete = @current_resource.members.dup
|
|
58
|
+
to_delete.reject! { |user| @new_resource.members.include?(user) }
|
|
59
|
+
|
|
79
60
|
Chef::Log.debug("#{@new_resource} setting group members to: none") if @new_resource.members.empty?
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
if to_delete.empty?
|
|
64
|
+
# If we are only adding new members to this group, then
|
|
65
|
+
# call add_group_members with only those users
|
|
66
|
+
add_group_members(to_add)
|
|
67
|
+
else
|
|
68
|
+
Chef::Log.debug("#{@new_resource} removing members #{to_delete.join(', ')}")
|
|
69
|
+
|
|
70
|
+
# This is tricky, but works: rename the existing group to
|
|
71
|
+
# "<name>_bak", create a new group with the same GID and
|
|
72
|
+
# "<name>", then set correct members on that group
|
|
73
|
+
rename = "group mod -n #{@new_resource.group_name}_bak #{@new_resource.group_name}"
|
|
74
|
+
shell_out!(rename)
|
|
75
|
+
|
|
76
|
+
create = "group add"
|
|
77
|
+
create << set_options(:overwrite_gid => true)
|
|
78
|
+
shell_out!(create)
|
|
79
|
+
|
|
80
|
+
# Ignore to_add here, since we're replacing the group we
|
|
81
|
+
# have to add all members who should be in the group.
|
|
80
82
|
add_group_members(@new_resource.members)
|
|
83
|
+
|
|
84
|
+
remove = "group del #{@new_resource.group_name}_bak"
|
|
85
|
+
shell_out!(remove)
|
|
81
86
|
end
|
|
82
87
|
end
|
|
83
88
|
|
|
@@ -94,21 +99,6 @@ class Chef
|
|
|
94
99
|
end
|
|
95
100
|
end
|
|
96
101
|
|
|
97
|
-
# This is tricky, but works: rename the existing group to
|
|
98
|
-
# "<name>_bak", create a new group with the same GID and
|
|
99
|
-
# "<name>", then set correct members on that group
|
|
100
|
-
def reset_group_membership
|
|
101
|
-
rename = "group mod -n #{@new_resource.group_name}_bak #{@new_resource.group_name}"
|
|
102
|
-
shell_out!(rename)
|
|
103
|
-
|
|
104
|
-
create = "group add"
|
|
105
|
-
create << set_options(:overwrite_gid => true)
|
|
106
|
-
shell_out!(create)
|
|
107
|
-
|
|
108
|
-
remove = "group del #{@new_resource.group_name}_bak"
|
|
109
|
-
shell_out!(remove)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
102
|
# Little bit of magic as per Adam's useradd provider to pull and assign the command line flags
|
|
113
103
|
#
|
|
114
104
|
# ==== Returns
|