chef 10.34.6-x86-mingw32 → 11.6.2-x86-mingw32
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.
- checksums.yaml +5 -13
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +18 -1
- data/bin/chef-apply +25 -0
- data/bin/chef-service-manager +37 -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 +4 -4
- data/distro/common/html/chef-solr.8.html +5 -5
- 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 +4 -4
- data/distro/common/html/knife-data-bag.1.html +4 -4
- data/distro/common/html/knife-environment.1.html +4 -4
- 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 +0 -99
- 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 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +0 -168
- 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 +1 -1
- 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 +6 -4
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +3 -6
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +68 -18
- data/lib/chef/application/apply.rb +162 -0
- data/lib/chef/application/client.rb +37 -22
- data/lib/chef/application/knife.rb +2 -4
- data/lib/chef/application/solo.rb +27 -13
- data/lib/chef/application/windows_service.rb +114 -54
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +9 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +284 -0
- data/lib/chef/chef_fs/config.rb +205 -0
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
- data/lib/chef/chef_fs/file_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +426 -0
- data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
- data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
- data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -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 +180 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +60 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +110 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +223 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +85 -0
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +149 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +69 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +72 -0
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
- data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
- data/lib/chef/chef_fs/file_system/file_system_error.rb +33 -0
- data/lib/chef/chef_fs/file_system/file_system_root_dir.rb +31 -0
- data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
- data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +36 -0
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +113 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +177 -0
- data/lib/chef/chef_fs/knife.rb +116 -0
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +90 -0
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +111 -34
- data/lib/chef/config.rb +111 -102
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/metadata.rb +0 -2
- data/lib/chef/cookbook/syntax_check.rb +76 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +16 -9
- data/lib/chef/cookbook_version.rb +2 -410
- data/lib/chef/daemon.rb +24 -19
- data/lib/chef/data_bag.rb +20 -104
- data/lib/chef/data_bag_item.rb +2 -65
- data/lib/chef/deprecation/mixin/template.rb +49 -0
- data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
- data/lib/chef/deprecation/provider/file.rb +197 -0
- data/lib/chef/deprecation/provider/remote_file.rb +86 -0
- data/lib/chef/deprecation/provider/template.rb +63 -0
- data/lib/chef/deprecation/warnings.rb +38 -0
- data/lib/chef/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +71 -0
- data/lib/chef/dsl/include_attribute.rb +63 -0
- data/lib/chef/dsl/include_recipe.rb +45 -0
- data/lib/chef/dsl/platform_introspection.rb +218 -0
- data/lib/chef/dsl/recipe.rb +87 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +171 -24
- data/lib/chef/environment.rb +39 -179
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +107 -8
- data/lib/chef/file_access_control/unix.rb +64 -7
- data/lib/chef/file_access_control/windows.rb +22 -11
- data/lib/chef/file_content_management/content_base.rb +56 -0
- data/lib/chef/file_content_management/deploy.rb +38 -0
- data/lib/chef/file_content_management/deploy/cp.rb +48 -0
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
- data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
- data/lib/chef/file_content_management/tempfile.rb +61 -0
- data/lib/chef/formatters/base.rb +4 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_descriptor.rb +5 -4
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +8 -0
- data/lib/chef/json_compat.rb +15 -14
- data/lib/chef/knife.rb +99 -41
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/centos5-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/chef-full.erb +1 -1
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +1 -1
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +19 -17
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +4 -2
- data/lib/chef/knife/cookbook_upload.rb +4 -4
- data/lib/chef/knife/core/bootstrap_context.rb +11 -5
- data/lib/chef/knife/core/generic_presenter.rb +42 -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/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +34 -13
- data/lib/chef/knife/delete.rb +106 -0
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +63 -0
- data/lib/chef/knife/download.rb +63 -0
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -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 +153 -0
- data/lib/chef/knife/node_run_list_set.rb +66 -0
- data/lib/chef/knife/node_show.rb +1 -7
- data/lib/chef/knife/raw.rb +64 -0
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +45 -28
- data/lib/chef/knife/show.rb +55 -0
- data/lib/chef/knife/ssh.rb +14 -2
- data/lib/chef/knife/upload.rb +69 -0
- data/lib/chef/knife/user_create.rb +93 -0
- data/lib/chef/knife/user_delete.rb +46 -0
- data/lib/chef/knife/user_edit.rb +53 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → knife/user_list.rb} +21 -9
- data/lib/chef/knife/user_reregister.rb +59 -0
- data/lib/chef/knife/user_show.rb +49 -0
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +78 -194
- data/lib/chef/mixin/deprecation.rb +35 -0
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language.rb +22 -223
- data/lib/chef/mixin/language_include_attribute.rb +10 -36
- data/lib/chef/mixin/language_include_recipe.rb +7 -33
- data/lib/chef/mixin/params_validate.rb +0 -3
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +10 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +156 -26
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/mixins.rb +1 -5
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/monkey_patches/file.rb} +6 -14
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +139 -308
- data/lib/chef/node/attribute.rb +367 -473
- data/lib/chef/node/attribute_collections.rb +206 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +4 -496
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{mixin/check_helper.rb → platform/query_helpers.rb} +20 -9
- data/lib/chef/provider.rb +14 -58
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +11 -80
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +26 -21
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +12 -18
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +297 -248
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- 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/ifconfig.rb +25 -35
- data/lib/chef/provider/ifconfig/debian.rb +71 -0
- data/lib/chef/provider/ifconfig/redhat.rb +47 -0
- data/lib/chef/provider/link.rb +12 -3
- data/lib/chef/provider/lwrp_base.rb +150 -0
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/mount/mount.rb +8 -3
- data/lib/chef/provider/mount/windows.rb +4 -1
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +4 -1
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +6 -5
- data/lib/chef/provider/remote_file.rb +13 -100
- data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
- data/lib/chef/provider/remote_file/content.rb +75 -0
- data/lib/chef/provider/remote_file/fetcher.rb +43 -0
- data/lib/chef/provider/remote_file/ftp.rb +183 -0
- data/lib/chef/provider/remote_file/http.rb +124 -0
- data/lib/chef/provider/remote_file/local_file.rb +47 -0
- data/lib/chef/provider/route.rb +6 -2
- data/lib/chef/provider/ruby_block.rb +5 -2
- data/lib/chef/provider/script.rb +14 -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 +29 -81
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -81
- data/lib/chef/provider/template/content.rb +61 -0
- 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 +50 -54
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +18 -1
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +52 -146
- data/lib/chef/resource/{whyrun_safe_ruby_block.rb → batch.rb} +10 -10
- data/lib/chef/resource/conditional.rb +4 -0
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
- data/lib/chef/resource/file.rb +31 -3
- data/lib/chef/resource/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +132 -0
- data/lib/chef/resource/mount.rb +39 -13
- data/lib/chef/resource/powershell_script.rb +31 -0
- 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 +62 -25
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +69 -31
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/rest.rb +55 -127
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +7 -8
- 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 +1 -16
- data/lib/chef/run_lock.rb +96 -0
- data/lib/chef/runner.rb +28 -6
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +8 -5
- data/lib/chef/search/query.rb +2 -2
- 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} +15 -13
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/user.rb +182 -0
- data/lib/chef/util/backup.rb +84 -0
- data/lib/chef/util/diff.rb +145 -0
- data/lib/chef/util/file_edit.rb +1 -1
- data/lib/chef/util/selinux.rb +100 -0
- data/lib/chef/util/windows/net_group.rb +1 -5
- data/lib/chef/util/windows/net_user.rb +14 -1
- data/lib/chef/util/windows/volume.rb +2 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version/platform.rb +42 -0
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +6 -5
- data/lib/chef/{index_queue.rb → version_constraint/platform.rb} +11 -14
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/api/security.rb +45 -1
- data/lib/chef/win32/registry.rb +382 -0
- data/lib/chef/win32/security.rb +19 -0
- data/lib/chef/win32/version.rb +25 -8
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/spec/data/apt/var/www/apt/conf/distributions +7 -0
- data/spec/data/apt/var/www/apt/conf/incoming +4 -0
- data/spec/data/apt/var/www/apt/conf/pulls +3 -0
- data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
- data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/spec/data/apt/var/www/apt/db/packages.db +0 -0
- data/spec/data/apt/var/www/apt/db/references.db +0 -0
- data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/spec/data/apt/var/www/apt/db/version +4 -0
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
- data/spec/data/bootstrap/secret.erb +9 -0
- data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
- data/spec/data/git_bundles/example-repo.gitbundle +0 -0
- data/spec/data/knife_subcommand/test_yourself.rb +8 -0
- 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/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/remote_file/nyan_cat.png.gz +0 -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/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/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 +10 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +3 -3
- data/spec/functional/knife/smoke_test.rb +34 -0
- data/spec/functional/knife/ssh_spec.rb +5 -1
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
- data/spec/functional/resource/batch_spec.rb +64 -0
- data/spec/functional/resource/cookbook_file_spec.rb +15 -9
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +5 -1
- data/spec/functional/resource/file_spec.rb +71 -21
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +424 -388
- data/spec/functional/resource/package_spec.rb +297 -0
- data/spec/functional/resource/powershell_spec.rb +188 -0
- data/spec/functional/resource/registry_spec.rb +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +143 -37
- data/spec/functional/resource/remote_file_spec.rb +99 -13
- data/spec/functional/resource/template_spec.rb +180 -3
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +243 -0
- data/spec/functional/shell_spec.rb +102 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/functional/win32/security_spec.rb +37 -0
- data/spec/functional/win32/service_manager_spec.rb +269 -0
- data/spec/functional/win32/versions_spec.rb +78 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
- data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
- data/spec/integration/knife/chefignore_spec.rb +271 -0
- data/spec/integration/knife/delete_spec.rb +944 -0
- data/spec/integration/knife/deps_spec.rb +648 -0
- data/spec/integration/knife/diff_spec.rb +536 -0
- data/spec/integration/knife/download_spec.rb +962 -0
- data/spec/integration/knife/list_spec.rb +633 -0
- data/spec/integration/knife/raw_spec.rb +166 -0
- data/spec/integration/knife/redirection_spec.rb +57 -0
- data/spec/integration/knife/show_spec.rb +158 -0
- data/spec/integration/knife/upload_spec.rb +1060 -0
- data/spec/integration/solo/solo_spec.rb +41 -0
- data/spec/spec_helper.rb +49 -13
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +33 -3
- data/spec/support/lib/chef/resource/cat.rb +3 -5
- data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
- data/spec/support/lib/chef/resource/zen_master.rb +8 -10
- data/spec/support/platform_helpers.rb +46 -13
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/diff_disabled.rb +10 -0
- data/spec/support/shared/functional/directory_resource.rb +129 -38
- data/spec/support/shared/functional/file_resource.rb +837 -71
- data/spec/support/shared/functional/securable_resource.rb +189 -58
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +385 -0
- data/spec/support/shared/integration/integration_helper.rb +166 -0
- data/spec/support/shared/integration/knife_support.rb +171 -0
- data/spec/support/shared/unit/execute_resource.rb +125 -0
- data/spec/support/shared/unit/file_system_support.rb +70 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/support/shared/unit/provider/file.rb +609 -0
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
- data/spec/support/shared/unit/script_resource.rb +52 -0
- data/spec/support/shared/unit/windows_script_resource.rb +48 -0
- data/spec/tiny_server.rb +13 -11
- data/spec/unit/api_client/registration_spec.rb +172 -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 +16 -14
- data/spec/unit/application/knife_spec.rb +17 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +113 -3
- 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_spec.rb +135 -0
- data/spec/unit/client_spec.rb +195 -23
- data/spec/unit/config_spec.rb +102 -51
- data/spec/unit/cookbook/syntax_check_spec.rb +75 -111
- data/spec/unit/cookbook_loader_spec.rb +154 -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 +24 -19
- data/spec/unit/data_bag_spec.rb +13 -4
- data/spec/unit/deprecation_spec.rb +86 -0
- 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 +197 -157
- data/spec/unit/environment_spec.rb +94 -126
- data/spec/unit/exceptions_spec.rb +8 -4
- data/spec/unit/file_access_control_spec.rb +21 -1
- data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +6 -5
- data/spec/unit/json_compat_spec.rb +8 -0
- data/spec/unit/knife/bootstrap_spec.rb +130 -29
- data/spec/unit/knife/configure_spec.rb +64 -45
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- 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 +39 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +79 -62
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +196 -124
- 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/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife/user_create_spec.rb +86 -0
- data/spec/unit/knife/user_delete_spec.rb +39 -0
- data/spec/unit/knife/user_edit_spec.rb +42 -0
- data/spec/unit/knife/user_list_spec.rb +32 -0
- data/spec/unit/knife/user_reregister_spec.rb +53 -0
- data/spec/unit/knife/user_show_spec.rb +41 -0
- data/spec/unit/knife_spec.rb +74 -0
- data/spec/unit/lwrp_spec.rb +102 -60
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +130 -791
- data/spec/unit/mixin/deprecation_spec.rb +23 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +7 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +145 -14
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node/attribute_spec.rb +273 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +418 -370
- data/spec/unit/platform_spec.rb +21 -8
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -187
- data/spec/unit/provider/cron/solaris_spec.rb +1 -1
- data/spec/unit/provider/deploy/revision_spec.rb +19 -11
- data/spec/unit/provider/deploy_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +99 -67
- data/spec/unit/provider/env_spec.rb +2 -2
- data/spec/unit/provider/execute_spec.rb +27 -1
- data/spec/unit/provider/file/content_spec.rb +101 -0
- data/spec/unit/provider/file_spec.rb +25 -475
- data/spec/unit/provider/git_spec.rb +224 -28
- 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 +9 -22
- 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/debian_spec.rb +89 -0
- data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
- data/spec/unit/provider/ifconfig_spec.rb +0 -33
- data/spec/unit/provider/mount/mount_spec.rb +33 -2
- data/spec/unit/provider/mount/windows_spec.rb +4 -1
- data/spec/unit/provider/mount_spec.rb +16 -6
- 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/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +7 -9
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -7
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
- data/spec/unit/provider/remote_file/content_spec.rb +230 -0
- data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
- data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
- data/spec/unit/provider/remote_file/http_spec.rb +319 -0
- data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
- data/spec/unit/provider/remote_file_spec.rb +33 -259
- data/spec/unit/provider/route_spec.rb +29 -12
- 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 +176 -207
- 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/solaris_smf_service_spec.rb +21 -18
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +11 -11
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -160
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/solaris_spec.rb +39 -373
- data/spec/unit/provider/user/useradd_spec.rb +12 -379
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +376 -0
- data/spec/unit/resource/batch_spec.rb +48 -0
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
- data/spec/unit/resource/execute_spec.rb +3 -101
- data/spec/unit/resource/file_spec.rb +0 -5
- data/spec/unit/resource/group_spec.rb +9 -0
- data/spec/unit/resource/ifconfig_spec.rb +60 -1
- data/spec/unit/resource/link_spec.rb +1 -0
- data/spec/unit/resource/mount_spec.rb +37 -11
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +63 -25
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource/template_spec.rb +111 -8
- data/spec/unit/resource/user_spec.rb +7 -0
- data/spec/unit/resource_collection_spec.rb +61 -32
- data/spec/unit/resource_reporter_spec.rb +115 -102
- data/spec/unit/resource_spec.rb +197 -5
- data/spec/unit/rest/auth_credentials_spec.rb +4 -21
- data/spec/unit/rest_spec.rb +134 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +190 -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 +102 -3
- data/spec/unit/scan_access_control_spec.rb +8 -6
- 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} +16 -58
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- data/spec/unit/user_spec.rb +255 -0
- data/spec/unit/util/backup_spec.rb +149 -0
- data/spec/unit/util/diff_spec.rb +596 -0
- data/spec/unit/util/selinux_spec.rb +172 -0
- data/spec/unit/version/platform_spec.rb +61 -0
- data/spec/unit/version_constraint/platform_spec.rb +46 -0
- data/spec/unit/version_constraint_spec.rb +5 -0
- metadata +493 -264
- 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/dir.rb +0 -36
- 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/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/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/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
@@ -25,14 +25,14 @@ require 'chef/version'
|
|
25
25
|
require 'chef/client'
|
26
26
|
require 'chef/config'
|
27
27
|
|
28
|
-
require 'chef/
|
29
|
-
require 'chef/
|
28
|
+
require 'chef/shell/shell_session'
|
29
|
+
require 'chef/shell/ext'
|
30
30
|
require 'chef/json_compat'
|
31
31
|
|
32
|
-
# =
|
33
|
-
#
|
32
|
+
# = Shell
|
33
|
+
# Shell is Chef in an IRB session. Shell can interact with a Chef server via the
|
34
34
|
# REST API, and run and debug recipes interactively.
|
35
|
-
module
|
35
|
+
module Shell
|
36
36
|
LEADERS = Hash.new("")
|
37
37
|
LEADERS[Chef::Recipe] = ":recipe"
|
38
38
|
LEADERS[Chef::Node] = ":attributes"
|
@@ -44,7 +44,7 @@ module Shef
|
|
44
44
|
attr_writer :editor
|
45
45
|
end
|
46
46
|
|
47
|
-
# Start the irb REPL with
|
47
|
+
# Start the irb REPL with chef-shell's customizations
|
48
48
|
def self.start
|
49
49
|
setup_logger
|
50
50
|
# FUGLY HACK: irb gives us no other choice.
|
@@ -52,7 +52,6 @@ module Shef
|
|
52
52
|
IRB::ExtendCommandBundle.instance_variable_get(:@ALIASES).delete(irb_help)
|
53
53
|
|
54
54
|
parse_opts
|
55
|
-
Chef::Config[:shell_config] = options.config
|
56
55
|
|
57
56
|
# HACK: this duplicates the functions of IRB.start, but we have to do it
|
58
57
|
# to get access to the main object before irb starts.
|
@@ -77,12 +76,14 @@ module Shef
|
|
77
76
|
|
78
77
|
def self.setup_logger
|
79
78
|
Chef::Config[:log_level] ||= :warn
|
79
|
+
# If log_level is auto, change it to warn
|
80
|
+
Chef::Config[:log_level] = :warn if Chef::Config[:log_level] == :auto
|
80
81
|
Chef::Log.init(STDERR)
|
81
82
|
Mixlib::Authentication::Log.logger = Ohai::Log.logger = Chef::Log.logger
|
82
83
|
Chef::Log.level = Chef::Config[:log_level] || :warn
|
83
84
|
end
|
84
85
|
|
85
|
-
#
|
86
|
+
# Shell assumes it's running whenever it is defined
|
86
87
|
def self.running?
|
87
88
|
true
|
88
89
|
end
|
@@ -98,7 +99,7 @@ module Shef
|
|
98
99
|
end
|
99
100
|
|
100
101
|
def self.configure_irb
|
101
|
-
irb_conf[:HISTORY_FILE] = "~/.
|
102
|
+
irb_conf[:HISTORY_FILE] = "~/.chef/chef_shell_history"
|
102
103
|
irb_conf[:SAVE_HISTORY] = 1000
|
103
104
|
|
104
105
|
irb_conf[:IRB_RC] = lambda do |conf|
|
@@ -113,7 +114,7 @@ module Shef
|
|
113
114
|
end
|
114
115
|
|
115
116
|
def self.leader(main_object)
|
116
|
-
env_string =
|
117
|
+
env_string = Shell.env ? " (#{Shell.env})" : ""
|
117
118
|
LEADERS[main_object.class] + env_string
|
118
119
|
end
|
119
120
|
|
@@ -144,7 +145,7 @@ module Shef
|
|
144
145
|
end
|
145
146
|
|
146
147
|
def self.greeting
|
147
|
-
" #{Etc.getlogin}@#{
|
148
|
+
" #{Etc.getlogin}@#{Shell.session.node.fqdn}"
|
148
149
|
rescue NameError, ArgumentError
|
149
150
|
""
|
150
151
|
end
|
@@ -179,10 +180,10 @@ module Shef
|
|
179
180
|
end
|
180
181
|
|
181
182
|
def self.client_type
|
182
|
-
type =
|
183
|
-
type =
|
184
|
-
type =
|
185
|
-
type =
|
183
|
+
type = Shell::StandAloneSession
|
184
|
+
type = Shell::SoloSession if Chef::Config[:shell_solo]
|
185
|
+
type = Shell::ClientSession if Chef::Config[:client]
|
186
|
+
type = Shell::DoppelGangerSession if Chef::Config[:doppelganger]
|
186
187
|
type
|
187
188
|
end
|
188
189
|
|
@@ -203,14 +204,14 @@ module Shef
|
|
203
204
|
@footer
|
204
205
|
end
|
205
206
|
|
206
|
-
banner("
|
207
|
+
banner("chef-shell #{Chef::VERSION}\n\nUsage: chef-shell [NAMED_CONF] (OPTIONS)")
|
207
208
|
|
208
209
|
footer(<<-FOOTER)
|
209
|
-
When no CONFIG is specified,
|
210
|
-
* If a NAMED_CONF is given,
|
211
|
-
* If no NAMED_CONF is given
|
212
|
-
*
|
213
|
-
-s options are given and no
|
210
|
+
When no CONFIG is specified, chef-shell attempts to load a default configuration file:
|
211
|
+
* If a NAMED_CONF is given, chef-shell will load ~/.chef/NAMED_CONF/chef_shell.rb
|
212
|
+
* If no NAMED_CONF is given chef-shell will load ~/.chef/chef_shell.rb if it exists
|
213
|
+
* chef-shell falls back to loading /etc/chef/client.rb or /etc/chef/solo.rb if -z or
|
214
|
+
-s options are given and no chef_shell.rb can be found.
|
214
215
|
FOOTER
|
215
216
|
|
216
217
|
option :config_file,
|
@@ -230,26 +231,26 @@ FOOTER
|
|
230
231
|
:short => "-l LOG_LEVEL",
|
231
232
|
:long => '--log-level LOG_LEVEL',
|
232
233
|
:description => "Set the logging level",
|
233
|
-
:proc => proc { |level| Chef::
|
234
|
+
:proc => proc { |level| Chef::Config.log_level = level.to_sym; Shell.setup_logger }
|
234
235
|
|
235
236
|
option :standalone,
|
236
237
|
:short => "-a",
|
237
238
|
:long => "--standalone",
|
238
|
-
:description => "standalone
|
239
|
+
:description => "standalone session",
|
239
240
|
:default => true,
|
240
241
|
:boolean => true
|
241
242
|
|
242
|
-
option :
|
243
|
+
option :shell_solo,
|
243
244
|
:short => "-s",
|
244
245
|
:long => "--solo",
|
245
|
-
:description => "chef-solo
|
246
|
+
:description => "chef-solo session",
|
246
247
|
:boolean => true,
|
247
248
|
:proc => proc {Chef::Config[:solo] = true}
|
248
249
|
|
249
250
|
option :client,
|
250
251
|
:short => "-z",
|
251
252
|
:long => "--client",
|
252
|
-
:description => "chef-client
|
253
|
+
:description => "chef-client session",
|
253
254
|
:boolean => true
|
254
255
|
|
255
256
|
option :json_attribs,
|
@@ -272,12 +273,6 @@ FOOTER
|
|
272
273
|
:proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"},
|
273
274
|
:exit => 0
|
274
275
|
|
275
|
-
option :override_runlist,
|
276
|
-
:short => "-o RunlistItem,RunlistItem...",
|
277
|
-
:long => "--override-runlist RunlistItem,RunlistItem...",
|
278
|
-
:description => "Replace current run list with specified items",
|
279
|
-
:proc => lambda { |items| items.split(',').map { |item| Chef::RunList::RunListItem.new(item) }}
|
280
|
-
|
281
276
|
def self.print_help
|
282
277
|
instance = new
|
283
278
|
instance.parse_options([])
|
@@ -298,8 +293,8 @@ FOOTER
|
|
298
293
|
# We have to nuke ARGV to make sure irb's option parser never sees it.
|
299
294
|
# otherwise, IRB complains about command line switches it doesn't recognize.
|
300
295
|
ARGV.clear
|
301
|
-
config[:config_file] =
|
302
|
-
config_msg = config[:config_file] || "none (standalone
|
296
|
+
config[:config_file] = config_file_for_shell_mode(environment)
|
297
|
+
config_msg = config[:config_file] || "none (standalone session)"
|
303
298
|
puts "loading configuration: #{config_msg}"
|
304
299
|
Chef::Config.from_file(config[:config_file]) if !config[:config_file].nil? && File.exists?(config[:config_file]) && File.readable?(config[:config_file])
|
305
300
|
Chef::Config.merge!(config)
|
@@ -307,19 +302,19 @@ FOOTER
|
|
307
302
|
|
308
303
|
private
|
309
304
|
|
310
|
-
def
|
305
|
+
def config_file_for_shell_mode(environment)
|
311
306
|
if config[:config_file]
|
312
307
|
config[:config_file]
|
313
308
|
elsif environment && ENV['HOME']
|
314
|
-
|
315
|
-
config_file_to_try = ::File.join(ENV['HOME'], '.chef', environment, '
|
309
|
+
Shell.env = environment
|
310
|
+
config_file_to_try = ::File.join(ENV['HOME'], '.chef', environment, 'chef_shell.rb')
|
316
311
|
unless ::File.exist?(config_file_to_try)
|
317
|
-
puts "could not find
|
312
|
+
puts "could not find chef-shell config for environment #{environment} at #{config_file_to_try}"
|
318
313
|
exit 1
|
319
314
|
end
|
320
315
|
config_file_to_try
|
321
|
-
elsif ENV['HOME'] && ::File.exist?(File.join(ENV['HOME'], '.chef', '
|
322
|
-
File.join(ENV['HOME'], '.chef', '
|
316
|
+
elsif ENV['HOME'] && ::File.exist?(File.join(ENV['HOME'], '.chef', 'chef_shell.rb'))
|
317
|
+
File.join(ENV['HOME'], '.chef', 'chef_shell.rb')
|
323
318
|
elsif config[:solo]
|
324
319
|
"/etc/chef/solo.rb"
|
325
320
|
elsif config[:client]
|
@@ -0,0 +1,593 @@
|
|
1
|
+
#--
|
2
|
+
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
3
|
+
# Copyright:: Copyright (c) 2009 Daniel DeLeo
|
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 'tempfile'
|
20
|
+
require 'chef/recipe'
|
21
|
+
require 'fileutils'
|
22
|
+
require 'chef/dsl/platform_introspection'
|
23
|
+
require 'chef/version'
|
24
|
+
require 'chef/shell/shell_session'
|
25
|
+
require 'chef/shell/model_wrapper'
|
26
|
+
require 'chef/shell/shell_rest'
|
27
|
+
require 'chef/json_compat'
|
28
|
+
|
29
|
+
module Shell
|
30
|
+
module Extensions
|
31
|
+
|
32
|
+
Help = Struct.new(:cmd, :desc, :explanation)
|
33
|
+
|
34
|
+
# Extensions to be included in every 'main' object in chef-shell.
|
35
|
+
# These objects are extended with this module.
|
36
|
+
module ObjectCoreExtensions
|
37
|
+
|
38
|
+
def ensure_session_select_defined
|
39
|
+
# irb breaks if you prematurely define IRB::JobMangager
|
40
|
+
# so these methods need to be defined at the latest possible time.
|
41
|
+
unless jobs.respond_to?(:select_session_by_context)
|
42
|
+
def jobs.select_session_by_context(&block)
|
43
|
+
@jobs.select { |job| block.call(job[1].context.main)}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
unless jobs.respond_to?(:session_select)
|
48
|
+
def jobs.select_shell_session(target_context)
|
49
|
+
session = if target_context.kind_of?(Class)
|
50
|
+
select_session_by_context { |main| main.kind_of?(target_context) }
|
51
|
+
else
|
52
|
+
select_session_by_context { |main| main.equal?(target_context) }
|
53
|
+
end
|
54
|
+
Array(session.first)[1]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def find_or_create_session_for(context_obj)
|
60
|
+
ensure_session_select_defined
|
61
|
+
if subsession = jobs.select_shell_session(context_obj)
|
62
|
+
jobs.switch(subsession)
|
63
|
+
else
|
64
|
+
irb(context_obj)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def help_banner
|
69
|
+
banner = []
|
70
|
+
banner << ""
|
71
|
+
banner << "chef-shell Help"
|
72
|
+
banner << "".ljust(80, "=")
|
73
|
+
banner << "| " + "Command".ljust(25) + "| " + "Description"
|
74
|
+
banner << "".ljust(80, "=")
|
75
|
+
|
76
|
+
self.all_help_descriptions.each do |help_text|
|
77
|
+
banner << "| " + help_text.cmd.ljust(25) + "| " + help_text.desc
|
78
|
+
end
|
79
|
+
banner << "".ljust(80, "=")
|
80
|
+
banner << "\n"
|
81
|
+
banner << "Use help(:command) to get detailed help with individual commands"
|
82
|
+
banner << "\n"
|
83
|
+
banner.join("\n")
|
84
|
+
end
|
85
|
+
|
86
|
+
def explain_command(method_name)
|
87
|
+
help = self.all_help_descriptions.find { |h| h.cmd.to_s == method_name.to_s }
|
88
|
+
if help
|
89
|
+
puts ""
|
90
|
+
puts "Command: #{method_name}"
|
91
|
+
puts "".ljust(80, "=")
|
92
|
+
puts help.explanation || help.desc
|
93
|
+
puts "".ljust(80, "=")
|
94
|
+
puts ""
|
95
|
+
else
|
96
|
+
puts ""
|
97
|
+
puts "command #{method_name} not found or no help available"
|
98
|
+
puts ""
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# helpfully returns +:on+ so we can have sugary syntax like `tracing on'
|
103
|
+
def on
|
104
|
+
:on
|
105
|
+
end
|
106
|
+
|
107
|
+
# returns +:off+ so you can just do `tracing off'
|
108
|
+
def off
|
109
|
+
:off
|
110
|
+
end
|
111
|
+
|
112
|
+
def help_descriptions
|
113
|
+
@help_descriptions ||= []
|
114
|
+
end
|
115
|
+
|
116
|
+
def all_help_descriptions
|
117
|
+
help_descriptions
|
118
|
+
end
|
119
|
+
|
120
|
+
def desc(help_text)
|
121
|
+
@desc = help_text
|
122
|
+
end
|
123
|
+
|
124
|
+
def explain(explain_text)
|
125
|
+
@explain = explain_text
|
126
|
+
end
|
127
|
+
|
128
|
+
def subcommands(subcommand_help={})
|
129
|
+
@subcommand_help = subcommand_help
|
130
|
+
end
|
131
|
+
|
132
|
+
def singleton_method_added(mname)
|
133
|
+
if @desc
|
134
|
+
help_descriptions << Help.new(mname.to_s, @desc.to_s, @explain)
|
135
|
+
@desc, @explain = nil, nil
|
136
|
+
end
|
137
|
+
if @subcommand_help
|
138
|
+
@subcommand_help.each do |subcommand, text|
|
139
|
+
help_descriptions << Help.new("#{mname}.#{subcommand}", text.to_s, nil)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
@subcommand_help = {}
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
module String
|
148
|
+
def on_off_to_bool
|
149
|
+
case self
|
150
|
+
when "on"
|
151
|
+
true
|
152
|
+
when "off"
|
153
|
+
false
|
154
|
+
else
|
155
|
+
self
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
module Symbol
|
161
|
+
def on_off_to_bool
|
162
|
+
self.to_s.on_off_to_bool
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
module TrueClass
|
167
|
+
def to_on_off_str
|
168
|
+
"on"
|
169
|
+
end
|
170
|
+
|
171
|
+
def on_off_to_bool
|
172
|
+
self
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
module FalseClass
|
177
|
+
def to_on_off_str
|
178
|
+
"off"
|
179
|
+
end
|
180
|
+
|
181
|
+
def on_off_to_bool
|
182
|
+
self
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
# Methods that have associated help text need to be dynamically added
|
187
|
+
# to the main irb objects, so we define them in a proc and later
|
188
|
+
# instance_eval the proc in the object.
|
189
|
+
ObjectUIExtensions = Proc.new do
|
190
|
+
extend Shell::Extensions::ObjectCoreExtensions
|
191
|
+
|
192
|
+
desc "prints this help message"
|
193
|
+
explain(<<-E)
|
194
|
+
## SUMMARY ##
|
195
|
+
When called with no argument, +help+ prints a table of all
|
196
|
+
chef-shell commands. When called with an argument COMMAND, +help+
|
197
|
+
prints a detailed explanation of the command if available, or the
|
198
|
+
description if no explanation is available.
|
199
|
+
E
|
200
|
+
def help(commmand=nil)
|
201
|
+
if commmand
|
202
|
+
explain_command(commmand)
|
203
|
+
else
|
204
|
+
puts help_banner
|
205
|
+
end
|
206
|
+
:ucanhaz_halp
|
207
|
+
end
|
208
|
+
alias :halp :help
|
209
|
+
|
210
|
+
desc "prints information about chef"
|
211
|
+
def version
|
212
|
+
puts "This is the chef-shell.\n" +
|
213
|
+
" Chef Version: #{::Chef::VERSION}\n" +
|
214
|
+
" http://www.opscode.com/chef\n" +
|
215
|
+
" http://wiki.opscode.com/display/chef/Home"
|
216
|
+
:ucanhaz_automation
|
217
|
+
end
|
218
|
+
alias :shell :version
|
219
|
+
|
220
|
+
desc "switch to recipe mode"
|
221
|
+
def recipe_mode
|
222
|
+
find_or_create_session_for Shell.session.recipe
|
223
|
+
:recipe
|
224
|
+
end
|
225
|
+
|
226
|
+
desc "switch to attributes mode"
|
227
|
+
def attributes_mode
|
228
|
+
find_or_create_session_for Shell.session.node
|
229
|
+
:attributes
|
230
|
+
end
|
231
|
+
|
232
|
+
desc "run chef using the current recipe"
|
233
|
+
def run_chef
|
234
|
+
Chef::Log.level = :debug
|
235
|
+
session = Shell.session
|
236
|
+
runrun = Chef::Runner.new(session.run_context).converge
|
237
|
+
Chef::Log.level = :info
|
238
|
+
runrun
|
239
|
+
end
|
240
|
+
|
241
|
+
desc "returns an object to control a paused chef run"
|
242
|
+
subcommands :resume => "resume the chef run",
|
243
|
+
:step => "run only the next resource",
|
244
|
+
:skip_back => "move back in the run list",
|
245
|
+
:skip_forward => "move forward in the run list"
|
246
|
+
def chef_run
|
247
|
+
Shell.session.resource_collection.iterator
|
248
|
+
end
|
249
|
+
|
250
|
+
desc "resets the current recipe"
|
251
|
+
def reset
|
252
|
+
Shell.session.reset!
|
253
|
+
end
|
254
|
+
|
255
|
+
desc "assume the identity of another node."
|
256
|
+
def become_node(node_name)
|
257
|
+
Shell::DoppelGangerSession.instance.assume_identity(node_name)
|
258
|
+
:doppelganger
|
259
|
+
end
|
260
|
+
alias :doppelganger :become_node
|
261
|
+
|
262
|
+
desc "turns printout of return values on or off"
|
263
|
+
def echo(on_or_off)
|
264
|
+
conf.echo = on_or_off.on_off_to_bool
|
265
|
+
end
|
266
|
+
|
267
|
+
desc "says if echo is on or off"
|
268
|
+
def echo?
|
269
|
+
puts "echo is #{conf.echo.to_on_off_str}"
|
270
|
+
end
|
271
|
+
|
272
|
+
desc "turns on or off tracing of execution. *verbose*"
|
273
|
+
def tracing(on_or_off)
|
274
|
+
conf.use_tracer = on_or_off.on_off_to_bool
|
275
|
+
tracing?
|
276
|
+
end
|
277
|
+
alias :trace :tracing
|
278
|
+
|
279
|
+
desc "says if tracing is on or off"
|
280
|
+
def tracing?
|
281
|
+
puts "tracing is #{conf.use_tracer.to_on_off_str}"
|
282
|
+
end
|
283
|
+
alias :trace? :tracing?
|
284
|
+
|
285
|
+
desc "simple ls style command"
|
286
|
+
def ls(directory)
|
287
|
+
Dir.entries(directory)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
MainContextExtensions = Proc.new do
|
292
|
+
desc "returns the current node (i.e., this host)"
|
293
|
+
def node
|
294
|
+
Shell.session.node
|
295
|
+
end
|
296
|
+
|
297
|
+
desc "pretty print the node's attributes"
|
298
|
+
def ohai(key=nil)
|
299
|
+
pp(key ? node.attribute[key] : node.attribute)
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
RESTApiExtensions = Proc.new do
|
304
|
+
desc "edit an object in your EDITOR"
|
305
|
+
explain(<<-E)
|
306
|
+
## SUMMARY ##
|
307
|
+
+edit(object)+ allows you to edit any object that can be converted to JSON.
|
308
|
+
When finished editing, this method will return the edited object:
|
309
|
+
|
310
|
+
new_node = edit(existing_node)
|
311
|
+
|
312
|
+
## EDITOR SELECTION ##
|
313
|
+
chef-shell looks for an editor using the following logic
|
314
|
+
1. Looks for an EDITOR set by Shell.editor = "EDITOR"
|
315
|
+
2. Looks for an EDITOR configured in your chef-shell config file
|
316
|
+
3. Uses the value of the EDITOR environment variable
|
317
|
+
E
|
318
|
+
def edit(object)
|
319
|
+
unless Shell.editor
|
320
|
+
puts "Please set your editor with Shell.editor = \"vim|emacs|mate|ed\""
|
321
|
+
return :failburger
|
322
|
+
end
|
323
|
+
|
324
|
+
filename = "chef-shell-edit-#{object.class.name}-"
|
325
|
+
if object.respond_to?(:name)
|
326
|
+
filename += object.name
|
327
|
+
elsif object.respond_to?(:id)
|
328
|
+
filename += object.id
|
329
|
+
end
|
330
|
+
|
331
|
+
edited_data = Tempfile.open([filename, ".js"]) do |tempfile|
|
332
|
+
tempfile.sync = true
|
333
|
+
tempfile.puts Chef::JSONCompat.to_json(object)
|
334
|
+
system("#{Shell.editor.to_s} #{tempfile.path}")
|
335
|
+
tempfile.rewind
|
336
|
+
tempfile.read
|
337
|
+
end
|
338
|
+
|
339
|
+
Chef::JSONCompat.from_json(edited_data)
|
340
|
+
end
|
341
|
+
|
342
|
+
desc "Find and edit API clients"
|
343
|
+
explain(<<-E)
|
344
|
+
## SUMMARY ##
|
345
|
+
+clients+ allows you to query you chef server for information about your api
|
346
|
+
clients.
|
347
|
+
|
348
|
+
## LIST ALL CLIENTS ##
|
349
|
+
To see all clients on the system, use
|
350
|
+
|
351
|
+
clients.all #=> [<Chef::ApiClient...>, ...]
|
352
|
+
|
353
|
+
If the output from all is too verbose, or you're only interested in a specific
|
354
|
+
value from each of the objects, you can give a code block to +all+:
|
355
|
+
|
356
|
+
clients.all { |client| client.name } #=> [CLIENT1_NAME, CLIENT2_NAME, ...]
|
357
|
+
|
358
|
+
## SHOW ONE CLIENT ##
|
359
|
+
To see a specific client, use
|
360
|
+
|
361
|
+
clients.show(CLIENT_NAME)
|
362
|
+
|
363
|
+
## SEARCH FOR CLIENTS ##
|
364
|
+
You can also search for clients using +find+ or +search+. You can use the
|
365
|
+
familiar string search syntax:
|
366
|
+
|
367
|
+
clients.search("KEY:VALUE")
|
368
|
+
|
369
|
+
Just as the +all+ subcommand, the +search+ subcommand can use a code block to
|
370
|
+
filter or transform the information returned from the search:
|
371
|
+
|
372
|
+
clients.search("KEY:VALUE") { |c| c.name }
|
373
|
+
|
374
|
+
You can also use a Hash based syntax, multiple search conditions will be
|
375
|
+
joined with AND.
|
376
|
+
|
377
|
+
clients.find :KEY => :VALUE, :KEY2 => :VALUE2, ...
|
378
|
+
|
379
|
+
## BULK-EDIT CLIENTS ##
|
380
|
+
**BE CAREFUL, THIS IS DESTRUCTIVE**
|
381
|
+
You can bulk edit API Clients using the +transform+ subcommand, which requires
|
382
|
+
a code block. Each client will be saved after the code block is run. If the
|
383
|
+
code block returns +nil+ or +false+, that client will be skipped:
|
384
|
+
|
385
|
+
clients.transform("*:*") do |client|
|
386
|
+
if client.name =~ /borat/i
|
387
|
+
client.admin(false)
|
388
|
+
true
|
389
|
+
else
|
390
|
+
nil
|
391
|
+
end
|
392
|
+
end
|
393
|
+
|
394
|
+
This will strip the admin privileges from any client named after borat.
|
395
|
+
E
|
396
|
+
subcommands :all => "list all api clients",
|
397
|
+
:show => "load an api client by name",
|
398
|
+
:search => "search for API clients",
|
399
|
+
:transform => "edit all api clients via a code block and save them"
|
400
|
+
def clients
|
401
|
+
@clients ||= Shell::ModelWrapper.new(Chef::ApiClient, :client)
|
402
|
+
end
|
403
|
+
|
404
|
+
desc "Find and edit cookbooks"
|
405
|
+
subcommands :all => "list all cookbooks",
|
406
|
+
:show => "load a cookbook by name",
|
407
|
+
:transform => "edit all cookbooks via a code block and save them"
|
408
|
+
def cookbooks
|
409
|
+
@cookbooks ||= Shell::ModelWrapper.new(Chef::CookbookVersion)
|
410
|
+
end
|
411
|
+
|
412
|
+
desc "Find and edit nodes via the API"
|
413
|
+
explain(<<-E)
|
414
|
+
## SUMMARY ##
|
415
|
+
+nodes+ Allows you to query your chef server for information about your nodes.
|
416
|
+
|
417
|
+
## LIST ALL NODES ##
|
418
|
+
You can list all nodes using +all+ or +list+
|
419
|
+
|
420
|
+
nodes.all #=> [<Chef::Node...>, <Chef::Node...>, ...]
|
421
|
+
|
422
|
+
To limit the information returned for each node, pass a code block to the +all+
|
423
|
+
subcommand:
|
424
|
+
|
425
|
+
nodes.all { |node| node.name } #=> [NODE1_NAME, NODE2_NAME, ...]
|
426
|
+
|
427
|
+
## SHOW ONE NODE ##
|
428
|
+
You can show the data for a single node using the +show+ subcommand:
|
429
|
+
|
430
|
+
nodes.show("NODE_NAME") => <Chef::Node @name="NODE_NAME" ...>
|
431
|
+
|
432
|
+
## SEARCH FOR NODES ##
|
433
|
+
You can search for nodes using the +search+ or +find+ subcommands:
|
434
|
+
|
435
|
+
nodes.find(:name => "app*") #=> [<Chef::Node @name="app1.example.com" ...>, ...]
|
436
|
+
|
437
|
+
Similarly to +all+, you can pass a code block to limit or transform the
|
438
|
+
information returned:
|
439
|
+
|
440
|
+
nodes.find(:name => "app#") { |node| node.ec2 }
|
441
|
+
|
442
|
+
## BULK EDIT NODES ##
|
443
|
+
**BE CAREFUL, THIS OPERATION IS DESTRUCTIVE**
|
444
|
+
|
445
|
+
Bulk edit nodes by passing a code block to the +transform+ or +bulk_edit+
|
446
|
+
subcommand. The block will be applied to each matching node, and then the node
|
447
|
+
will be saved. If the block returns +nil+ or +false+, that node will be
|
448
|
+
skipped.
|
449
|
+
|
450
|
+
nodes.transform do |node|
|
451
|
+
if node.fqdn =~ /.*\\.preprod\\.example\\.com/
|
452
|
+
node.set[:environment] = "preprod"
|
453
|
+
end
|
454
|
+
end
|
455
|
+
|
456
|
+
This will assign the attribute to every node with a FQDN matching the regex.
|
457
|
+
E
|
458
|
+
subcommands :all => "list all nodes",
|
459
|
+
:show => "load a node by name",
|
460
|
+
:search => "search for nodes",
|
461
|
+
:transform => "edit all nodes via a code block and save them"
|
462
|
+
def nodes
|
463
|
+
@nodes ||= Shell::ModelWrapper.new(Chef::Node)
|
464
|
+
end
|
465
|
+
|
466
|
+
desc "Find and edit roles via the API"
|
467
|
+
explain(<<-E)
|
468
|
+
## SUMMARY ##
|
469
|
+
+roles+ allows you to query and edit roles on your Chef server.
|
470
|
+
|
471
|
+
## SUBCOMMANDS ##
|
472
|
+
* all (list)
|
473
|
+
* show (load)
|
474
|
+
* search (find)
|
475
|
+
* transform (bulk_edit)
|
476
|
+
|
477
|
+
## SEE ALSO ##
|
478
|
+
See the help for +nodes+ for more information about the subcommands.
|
479
|
+
E
|
480
|
+
subcommands :all => "list all roles",
|
481
|
+
:show => "load a role by name",
|
482
|
+
:search => "search for roles",
|
483
|
+
:transform => "edit all roles via a code block and save them"
|
484
|
+
def roles
|
485
|
+
@roles ||= Shell::ModelWrapper.new(Chef::Role)
|
486
|
+
end
|
487
|
+
|
488
|
+
desc "Find and edit +databag_name+ via the api"
|
489
|
+
explain(<<-E)
|
490
|
+
## SUMMARY ##
|
491
|
+
+databags(DATABAG_NAME)+ allows you to query and edit data bag items on your
|
492
|
+
Chef server. Unlike other commands for working with data on the server,
|
493
|
+
+databags+ requires the databag name as an argument, for example:
|
494
|
+
databags(:users).all
|
495
|
+
|
496
|
+
## SUBCOMMANDS ##
|
497
|
+
* all (list)
|
498
|
+
* show (load)
|
499
|
+
* search (find)
|
500
|
+
* transform (bulk_edit)
|
501
|
+
|
502
|
+
## SEE ALSO ##
|
503
|
+
See the help for +nodes+ for more information about the subcommands.
|
504
|
+
|
505
|
+
E
|
506
|
+
subcommands :all => "list all items in the data bag",
|
507
|
+
:show => "load a data bag item by id",
|
508
|
+
:search => "search for items in the data bag",
|
509
|
+
:transform => "edit all items via a code block and save them"
|
510
|
+
def databags(databag_name)
|
511
|
+
@named_databags_wrappers ||= {}
|
512
|
+
@named_databags_wrappers[databag_name] ||= Shell::NamedDataBagWrapper.new(databag_name)
|
513
|
+
end
|
514
|
+
|
515
|
+
desc "Find and edit environments via the API"
|
516
|
+
explain(<<-E)
|
517
|
+
## SUMMARY ##
|
518
|
+
+environments+ allows you to query and edit environments on your Chef server.
|
519
|
+
|
520
|
+
## SUBCOMMANDS ##
|
521
|
+
* all (list)
|
522
|
+
* show (load)
|
523
|
+
* search (find)
|
524
|
+
* transform (bulk_edit)
|
525
|
+
|
526
|
+
## SEE ALSO ##
|
527
|
+
See the help for +nodes+ for more information about the subcommands.
|
528
|
+
E
|
529
|
+
subcommands :all => "list all environments",
|
530
|
+
:show => "load an environment by name",
|
531
|
+
:search => "search for environments",
|
532
|
+
:transform => "edit all environments via a code block and save them"
|
533
|
+
def environments
|
534
|
+
@environments ||= Shell::ModelWrapper.new(Chef::Environment)
|
535
|
+
end
|
536
|
+
|
537
|
+
desc "A REST Client configured to authenticate with the API"
|
538
|
+
def api
|
539
|
+
@rest = Shell::ShellREST.new(Chef::Config[:chef_server_url])
|
540
|
+
end
|
541
|
+
|
542
|
+
end
|
543
|
+
|
544
|
+
RecipeUIExtensions = Proc.new do
|
545
|
+
alias :original_resources :resources
|
546
|
+
|
547
|
+
desc "list all the resources on the current recipe"
|
548
|
+
def resources(*args)
|
549
|
+
if args.empty?
|
550
|
+
pp run_context.resource_collection.instance_variable_get(:@resources_by_name).keys
|
551
|
+
else
|
552
|
+
pp resources = original_resources(*args)
|
553
|
+
resources
|
554
|
+
end
|
555
|
+
end
|
556
|
+
end
|
557
|
+
|
558
|
+
def self.extend_context_object(obj)
|
559
|
+
obj.instance_eval(&ObjectUIExtensions)
|
560
|
+
obj.instance_eval(&MainContextExtensions)
|
561
|
+
obj.instance_eval(&RESTApiExtensions)
|
562
|
+
obj.extend(FileUtils)
|
563
|
+
obj.extend(Chef::DSL::PlatformIntrospection)
|
564
|
+
obj.extend(Chef::DSL::DataQuery)
|
565
|
+
end
|
566
|
+
|
567
|
+
def self.extend_context_node(node_obj)
|
568
|
+
node_obj.instance_eval(&ObjectUIExtensions)
|
569
|
+
end
|
570
|
+
|
571
|
+
def self.extend_context_recipe(recipe_obj)
|
572
|
+
recipe_obj.instance_eval(&ObjectUIExtensions)
|
573
|
+
recipe_obj.instance_eval(&RecipeUIExtensions)
|
574
|
+
end
|
575
|
+
|
576
|
+
end
|
577
|
+
end
|
578
|
+
|
579
|
+
class String
|
580
|
+
include Shell::Extensions::String
|
581
|
+
end
|
582
|
+
|
583
|
+
class Symbol
|
584
|
+
include Shell::Extensions::Symbol
|
585
|
+
end
|
586
|
+
|
587
|
+
class TrueClass
|
588
|
+
include Shell::Extensions::TrueClass
|
589
|
+
end
|
590
|
+
|
591
|
+
class FalseClass
|
592
|
+
include Shell::Extensions::FalseClass
|
593
|
+
end
|