chef 12.10.24 → 12.11.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +3 -38
- data/Gemfile +6 -11
- data/LICENSE +201 -201
- data/README.md +11 -1
- data/VERSION +1 -1
- data/acceptance/.bundle/config +2 -0
- data/acceptance/Gemfile.lock +27 -26
- data/acceptance/basics/.kitchen/logs/chef-current-install-ubuntu-1404.log +2 -0
- data/acceptance/basics/.kitchen/logs/kitchen.log +3 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +16 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +3 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +85 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +3 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +7 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +38 -0
- data/acceptance/data-collector/.kitchen.yml +9 -0
- data/acceptance/data-collector/Berksfile +3 -0
- data/acceptance/data-collector/Berksfile.lock +6 -0
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +251 -0
- data/acceptance/fips/.kitchen/logs/fips-integration-centos-6.log +3 -0
- data/acceptance/fips/.kitchen/logs/fips-integration-windows-2012r2.log +3 -0
- data/acceptance/fips/.kitchen/logs/fips-unit-functional-centos-6.log +3 -0
- data/acceptance/fips/.kitchen/logs/fips-unit-functional-windows-2012r2.log +3 -0
- data/acceptance/fips/.kitchen/logs/kitchen.log +6 -0
- data/acceptance/fips/test/integration/fips-integration/serverspec/fips-integration_spec.rb +2 -1
- data/acceptance/top-cookbooks/.kitchen.docker.yml +1 -4
- data/acceptance/trivial/.kitchen/logs/chef-current-install-windows-2012r2.log +2 -0
- data/acceptance/trivial/.kitchen/logs/kitchen.log +3 -0
- data/acceptance/windows-service/.kitchen/logs/chef-windows-service-windows-2012r2.log +2 -0
- data/acceptance/windows-service/.kitchen/logs/kitchen.log +3 -0
- data/bin/chef-apply +0 -0
- data/bin/chef-client +0 -0
- data/bin/chef-shell +0 -0
- data/bin/chef-solo +0 -0
- data/bin/knife +0 -0
- data/chef.gemspec +1 -0
- data/distro/common/html/_sources/ctl_chef_client.txt +35 -35
- data/distro/common/html/_sources/ctl_chef_server.txt +341 -341
- data/distro/common/html/_sources/ctl_chef_shell.txt +15 -15
- data/distro/common/html/_sources/ctl_chef_solo.txt +25 -25
- data/distro/common/html/_sources/index.txt +135 -135
- data/distro/common/html/_sources/knife.txt +74 -74
- data/distro/common/html/_sources/knife_bootstrap.txt +56 -56
- data/distro/common/html/_sources/knife_client.txt +150 -150
- data/distro/common/html/_sources/knife_common_options.txt +6 -6
- data/distro/common/html/_sources/knife_configure.txt +29 -29
- data/distro/common/html/_sources/knife_cookbook.txt +236 -236
- data/distro/common/html/_sources/knife_cookbook_site.txt +157 -157
- data/distro/common/html/_sources/knife_data_bag.txt +159 -159
- data/distro/common/html/_sources/knife_delete.txt +26 -26
- data/distro/common/html/_sources/knife_deps.txt +61 -61
- data/distro/common/html/_sources/knife_diff.txt +34 -34
- data/distro/common/html/_sources/knife_download.txt +44 -44
- data/distro/common/html/_sources/knife_edit.txt +26 -26
- data/distro/common/html/_sources/knife_environment.txt +158 -158
- data/distro/common/html/_sources/knife_exec.txt +47 -47
- data/distro/common/html/_sources/knife_index_rebuild.txt +20 -20
- data/distro/common/html/_sources/knife_list.txt +33 -33
- data/distro/common/html/_sources/knife_node.txt +250 -250
- data/distro/common/html/_sources/knife_raw.txt +35 -35
- data/distro/common/html/_sources/knife_recipe_list.txt +23 -23
- data/distro/common/html/_sources/knife_role.txt +157 -157
- data/distro/common/html/_sources/knife_search.txt +53 -53
- data/distro/common/html/_sources/knife_serve.txt +18 -18
- data/distro/common/html/_sources/knife_show.txt +26 -26
- data/distro/common/html/_sources/knife_ssh.txt +43 -43
- data/distro/common/html/_sources/knife_ssl_check.txt +41 -41
- data/distro/common/html/_sources/knife_ssl_fetch.txt +41 -41
- data/distro/common/html/_sources/knife_status.txt +37 -37
- data/distro/common/html/_sources/knife_tag.txt +69 -69
- data/distro/common/html/_sources/knife_upload.txt +49 -49
- data/distro/common/html/_sources/knife_user.txt +127 -127
- data/distro/common/html/_sources/knife_using.txt +43 -43
- data/distro/common/html/_sources/knife_xargs.txt +30 -30
- data/distro/common/html/_static/guide.css +504 -504
- data/distro/common/html/_static/pygments.css +61 -61
- data/distro/common/html/_static/underscore.js +31 -31
- data/distro/common/html/ctl_chef_client.html +269 -269
- data/distro/common/html/ctl_chef_server.html +727 -727
- data/distro/common/html/ctl_chef_shell.html +162 -162
- data/distro/common/html/ctl_chef_solo.html +193 -193
- data/distro/common/html/index.html +201 -201
- data/distro/common/html/knife.html +169 -169
- data/distro/common/html/knife_bootstrap.html +284 -284
- data/distro/common/html/knife_client.html +284 -284
- data/distro/common/html/knife_common_options.html +95 -95
- data/distro/common/html/knife_configure.html +104 -104
- data/distro/common/html/knife_cookbook.html +486 -486
- data/distro/common/html/knife_data_bag.html +373 -373
- data/distro/common/html/knife_delete.html +92 -92
- data/distro/common/html/knife_deps.html +142 -142
- data/distro/common/html/knife_diff.html +122 -122
- data/distro/common/html/knife_download.html +144 -144
- data/distro/common/html/knife_edit.html +88 -88
- data/distro/common/html/knife_environment.html +325 -325
- data/distro/common/html/knife_exec.html +219 -219
- data/distro/common/html/knife_index_rebuild.html +82 -82
- data/distro/common/html/knife_list.html +113 -113
- data/distro/common/html/knife_node.html +457 -457
- data/distro/common/html/knife_raw.html +109 -109
- data/distro/common/html/knife_recipe_list.html +90 -90
- data/distro/common/html/knife_role.html +294 -294
- data/distro/common/html/knife_search.html +202 -202
- data/distro/common/html/knife_serve.html +78 -78
- data/distro/common/html/knife_show.html +103 -103
- data/distro/common/html/knife_ssh.html +176 -176
- data/distro/common/html/knife_ssl_check.html +150 -150
- data/distro/common/html/knife_ssl_fetch.html +150 -150
- data/distro/common/html/knife_status.html +143 -143
- data/distro/common/html/knife_tag.html +137 -137
- data/distro/common/html/knife_upload.html +152 -152
- data/distro/common/html/knife_user.html +241 -241
- data/distro/common/html/knife_using.html +209 -209
- data/distro/common/html/knife_xargs.html +121 -121
- data/distro/common/html/search.html +81 -81
- data/distro/common/man/man1/README.md +58 -58
- data/distro/common/man/man1/chef-shell.1 +194 -194
- data/distro/common/man/man1/knife-bootstrap.1 +215 -215
- data/distro/common/man/man1/knife-client.1 +443 -443
- data/distro/common/man/man1/knife-configure.1 +161 -161
- data/distro/common/man/man1/knife-cookbook.1 +770 -770
- data/distro/common/man/man1/knife-data-bag.1 +617 -617
- data/distro/common/man/man1/knife-delete.1 +127 -127
- data/distro/common/man/man1/knife-deps.1 +246 -246
- data/distro/common/man/man1/knife-diff.1 +226 -226
- data/distro/common/man/man1/knife-download.1 +258 -258
- data/distro/common/man/man1/knife-edit.1 +121 -121
- data/distro/common/man/man1/knife-environment.1 +508 -508
- data/distro/common/man/man1/knife-exec.1 +362 -362
- data/distro/common/man/man1/knife-index-rebuild.1 +63 -63
- data/distro/common/man/man1/knife-list.1 +174 -174
- data/distro/common/man/man1/knife-node.1 +716 -716
- data/distro/common/man/man1/knife-raw.1 +172 -172
- data/distro/common/man/man1/knife-recipe-list.1 +85 -85
- data/distro/common/man/man1/knife-role.1 +426 -426
- data/distro/common/man/man1/knife-search.1 +359 -359
- data/distro/common/man/man1/knife-serve.1 +109 -109
- data/distro/common/man/man1/knife-show.1 +160 -160
- data/distro/common/man/man1/knife-ssh.1 +284 -284
- data/distro/common/man/man1/knife-ssl-check.1 +207 -207
- data/distro/common/man/man1/knife-ssl-fetch.1 +207 -207
- data/distro/common/man/man1/knife-status.1 +234 -234
- data/distro/common/man/man1/knife-tag.1 +189 -189
- data/distro/common/man/man1/knife-upload.1 +280 -280
- data/distro/common/man/man1/knife-user.1 +356 -356
- data/distro/common/man/man1/knife-xargs.1 +189 -189
- data/distro/common/man/man1/knife.1 +332 -332
- data/distro/common/man/man8/chef-apply.8 +86 -86
- data/distro/common/man/man8/chef-client.8 +398 -398
- data/distro/common/man/man8/chef-solo.8 +260 -260
- data/distro/common/markdown/README +3 -3
- data/lib/chef/application.rb +14 -9
- data/lib/chef/application/apply.rb +5 -5
- data/lib/chef/application/client.rb +3 -3
- data/lib/chef/application/exit_code.rb +226 -0
- data/lib/chef/application/solo.rb +37 -7
- data/lib/chef/application/windows_service.rb +3 -3
- data/lib/chef/chef_fs/command_line.rb +7 -0
- data/lib/chef/chef_fs/config.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +11 -10
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_system.rb +15 -13
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +4 -0
- data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +9 -0
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +6 -0
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -0
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +4 -0
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +4 -0
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +4 -0
- data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +4 -0
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +15 -4
- data/lib/chef/chef_fs/file_system/exceptions.rb +7 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/acl.rb +7 -0
- data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +36 -4
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +4 -0
- data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +0 -3
- data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/directory.rb +4 -0
- data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +0 -4
- data/lib/chef/chef_fs/file_system/repository/users_dir.rb +0 -4
- data/lib/chef/client.rb +11 -3
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/cookbook/gem_installer.rb +1 -0
- data/lib/chef/cookbook/synchronizer.rb +1 -1
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/data_collector.rb +345 -0
- data/lib/chef/data_collector/messages.rb +125 -0
- data/lib/chef/data_collector/messages/helpers.rb +161 -0
- data/lib/chef/data_collector/resource_report.rb +84 -0
- data/lib/chef/decorator.rb +81 -0
- data/lib/chef/decorator/lazy.rb +60 -0
- data/lib/chef/decorator/lazy_array.rb +59 -0
- data/lib/chef/deprecation/provider/remote_file.rb +1 -1
- data/lib/chef/dsl/core.rb +19 -11
- data/lib/chef/dsl/platform_introspection.rb +16 -0
- data/lib/chef/dsl/recipe.rb +15 -9
- data/lib/chef/dsl/universal.rb +50 -0
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/exceptions.rb +19 -4
- data/lib/chef/handler.rb +33 -0
- data/lib/chef/knife/cookbook_show.rb +6 -10
- data/lib/chef/knife/cookbook_site_install.rb +7 -2
- data/lib/chef/knife/help_topics.rb +4 -4
- data/lib/chef/knife/list.rb +1 -2
- data/lib/chef/knife/ssl_check.rb +2 -1
- data/lib/chef/monkey_patches/win32/registry.rb +11 -0
- data/lib/chef/nil_argument.rb +3 -3
- data/lib/chef/node.rb +2 -2
- data/lib/chef/platform/rebooter.rb +13 -2
- data/lib/chef/policy_builder/dynamic.rb +1 -1
- data/lib/chef/policy_builder/expand_node_object.rb +3 -3
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/provider/git.rb +43 -41
- data/lib/chef/provider/lwrp_base.rb +0 -1
- data/lib/chef/provider/osx_profile.rb +2 -3
- data/lib/chef/provider/package.rb +51 -13
- data/lib/chef/provider/package/apt.rb +97 -103
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dpkg.rb +2 -2
- data/lib/chef/provider/package/portage.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +8 -12
- data/lib/chef/provider/package/yum.rb +4 -959
- data/lib/chef/provider/package/yum/rpm_utils.rb +642 -0
- data/lib/chef/provider/package/{yum-dump.py → yum/yum-dump.py} +0 -0
- data/lib/chef/provider/package/yum/yum_cache.rb +376 -0
- data/lib/chef/provider/resource_update.rb +52 -52
- data/lib/chef/provider/systemd_unit.rb +238 -0
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/reserved_names.rb +9 -9
- data/lib/chef/resource.rb +2 -7
- data/lib/chef/resource/file.rb +6 -1
- data/lib/chef/resource/systemd_unit.rb +63 -0
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/sandbox.rb +20 -20
- data/lib/chef/shell/shell_session.rb +3 -3
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/system.rb +0 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +0 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
- data/spec/data/apt/var/www/apt/conf/distributions +7 -7
- data/spec/data/apt/var/www/apt/conf/incoming +4 -4
- data/spec/data/apt/var/www/apt/conf/pulls +3 -3
- data/spec/data/apt/var/www/apt/db/version +4 -4
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
- data/spec/data/bootstrap/no_proxy.erb +2 -2
- data/spec/data/bootstrap/secret.erb +9 -9
- data/spec/data/bootstrap/test-hints.erb +12 -12
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
- data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
- data/spec/data/config.rb +6 -6
- data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
- data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
- data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
- data/spec/data/cookbooks/apache2/metadata.rb +2 -2
- data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
- data/spec/data/cookbooks/borken/metadata.rb +2 -2
- data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
- data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
- data/spec/data/cookbooks/chefignore +8 -8
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
- data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
- data/spec/data/cookbooks/java/files/default/java.response +1 -1
- data/spec/data/cookbooks/java/metadata.rb +2 -2
- data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
- data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
- data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
- data/spec/data/cookbooks/openldap/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
- data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
- data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
- data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
- data/spec/data/cookbooks/preseed/metadata.rb +2 -2
- data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
- data/spec/data/definitions/test.rb +4 -4
- data/spec/data/environment-config.rb +4 -4
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
- data/spec/data/fileedit/hosts +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
- data/spec/data/kitchen/chefignore +6 -6
- data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
- data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
- data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
- data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
- data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
- data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
- data/spec/data/knife_subcommand/test_yourself.rb +21 -21
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -26
- data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
- data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
- data/spec/data/lwrp/resources/foo.rb +4 -4
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
- data/spec/data/mac_users/10.7-8.plist.xml +559 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
- data/spec/data/mac_users/10.7.plist.xml +559 -559
- data/spec/data/mac_users/10.7.shadow.xml +11 -11
- data/spec/data/mac_users/10.8.plist.xml +559 -559
- data/spec/data/mac_users/10.8.shadow.xml +21 -21
- data/spec/data/mac_users/10.9.plist.xml +560 -560
- data/spec/data/mac_users/10.9.shadow.xml +21 -21
- data/spec/data/metadata/quick_start/metadata.rb +19 -19
- data/spec/data/nodes/default.rb +15 -15
- data/spec/data/nodes/test.example.com.rb +17 -17
- data/spec/data/nodes/test.rb +15 -15
- data/spec/data/null_config.rb +1 -1
- data/spec/data/object_loader/environments/test.json +7 -7
- data/spec/data/object_loader/environments/test.rb +2 -2
- data/spec/data/object_loader/environments/test_json_class.json +8 -8
- data/spec/data/object_loader/nodes/test.json +7 -7
- data/spec/data/object_loader/nodes/test.rb +2 -2
- data/spec/data/object_loader/nodes/test_json_class.json +8 -8
- data/spec/data/object_loader/roles/test.json +7 -7
- data/spec/data/object_loader/roles/test.rb +2 -2
- data/spec/data/object_loader/roles/test_json_class.json +8 -8
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/recipes/test.rb +7 -7
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -4
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -3
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -3
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -3
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -3
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
- data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
- data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
- data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
- data/spec/data/run_context/nodes/run_context.rb +5 -5
- data/spec/data/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +10 -10
- data/spec/data/ssl/5e707473.0 +18 -18
- data/spec/data/ssl/chef-rspec.cert +27 -27
- data/spec/data/ssl/chef-rspec.key +27 -27
- data/spec/data/ssl/key.pem +15 -15
- data/spec/data/ssl/private_key.pem +27 -27
- data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
- data/spec/data/standalone_cookbook/chefignore +9 -9
- data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
- data/spec/data/trusted_certs/example.crt +22 -22
- data/spec/data/trusted_certs/intermediate.pem +27 -27
- data/spec/data/trusted_certs/root.pem +22 -22
- data/spec/functional/assets/chefinittest +34 -34
- data/spec/functional/assets/testchefsubsys +10 -10
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +0 -0
- data/spec/functional/resource/aix_service_spec.rb +0 -0
- data/spec/functional/resource/aixinit_service_spec.rb +0 -0
- data/spec/functional/resource/chocolatey_package_spec.rb +0 -5
- data/spec/functional/resource/env_spec.rb +0 -0
- data/spec/functional/win32/registry_spec.rb +1 -0
- data/spec/integration/client/exit_code_spec.rb +245 -0
- data/spec/integration/knife/deps_spec.rb +7 -7
- data/spec/integration/knife/download_spec.rb +19 -0
- data/spec/integration/knife/list_spec.rb +0 -8
- data/spec/integration/knife/upload_spec.rb +21 -2
- data/spec/integration/solo/solo_spec.rb +1 -1
- data/spec/rcov.opts +2 -2
- data/spec/unit/application/apply_spec.rb +6 -4
- data/spec/unit/application/exit_code_spec.rb +231 -0
- data/spec/unit/application/solo_spec.rb +143 -88
- data/spec/unit/chef_fs/config_spec.rb +129 -0
- data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +8 -10
- data/spec/unit/client_spec.rb +1 -1
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/synchronizer_spec.rb +1 -1
- data/spec/unit/data_bag_item_spec.rb +2 -2
- data/spec/unit/data_bag_spec.rb +2 -2
- data/spec/unit/data_collector/messages/helpers_spec.rb +190 -0
- data/spec/unit/data_collector/messages_spec.rb +207 -0
- data/spec/unit/data_collector_spec.rb +525 -0
- data/spec/unit/decorator/lazy_array_spec.rb +58 -0
- data/spec/unit/decorator/lazy_spec.rb +39 -0
- data/spec/unit/decorator_spec.rb +142 -0
- data/spec/unit/environment_spec.rb +4 -4
- data/spec/unit/handler_spec.rb +87 -0
- data/spec/unit/knife/cookbook_show_spec.rb +89 -90
- data/spec/unit/knife/ssl_check_spec.rb +16 -0
- data/spec/unit/policy_builder/dynamic_spec.rb +1 -1
- data/spec/unit/policy_builder/policyfile_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +77 -18
- data/spec/unit/provider/package/apt_spec.rb +97 -34
- data/spec/unit/provider/package/chocolatey_spec.rb +3 -15
- data/spec/unit/provider/package/portage_spec.rb +6 -0
- data/spec/unit/provider/package/rubygems_spec.rb +38 -4
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +27 -0
- data/spec/unit/provider/package_spec.rb +20 -7
- data/spec/unit/provider/systemd_unit_spec.rb +885 -0
- data/spec/unit/resource/systemd_unit_spec.rb +133 -0
- data/spec/unit/resource_builder_spec.rb +1 -1
- data/tasks/bin/bundle-platform +6 -2
- data/tasks/bin/bundle-platform.bat +0 -0
- data/tasks/bin/create-override-gemfile +0 -0
- data/tasks/bin/run_external_test +0 -0
- data/tasks/bundle_util.rb +18 -2
- data/tasks/changelog.rb +1 -0
- data/tasks/dependencies.rb +47 -57
- metadata +847 -7
- data/tasks/bin/run_chef_tests +0 -17
@@ -0,0 +1,231 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Steven Murawski (<smurawski@chef.io>)
|
3
|
+
# Copyright:: Copyright 2016, Chef Software, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require "chef"
|
20
|
+
require "spec_helper"
|
21
|
+
|
22
|
+
require "chef/application/exit_code"
|
23
|
+
|
24
|
+
describe Chef::Application::ExitCode do
|
25
|
+
|
26
|
+
let(:exit_codes) { Chef::Application::ExitCode }
|
27
|
+
|
28
|
+
let(:valid_rfc_exit_codes) { Chef::Application::ExitCode::VALID_RFC_062_EXIT_CODES.values }
|
29
|
+
|
30
|
+
context "Validates the return codes from RFC 062" do
|
31
|
+
|
32
|
+
before do
|
33
|
+
allow(Chef::Config).to receive(:[]).with(:exit_status).and_return(:enabled)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "validates a SUCCESS return code of 0" do
|
37
|
+
expect(valid_rfc_exit_codes.include?(0)).to eq(true)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "validates a GENERIC_FAILURE return code of 1" do
|
41
|
+
expect(valid_rfc_exit_codes.include?(1)).to eq(true)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "validates a SIGINT_RECEIVED return code of 2" do
|
45
|
+
expect(valid_rfc_exit_codes.include?(2)).to eq(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "validates a SIGTERM_RECEIVED return code of 3" do
|
49
|
+
expect(valid_rfc_exit_codes.include?(3)).to eq(true)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "validates a AUDIT_MODE_FAILURE return code of 42" do
|
53
|
+
expect(valid_rfc_exit_codes.include?(42)).to eq(true)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "validates a REBOOT_SCHEDULED return code of 35" do
|
57
|
+
expect(valid_rfc_exit_codes.include?(35)).to eq(true)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "validates a REBOOT_NEEDED return code of 37" do
|
61
|
+
expect(valid_rfc_exit_codes.include?(37)).to eq(true)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "validates a REBOOT_FAILED return code of 41" do
|
65
|
+
expect(valid_rfc_exit_codes.include?(41)).to eq(true)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when Chef::Config :exit_status is not configured" do
|
70
|
+
before do
|
71
|
+
allow(Chef::Config).to receive(:[]).with(:exit_status).and_return(nil)
|
72
|
+
allow(Chef::Config).to receive(:[]).with(:treat_deprecation_warnings_as_errors).and_return(false)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "writes a deprecation warning" do
|
76
|
+
warn = "Chef RFC 062 (https://github.com/chef/chef-rfc/master/rfc062-exit-status.md) defines the" \
|
77
|
+
" exit codes that should be used with Chef. Chef::Application::ExitCode defines valid exit codes" \
|
78
|
+
" In a future release, non-standard exit codes will be redefined as" \
|
79
|
+
" GENERIC_FAILURE unless `exit_status` is set to `:disabled` in your client.rb."
|
80
|
+
expect(Chef).to receive(:log_deprecation).with(warn)
|
81
|
+
expect(exit_codes.normalize_exit_code(151)).to eq(151)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "does not modify non-RFC exit codes" do
|
85
|
+
expect(exit_codes.normalize_exit_code(151)).to eq(151)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "returns DEPRECATED_FAILURE when no exit code is specified" do
|
89
|
+
expect(exit_codes.normalize_exit_code()).to eq(-1)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "returns SIGINT_RECEIVED when a SIGINT is received" do
|
93
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::SigInt.new("BOOM"))).to eq(2)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "returns SIGTERM_RECEIVED when a SIGTERM is received" do
|
97
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::SigTerm.new("BOOM"))).to eq(3)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "returns SIGINT_RECEIVED when a deprecated exit code error is received" do
|
101
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::DeprecatedExitCode.new("BOOM"))).to eq(2)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "returns GENERIC_FAILURE when an exception is specified" do
|
105
|
+
expect(exit_codes.normalize_exit_code(Exception.new("BOOM"))).to eq(1)
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
context "when Chef::Config :exit_status is configured to not validate exit codes" do
|
111
|
+
before do
|
112
|
+
allow(Chef::Config).to receive(:[]).with(:exit_status).and_return(:disabled)
|
113
|
+
allow(Chef::Config).to receive(:[]).with(:treat_deprecation_warnings_as_errors).and_return(false)
|
114
|
+
end
|
115
|
+
|
116
|
+
it "does not write a deprecation warning" do
|
117
|
+
warn = "Chef RFC 062 (https://github.com/chef/chef-rfc/master/rfc062-exit-status.md) defines the" \
|
118
|
+
" exit codes that should be used with Chef. Chef::Application::ExitCode defines valid exit codes" \
|
119
|
+
" In a future release, non-standard exit codes will be redefined as" \
|
120
|
+
" GENERIC_FAILURE unless `exit_status` is set to `:disabled` in your client.rb."
|
121
|
+
expect(Chef).not_to receive(:log_deprecation).with(warn)
|
122
|
+
expect(exit_codes.normalize_exit_code(151)).to eq(151)
|
123
|
+
end
|
124
|
+
|
125
|
+
it "does not modify non-RFC exit codes" do
|
126
|
+
expect(exit_codes.normalize_exit_code(151)).to eq(151)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "returns DEPRECATED_FAILURE when no exit code is specified" do
|
130
|
+
expect(exit_codes.normalize_exit_code()).to eq(-1)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "returns GENERIC_FAILURE when an exception is specified" do
|
134
|
+
expect(exit_codes.normalize_exit_code(Exception.new("BOOM"))).to eq(1)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "returns SUCCESS when a reboot is pending" do
|
138
|
+
allow(Chef::DSL::RebootPending).to receive(:reboot_pending?).and_return(true)
|
139
|
+
expect(exit_codes.normalize_exit_code(0)).to eq(0)
|
140
|
+
end
|
141
|
+
|
142
|
+
it "returns SIGINT_RECEIVED when a SIGINT is received" do
|
143
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::SigInt.new("BOOM"))).to eq(2)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "returns SIGTERM_RECEIVED when a SIGTERM is received" do
|
147
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::SigTerm.new("BOOM"))).to eq(3)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "returns SIGINT_RECEIVED when a deprecated exit code error is received" do
|
151
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::DeprecatedExitCode.new("BOOM"))).to eq(2)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
context "when Chef::Config :exit_status is configured to validate exit codes" do
|
156
|
+
before do
|
157
|
+
allow(Chef::Config).to receive(:[]).with(:exit_status).and_return(:enabled)
|
158
|
+
allow(Chef::Config).to receive(:[]).with(:treat_deprecation_warnings_as_errors).and_return(false)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "does write a deprecation warning" do
|
162
|
+
warn = "Chef RFC 062 (https://github.com/chef/chef-rfc/master/rfc062-exit-status.md) defines the" \
|
163
|
+
" exit codes that should be used with Chef. Chef::Application::ExitCode defines valid exit codes" \
|
164
|
+
" In a future release, non-standard exit codes will be redefined as" \
|
165
|
+
" GENERIC_FAILURE unless `exit_status` is set to `:disabled` in your client.rb."
|
166
|
+
expect(Chef).to receive(:log_deprecation).with(warn)
|
167
|
+
expect(exit_codes.normalize_exit_code(151)).to eq(1)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "returns a GENERIC_FAILURE for non-RFC exit codes" do
|
171
|
+
expect(exit_codes.normalize_exit_code(151)).to eq(1)
|
172
|
+
end
|
173
|
+
|
174
|
+
it "returns GENERIC_FAILURE when no exit code is specified" do
|
175
|
+
expect(exit_codes.normalize_exit_code()).to eq(1)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "returns SIGINT_RECEIVED when a SIGINT is received" do
|
179
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::SigInt.new("BOOM"))).to eq(2)
|
180
|
+
end
|
181
|
+
|
182
|
+
it "returns SIGTERM_RECEIVED when a SIGTERM is received" do
|
183
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::SigTerm.new("BOOM"))).to eq(3)
|
184
|
+
end
|
185
|
+
|
186
|
+
it "returns GENERIC_FAILURE when a deprecated exit code error is received" do
|
187
|
+
expect(exit_codes.normalize_exit_code(Chef::Exceptions::DeprecatedExitCode.new("BOOM"))).to eq(1)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "returns GENERIC_FAILURE when an exception is specified" do
|
191
|
+
expect(exit_codes.normalize_exit_code(Exception.new("BOOM"))).to eq(1)
|
192
|
+
end
|
193
|
+
|
194
|
+
it "returns AUDIT_MODE_FAILURE when there is an audit error" do
|
195
|
+
audit_error = Chef::Exceptions::AuditError.new("BOOM")
|
196
|
+
runtime_error = Chef::Exceptions::RunFailedWrappingError.new(audit_error)
|
197
|
+
expect(exit_codes.normalize_exit_code(runtime_error)).to eq(42)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "returns REBOOT_SCHEDULED when there is an reboot requested" do
|
201
|
+
reboot_error = Chef::Exceptions::Reboot.new("BOOM")
|
202
|
+
runtime_error = Chef::Exceptions::RunFailedWrappingError.new(reboot_error)
|
203
|
+
expect(exit_codes.normalize_exit_code(runtime_error)).to eq(35)
|
204
|
+
end
|
205
|
+
|
206
|
+
it "returns REBOOT_FAILED when the reboot command fails" do
|
207
|
+
reboot_error = Chef::Exceptions::RebootFailed.new("BOOM")
|
208
|
+
runtime_error = Chef::Exceptions::RunFailedWrappingError.new(reboot_error)
|
209
|
+
expect(exit_codes.normalize_exit_code(runtime_error)).to eq(41)
|
210
|
+
end
|
211
|
+
|
212
|
+
it "returns REBOOT_NEEDED when a reboot is pending" do
|
213
|
+
reboot_error = Chef::Exceptions::RebootPending.new("BOOM")
|
214
|
+
runtime_error = Chef::Exceptions::RunFailedWrappingError.new(reboot_error)
|
215
|
+
expect(exit_codes.normalize_exit_code(runtime_error)).to eq(37)
|
216
|
+
end
|
217
|
+
|
218
|
+
it "returns SIGINT_RECEIVED when a SIGINT is received." do
|
219
|
+
sigint_error = Chef::Exceptions::SigInt.new("BOOM")
|
220
|
+
runtime_error = Chef::Exceptions::RunFailedWrappingError.new(sigint_error)
|
221
|
+
expect(exit_codes.normalize_exit_code(runtime_error)).to eq(2)
|
222
|
+
end
|
223
|
+
|
224
|
+
it "returns SIGTERM_RECEIVED when a SIGTERM is received." do
|
225
|
+
sigterm_error = Chef::Exceptions::SigTerm.new("BOOM")
|
226
|
+
runtime_error = Chef::Exceptions::RunFailedWrappingError.new(sigterm_error)
|
227
|
+
expect(exit_codes.normalize_exit_code(runtime_error)).to eq(3)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
@@ -30,141 +30,196 @@ describe Chef::Application::Solo do
|
|
30
30
|
|
31
31
|
Chef::Config[:json_attribs] = false
|
32
32
|
Chef::Config[:solo] = true
|
33
|
+
Chef::Config[:solo_legacy_mode] = true
|
33
34
|
|
34
35
|
# protect the unit tests against accidental --delete-entire-chef-repo from firing
|
35
36
|
# for real during tests. DO NOT delete this line.
|
36
37
|
expect(FileUtils).not_to receive(:rm_rf)
|
37
38
|
end
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
it "should set solo mode to true" do
|
46
|
-
app.reconfigure
|
47
|
-
expect(Chef::Config[:solo]).to be_truthy
|
48
|
-
end
|
40
|
+
context "in legacy mode" do
|
41
|
+
describe "configuring the application" do
|
42
|
+
it "should call set_specific_recipes" do
|
43
|
+
expect(app).to receive(:set_specific_recipes)
|
44
|
+
app.reconfigure
|
45
|
+
end
|
49
46
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
47
|
+
it "should set solo mode to true" do
|
48
|
+
app.reconfigure
|
49
|
+
expect(Chef::Config[:solo]).to be_truthy
|
50
|
+
end
|
54
51
|
|
55
|
-
|
56
|
-
|
57
|
-
Chef::Config[:
|
58
|
-
Chef::Config[:daemonize] = false
|
59
|
-
Chef::Config[:interval] = nil
|
60
|
-
Chef::Config[:splay] = nil
|
52
|
+
it "should set audit-mode to :disabled" do
|
53
|
+
app.reconfigure
|
54
|
+
expect(Chef::Config[:audit_mode]).to be :disabled
|
61
55
|
end
|
62
56
|
|
63
|
-
|
57
|
+
describe "when configured to not fork the client process" do
|
64
58
|
before do
|
65
|
-
Chef::Config[:
|
59
|
+
Chef::Config[:client_fork] = false
|
60
|
+
Chef::Config[:daemonize] = false
|
61
|
+
Chef::Config[:interval] = nil
|
62
|
+
Chef::Config[:splay] = nil
|
66
63
|
end
|
67
64
|
|
68
|
-
|
69
|
-
|
70
|
-
|
65
|
+
context "when interval is given" do
|
66
|
+
before do
|
67
|
+
Chef::Config[:interval] = 600
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should terminate with message" do
|
71
|
+
expect(Chef::Application).to receive(:fatal!).with(
|
72
|
+
"Unforked chef-client interval runs are disabled in Chef 12.
|
71
73
|
Configuration settings:
|
72
74
|
interval = 600 seconds
|
73
75
|
Enable chef-client interval runs by setting `:client_fork = true` in your config file or adding `--fork` to your command line options."
|
74
|
-
|
76
|
+
)
|
77
|
+
app.reconfigure
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "when in daemonized mode and no interval has been set" do
|
83
|
+
before do
|
84
|
+
Chef::Config[:daemonize] = true
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should set the interval to 1800" do
|
88
|
+
Chef::Config[:interval] = nil
|
75
89
|
app.reconfigure
|
90
|
+
expect(Chef::Config[:interval]).to eq(1800)
|
76
91
|
end
|
77
92
|
end
|
78
|
-
end
|
79
93
|
|
80
|
-
|
81
|
-
|
82
|
-
Chef::
|
94
|
+
describe "when the json_attribs configuration option is specified" do
|
95
|
+
let(:json_attribs) { { "a" => "b" } }
|
96
|
+
let(:config_fetcher) { double(Chef::ConfigFetcher, :fetch_json => json_attribs) }
|
97
|
+
let(:json_source) { "https://foo.com/foo.json" }
|
98
|
+
|
99
|
+
before do
|
100
|
+
Chef::Config[:json_attribs] = json_source
|
101
|
+
expect(Chef::ConfigFetcher).to receive(:new).with(json_source).
|
102
|
+
and_return(config_fetcher)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "reads the JSON attributes from the specified source" do
|
106
|
+
app.reconfigure
|
107
|
+
expect(app.chef_client_json).to eq(json_attribs)
|
108
|
+
end
|
83
109
|
end
|
84
110
|
|
85
|
-
it "
|
86
|
-
Chef::Config[:
|
111
|
+
it "downloads a tarball when the recipe_url configuration option is specified" do
|
112
|
+
Chef::Config[:cookbook_path] = "#{Dir.tmpdir}/chef-solo/cookbooks"
|
113
|
+
Chef::Config[:recipe_url] = "http://junglist.gen.nz/recipes.tgz"
|
114
|
+
|
115
|
+
expect(FileUtils).to receive(:mkdir_p).with("#{Dir.tmpdir}/chef-solo").and_return(true)
|
116
|
+
|
117
|
+
tarfile = StringIO.new("remote_tarball_content")
|
118
|
+
target_file = StringIO.new
|
119
|
+
|
120
|
+
expect(app).to receive(:open).with("http://junglist.gen.nz/recipes.tgz").and_yield(tarfile)
|
121
|
+
expect(File).to receive(:open).with("#{Dir.tmpdir}/chef-solo/recipes.tgz", "wb").and_yield(target_file)
|
122
|
+
|
123
|
+
shellout = instance_double("Mixlib::ShellOut", run_command: nil, error!: nil, stdout: "")
|
124
|
+
|
125
|
+
expect(app).to receive(:shell_out!).with("tar zxvf #{Dir.tmpdir}/chef-solo/recipes.tgz -C #{Dir.tmpdir}/chef-solo").and_return(shellout)
|
87
126
|
app.reconfigure
|
88
|
-
expect(
|
127
|
+
expect(target_file.string).to eq("remote_tarball_content")
|
89
128
|
end
|
90
|
-
end
|
91
129
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
let(:json_source) { "https://foo.com/foo.json" }
|
130
|
+
it "fetches the recipe_url first when both json_attribs and recipe_url are specified" do
|
131
|
+
json_attribs = { "a" => "b" }
|
132
|
+
config_fetcher = instance_double("Chef::ConfigFetcher", :fetch_json => json_attribs)
|
96
133
|
|
97
|
-
|
98
|
-
Chef::Config[:
|
99
|
-
|
100
|
-
|
101
|
-
end
|
134
|
+
Chef::Config[:json_attribs] = "https://foo.com/foo.json"
|
135
|
+
Chef::Config[:recipe_url] = "http://icanhas.cheezburger.com/lolcats"
|
136
|
+
Chef::Config[:cookbook_path] = "#{Dir.tmpdir}/chef-solo/cookbooks"
|
137
|
+
expect(FileUtils).to receive(:mkdir_p).with("#{Dir.tmpdir}/chef-solo").and_return(true)
|
102
138
|
|
103
|
-
|
139
|
+
allow(Chef::Mixin::Command).to receive(:run_command).and_return(true)
|
140
|
+
|
141
|
+
shellout = instance_double("Mixlib::ShellOut", run_command: nil, error!: nil, stdout: "")
|
142
|
+
|
143
|
+
expect(app).to receive(:shell_out!).with("tar zxvf #{Dir.tmpdir}/chef-solo/recipes.tgz -C #{Dir.tmpdir}/chef-solo").and_return(shellout)
|
144
|
+
expect(app).to receive(:fetch_recipe_tarball).ordered
|
145
|
+
expect(Chef::ConfigFetcher).to receive(:new).ordered.and_return(config_fetcher)
|
104
146
|
app.reconfigure
|
105
|
-
expect(app.chef_client_json).to eq(json_attribs)
|
106
147
|
end
|
107
148
|
end
|
108
149
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
150
|
+
describe "after the application has been configured" do
|
151
|
+
before do
|
152
|
+
Chef::Config[:solo] = true
|
153
|
+
Chef::Config[:solo_legacy_mode] = true
|
154
|
+
|
155
|
+
allow(Chef::Daemon).to receive(:change_privilege)
|
156
|
+
chef_client = double("Chef::Client")
|
157
|
+
allow(Chef::Client).to receive(:new).and_return(chef_client)
|
158
|
+
# this is all stuff the reconfigure method needs
|
159
|
+
allow(app).to receive(:configure_opt_parser).and_return(true)
|
160
|
+
allow(app).to receive(:configure_chef).and_return(true)
|
161
|
+
allow(app).to receive(:configure_logging).and_return(true)
|
162
|
+
end
|
114
163
|
|
115
|
-
|
116
|
-
|
164
|
+
it "should change privileges" do
|
165
|
+
expect(Chef::Daemon).to receive(:change_privilege).and_return(true)
|
166
|
+
app.setup_application
|
167
|
+
end
|
168
|
+
end
|
117
169
|
|
118
|
-
|
119
|
-
|
170
|
+
it_behaves_like "an application that loads a dot d" do
|
171
|
+
let(:dot_d_config_name) { :solo_d_dir }
|
172
|
+
end
|
173
|
+
end
|
120
174
|
|
121
|
-
|
175
|
+
context "in local mode" do
|
176
|
+
before do
|
177
|
+
Chef::Config[:solo_legacy_mode] = false
|
178
|
+
end
|
122
179
|
|
123
|
-
|
180
|
+
it "sets solo mode to true" do
|
124
181
|
app.reconfigure
|
125
|
-
expect(
|
182
|
+
expect(Chef::Config[:solo]).to be_truthy
|
126
183
|
end
|
127
184
|
|
128
|
-
it "
|
129
|
-
|
130
|
-
|
185
|
+
it "sets local mode to true" do
|
186
|
+
app.reconfigure
|
187
|
+
expect(Chef::Config[:local_mode]).to be_truthy
|
188
|
+
end
|
131
189
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
190
|
+
context "argv gets tidied up" do
|
191
|
+
before do
|
192
|
+
@original_argv = ARGV.dup
|
193
|
+
ARGV.clear
|
194
|
+
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
195
|
+
end
|
136
196
|
|
137
|
-
|
197
|
+
after do
|
198
|
+
ARGV.replace(@original_argv)
|
199
|
+
end
|
138
200
|
|
139
|
-
|
201
|
+
it "deletes --ez" do
|
202
|
+
ARGV << "--ez"
|
203
|
+
app.reconfigure
|
204
|
+
expect(ARGV.include?("--ez")).to be_falsey
|
205
|
+
end
|
140
206
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
207
|
+
it "replaces -r with --recipe-url" do
|
208
|
+
ARGV.push("-r", "http://junglist.gen.nz/recipes.tgz")
|
209
|
+
app.reconfigure
|
210
|
+
expect(ARGV.include?("-r")).to be_falsey
|
211
|
+
expect(ARGV.include?("--recipe-url")).to be_truthy
|
212
|
+
end
|
145
213
|
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe "after the application has been configured" do
|
149
|
-
before do
|
150
|
-
Chef::Config[:solo] = true
|
151
214
|
|
152
|
-
|
153
|
-
|
154
|
-
allow(
|
155
|
-
# this is all stuff the reconfigure method needs
|
156
|
-
allow(app).to receive(:configure_opt_parser).and_return(true)
|
215
|
+
it "runs chef-client in local mode" do
|
216
|
+
allow(app).to receive(:setup_application).and_return(true)
|
217
|
+
allow(app).to receive(:run_application).and_return(true)
|
157
218
|
allow(app).to receive(:configure_chef).and_return(true)
|
158
219
|
allow(app).to receive(:configure_logging).and_return(true)
|
220
|
+
expect(Chef::Application::Client).to receive_message_chain(:new, :run)
|
221
|
+
app.run
|
159
222
|
end
|
160
223
|
|
161
|
-
it "should change privileges" do
|
162
|
-
expect(Chef::Daemon).to receive(:change_privilege).and_return(true)
|
163
|
-
app.setup_application
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
it_behaves_like "an application that loads a dot d" do
|
168
|
-
let(:dot_d_config_name) { :solo_d_dir }
|
169
224
|
end
|
170
225
|
end
|