chef 12.10.24-universal-mingw32 → 12.11.18-universal-mingw32
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-service-manager +0 -0
- data/bin/chef-shell +0 -0
- data/bin/chef-solo +0 -0
- data/bin/chef-windows-service +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
@@ -1,3 +1,3 @@
|
|
1
|
-
This directory contains markdown documentation that is used in other places.
|
2
|
-
For example, markdown (.mkd) documents that are generated as man pages
|
3
|
-
with ronn.
|
1
|
+
This directory contains markdown documentation that is used in other places.
|
2
|
+
For example, markdown (.mkd) documents that are generated as man pages
|
3
|
+
with ronn.
|
data/lib/chef/application.rb
CHANGED
@@ -27,6 +27,7 @@ require "chef/platform"
|
|
27
27
|
require "mixlib/cli"
|
28
28
|
require "tmpdir"
|
29
29
|
require "rbconfig"
|
30
|
+
require "chef/application/exit_code"
|
30
31
|
|
31
32
|
class Chef
|
32
33
|
class Application
|
@@ -60,11 +61,11 @@ class Chef
|
|
60
61
|
|
61
62
|
def setup_signal_handlers
|
62
63
|
trap("INT") do
|
63
|
-
Chef::Application.fatal!("SIGINT received, stopping",
|
64
|
+
Chef::Application.fatal!("SIGINT received, stopping", Chef::Exceptions::SigInt.new)
|
64
65
|
end
|
65
66
|
|
66
67
|
trap("TERM") do
|
67
|
-
Chef::Application.fatal!("SIGTERM received, stopping",
|
68
|
+
Chef::Application.fatal!("SIGTERM received, stopping", Chef::Exceptions::SigTerm.new)
|
68
69
|
end
|
69
70
|
|
70
71
|
unless Chef::Platform.windows?
|
@@ -149,7 +150,7 @@ class Chef
|
|
149
150
|
Chef::Log.level = resolve_log_level
|
150
151
|
rescue StandardError => error
|
151
152
|
Chef::Log.fatal("Failed to open or create log file at #{Chef::Config[:log_location]}: #{error.class} (#{error.message})")
|
152
|
-
Chef::Application.fatal!("Aborting due to invalid 'log_location' configuration",
|
153
|
+
Chef::Application.fatal!("Aborting due to invalid 'log_location' configuration", error)
|
153
154
|
end
|
154
155
|
|
155
156
|
# Turn `log_location :syslog` and `log_location :win_evt` into the
|
@@ -285,7 +286,7 @@ class Chef
|
|
285
286
|
@chef_client.run
|
286
287
|
rescue Exception => e
|
287
288
|
Chef::Log.error(e.to_s)
|
288
|
-
exit
|
289
|
+
exit Chef::Application.normalize_exit_code(e)
|
289
290
|
else
|
290
291
|
exit 0
|
291
292
|
end
|
@@ -314,7 +315,7 @@ class Chef
|
|
314
315
|
Chef::Log.fatal("Configuration error #{error.class}: #{error.message}")
|
315
316
|
filtered_trace = error.backtrace.grep(/#{Regexp.escape(config_file_path)}/)
|
316
317
|
filtered_trace.each { |line| Chef::Log.fatal(" " + line ) }
|
317
|
-
Chef::Application.fatal!("Aborting due to error in '#{config_file_path}'",
|
318
|
+
Chef::Application.fatal!("Aborting due to error in '#{config_file_path}'", error)
|
318
319
|
end
|
319
320
|
|
320
321
|
# This is a hook for testing
|
@@ -341,15 +342,19 @@ class Chef
|
|
341
342
|
true
|
342
343
|
end
|
343
344
|
|
345
|
+
def normalize_exit_code(exit_code)
|
346
|
+
Chef::Application::ExitCode.normalize_exit_code(exit_code)
|
347
|
+
end
|
348
|
+
|
344
349
|
# Log a fatal error message to both STDERR and the Logger, exit the application
|
345
|
-
def fatal!(msg, err =
|
350
|
+
def fatal!(msg, err = nil)
|
346
351
|
Chef::Log.fatal(msg)
|
347
|
-
Process.exit
|
352
|
+
Process.exit(normalize_exit_code(err))
|
348
353
|
end
|
349
354
|
|
350
|
-
def exit!(msg, err =
|
355
|
+
def exit!(msg, err = nil)
|
351
356
|
Chef::Log.debug(msg)
|
352
|
-
Process.exit
|
357
|
+
Process.exit(normalize_exit_code(err))
|
353
358
|
end
|
354
359
|
end
|
355
360
|
|
@@ -137,11 +137,11 @@ class Chef::Application::Apply < Chef::Application
|
|
137
137
|
|
138
138
|
def read_recipe_file(file_name)
|
139
139
|
if file_name.nil?
|
140
|
-
Chef::Application.fatal!("No recipe file was provided",
|
140
|
+
Chef::Application.fatal!("No recipe file was provided", Chef::Exceptions::RecipeNotFound.new)
|
141
141
|
else
|
142
142
|
recipe_path = File.expand_path(file_name)
|
143
143
|
unless File.exist?(recipe_path)
|
144
|
-
Chef::Application.fatal!("No file exists at #{recipe_path}",
|
144
|
+
Chef::Application.fatal!("No file exists at #{recipe_path}", Chef::Exceptions::RecipeNotFound.new)
|
145
145
|
end
|
146
146
|
recipe_fh = open(recipe_path)
|
147
147
|
recipe_text = recipe_fh.read
|
@@ -150,7 +150,7 @@ class Chef::Application::Apply < Chef::Application
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def get_recipe_and_run_context
|
153
|
-
Chef::Config[:
|
153
|
+
Chef::Config[:solo_legacy_mode] = true
|
154
154
|
@chef_client = Chef::Client.new(@json_attribs)
|
155
155
|
@chef_client.run_ohai
|
156
156
|
@chef_client.load_node
|
@@ -183,7 +183,7 @@ class Chef::Application::Apply < Chef::Application
|
|
183
183
|
else
|
184
184
|
if !ARGV[0]
|
185
185
|
puts opt_parser
|
186
|
-
Chef::Application.exit! "No recipe file provided",
|
186
|
+
Chef::Application.exit! "No recipe file provided", Chef::Exceptions::RecipeNotFound.new
|
187
187
|
end
|
188
188
|
@recipe_filename = ARGV[0]
|
189
189
|
@recipe_text, @recipe_fh = read_recipe_file @recipe_filename
|
@@ -208,7 +208,7 @@ class Chef::Application::Apply < Chef::Application
|
|
208
208
|
raise
|
209
209
|
rescue Exception => e
|
210
210
|
Chef::Application.debug_stacktrace(e)
|
211
|
-
Chef::Application.fatal!("#{e.class}: #{e.message}",
|
211
|
+
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
212
212
|
end
|
213
213
|
end
|
214
214
|
|
@@ -324,7 +324,7 @@ class Chef::Application::Client < Chef::Application
|
|
324
324
|
|
325
325
|
if Chef::Config[:recipe_url]
|
326
326
|
if !Chef::Config.local_mode
|
327
|
-
Chef::Application.fatal!("chef-client recipe-url can be used only in local-mode"
|
327
|
+
Chef::Application.fatal!("chef-client recipe-url can be used only in local-mode")
|
328
328
|
else
|
329
329
|
if Chef::Config[:delete_entire_chef_repo]
|
330
330
|
Chef::Log.debug "Cleanup path #{Chef::Config.chef_repo_path} before extract recipes into it"
|
@@ -420,7 +420,7 @@ class Chef::Application::Client < Chef::Application
|
|
420
420
|
rescue SystemExit
|
421
421
|
raise
|
422
422
|
rescue Exception => e
|
423
|
-
Chef::Application.fatal!("#{e.class}: #{e.message}",
|
423
|
+
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
424
424
|
end
|
425
425
|
else
|
426
426
|
interval_run_chef_client
|
@@ -463,7 +463,7 @@ class Chef::Application::Client < Chef::Application
|
|
463
463
|
retry
|
464
464
|
end
|
465
465
|
|
466
|
-
Chef::Application.fatal!("#{e.class}: #{e.message}",
|
466
|
+
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
467
467
|
end
|
468
468
|
|
469
469
|
def test_signal
|
@@ -0,0 +1,226 @@
|
|
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
|
+
class Chef
|
20
|
+
class Application
|
21
|
+
|
22
|
+
# These are the exit codes defined in Chef RFC 062
|
23
|
+
# https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md
|
24
|
+
class ExitCode
|
25
|
+
|
26
|
+
# -1 is defined as DEPRECATED_FAILURE in RFC 062, so it is
|
27
|
+
# not enumerated in an active constant.
|
28
|
+
#
|
29
|
+
VALID_RFC_062_EXIT_CODES = {
|
30
|
+
SUCCESS: 0,
|
31
|
+
GENERIC_FAILURE: 1,
|
32
|
+
SIGINT_RECEIVED: 2,
|
33
|
+
SIGTERM_RECEIVED: 3,
|
34
|
+
REBOOT_SCHEDULED: 35,
|
35
|
+
REBOOT_NEEDED: 37,
|
36
|
+
REBOOT_FAILED: 41,
|
37
|
+
AUDIT_MODE_FAILURE: 42,
|
38
|
+
}
|
39
|
+
|
40
|
+
DEPRECATED_RFC_062_EXIT_CODES = {
|
41
|
+
DEPRECATED_FAILURE: -1,
|
42
|
+
}
|
43
|
+
|
44
|
+
class << self
|
45
|
+
|
46
|
+
def normalize_exit_code(exit_code = nil)
|
47
|
+
if normalization_not_configured?
|
48
|
+
normalize_legacy_exit_code_with_warning(exit_code)
|
49
|
+
elsif normalization_disabled?
|
50
|
+
normalize_legacy_exit_code(exit_code)
|
51
|
+
else
|
52
|
+
normalize_exit_code_to_rfc(exit_code)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def enforce_rfc_062_exit_codes?
|
57
|
+
!normalization_disabled? && !normalization_not_configured?
|
58
|
+
end
|
59
|
+
|
60
|
+
def notify_reboot_exit_code_deprecation
|
61
|
+
return if normalization_disabled?
|
62
|
+
notify_on_deprecation(reboot_deprecation_warning)
|
63
|
+
end
|
64
|
+
|
65
|
+
def notify_deprecated_exit_code
|
66
|
+
return if normalization_disabled?
|
67
|
+
notify_on_deprecation(deprecation_warning)
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def normalization_disabled?
|
73
|
+
Chef::Config[:exit_status] == :disabled
|
74
|
+
end
|
75
|
+
|
76
|
+
def normalization_not_configured?
|
77
|
+
Chef::Config[:exit_status].nil?
|
78
|
+
end
|
79
|
+
|
80
|
+
def normalize_legacy_exit_code_with_warning(exit_code)
|
81
|
+
normalized_exit_code = normalize_legacy_exit_code(exit_code)
|
82
|
+
unless valid_exit_codes.include? normalized_exit_code
|
83
|
+
notify_on_deprecation(deprecation_warning)
|
84
|
+
end
|
85
|
+
normalized_exit_code
|
86
|
+
end
|
87
|
+
|
88
|
+
def normalize_legacy_exit_code(exit_code)
|
89
|
+
case exit_code
|
90
|
+
when Fixnum
|
91
|
+
exit_code
|
92
|
+
when Exception
|
93
|
+
lookup_exit_code_by_exception(exit_code)
|
94
|
+
else
|
95
|
+
default_exit_code
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def normalize_exit_code_to_rfc(exit_code)
|
100
|
+
normalized_exit_code = normalize_legacy_exit_code_with_warning(exit_code)
|
101
|
+
if valid_exit_codes.include? normalized_exit_code
|
102
|
+
normalized_exit_code
|
103
|
+
else
|
104
|
+
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def lookup_exit_code_by_exception(exception)
|
109
|
+
if sigint_received?(exception)
|
110
|
+
VALID_RFC_062_EXIT_CODES[:SIGINT_RECEIVED]
|
111
|
+
elsif sigterm_received?(exception)
|
112
|
+
VALID_RFC_062_EXIT_CODES[:SIGTERM_RECEIVED]
|
113
|
+
elsif normalization_disabled? || normalization_not_configured?
|
114
|
+
if legacy_exit_code?(exception)
|
115
|
+
# We have lots of "Chef::Application.fatal!('', 2)
|
116
|
+
# This maintains that behavior at initial introduction
|
117
|
+
# and when the RFC exit_status compliance is disabled.
|
118
|
+
VALID_RFC_062_EXIT_CODES[:SIGINT_RECEIVED]
|
119
|
+
else
|
120
|
+
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
121
|
+
end
|
122
|
+
elsif reboot_scheduled?(exception)
|
123
|
+
VALID_RFC_062_EXIT_CODES[:REBOOT_SCHEDULED]
|
124
|
+
elsif reboot_needed?(exception)
|
125
|
+
VALID_RFC_062_EXIT_CODES[:REBOOT_NEEDED]
|
126
|
+
elsif reboot_failed?(exception)
|
127
|
+
VALID_RFC_062_EXIT_CODES[:REBOOT_FAILED]
|
128
|
+
elsif audit_failure?(exception)
|
129
|
+
VALID_RFC_062_EXIT_CODES[:AUDIT_MODE_FAILURE]
|
130
|
+
else
|
131
|
+
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def legacy_exit_code?(exception)
|
136
|
+
resolve_exception_array(exception).any? do |e|
|
137
|
+
e.is_a? Chef::Exceptions::DeprecatedExitCode
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def reboot_scheduled?(exception)
|
142
|
+
resolve_exception_array(exception).any? do |e|
|
143
|
+
e.is_a? Chef::Exceptions::Reboot
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def reboot_needed?(exception)
|
148
|
+
resolve_exception_array(exception).any? do |e|
|
149
|
+
e.is_a? Chef::Exceptions::RebootPending
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def reboot_failed?(exception)
|
154
|
+
resolve_exception_array(exception).any? do |e|
|
155
|
+
e.is_a? Chef::Exceptions::RebootFailed
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
def audit_failure?(exception)
|
160
|
+
resolve_exception_array(exception).any? do |e|
|
161
|
+
e.is_a? Chef::Exceptions::AuditError
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def sigint_received?(exception)
|
166
|
+
resolve_exception_array(exception).any? do |e|
|
167
|
+
e.is_a? Chef::Exceptions::SigInt
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def sigterm_received?(exception)
|
172
|
+
resolve_exception_array(exception).any? do |e|
|
173
|
+
e.is_a? Chef::Exceptions::SigTerm
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def resolve_exception_array(exception)
|
178
|
+
exception_array = [exception]
|
179
|
+
if exception.respond_to?(:wrapped_errors)
|
180
|
+
exception.wrapped_errors.each do |e|
|
181
|
+
exception_array.push e
|
182
|
+
end
|
183
|
+
end
|
184
|
+
exception_array
|
185
|
+
end
|
186
|
+
|
187
|
+
def valid_exit_codes
|
188
|
+
VALID_RFC_062_EXIT_CODES.values
|
189
|
+
end
|
190
|
+
|
191
|
+
def notify_on_deprecation(message)
|
192
|
+
begin
|
193
|
+
Chef.log_deprecation(message)
|
194
|
+
rescue Chef::Exceptions::DeprecatedFeatureError
|
195
|
+
# Have to rescue this, otherwise this unhandled error preempts
|
196
|
+
# the current exit code assignment.
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def deprecation_warning
|
201
|
+
"Chef RFC 062 (https://github.com/chef/chef-rfc/master/rfc062-exit-status.md) defines the" \
|
202
|
+
" exit codes that should be used with Chef. Chef::Application::ExitCode defines valid exit codes" \
|
203
|
+
" In a future release, non-standard exit codes will be redefined as" \
|
204
|
+
" GENERIC_FAILURE unless `exit_status` is set to `:disabled` in your client.rb."
|
205
|
+
end
|
206
|
+
|
207
|
+
def reboot_deprecation_warning
|
208
|
+
"Per RFC 062 (https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md)" \
|
209
|
+
", when a reboot is requested Chef Client will exit with an exit code of 35, REBOOT_SCHEDULED." \
|
210
|
+
" To maintain the current behavior (an exit code of 0), you will need to set `exit_status` to" \
|
211
|
+
" `:disabled` in your client.rb"
|
212
|
+
end
|
213
|
+
|
214
|
+
def default_exit_code
|
215
|
+
if normalization_disabled? || normalization_not_configured?
|
216
|
+
return DEPRECATED_RFC_062_EXIT_CODES[:DEPRECATED_FAILURE]
|
217
|
+
else
|
218
|
+
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
end
|
226
|
+
end
|
@@ -18,6 +18,7 @@
|
|
18
18
|
|
19
19
|
require "chef"
|
20
20
|
require "chef/application"
|
21
|
+
require "chef/application/client"
|
21
22
|
require "chef/client"
|
22
23
|
require "chef/config"
|
23
24
|
require "chef/daemon"
|
@@ -200,10 +201,24 @@ class Chef::Application::Solo < Chef::Application
|
|
200
201
|
:description => "DANGEROUS: does what it says, only useful with --recipe-url",
|
201
202
|
:boolean => true
|
202
203
|
|
204
|
+
option :solo_legacy_mode,
|
205
|
+
:long => "--legacy-mode",
|
206
|
+
:description => "Run chef-solo in legacy mode",
|
207
|
+
:boolean => true
|
208
|
+
|
203
209
|
attr_reader :chef_client_json
|
204
210
|
|
205
|
-
|
206
|
-
|
211
|
+
# Get this party started
|
212
|
+
def run
|
213
|
+
setup_signal_handlers
|
214
|
+
reconfigure
|
215
|
+
for_ezra if Chef::Config[:ez]
|
216
|
+
if !Chef::Config[:solo_legacy_mode]
|
217
|
+
Chef::Application::Client.new.run
|
218
|
+
else
|
219
|
+
setup_application
|
220
|
+
run_application
|
221
|
+
end
|
207
222
|
end
|
208
223
|
|
209
224
|
def reconfigure
|
@@ -215,14 +230,30 @@ class Chef::Application::Solo < Chef::Application
|
|
215
230
|
|
216
231
|
Chef::Config[:solo] = true
|
217
232
|
|
233
|
+
Chef::Log.deprecation("-r MUST be changed to --recipe-url, the -r option will be changed in Chef 13.0") if ARGV.include?("-r")
|
234
|
+
|
235
|
+
if !Chef::Config[:solo_legacy_mode]
|
236
|
+
# Because we re-parse ARGV when we move to chef-client, we need to tidy up some options first.
|
237
|
+
ARGV.delete("--ez")
|
238
|
+
|
239
|
+
# -r means something entirely different in chef-client land, so let's replace it with a "safe" value
|
240
|
+
if dash_r = ARGV.index("-r")
|
241
|
+
ARGV[dash_r] = "--recipe-url"
|
242
|
+
end
|
243
|
+
|
244
|
+
Chef::Config[:local_mode] = true
|
245
|
+
else
|
246
|
+
configure_legacy_mode!
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
def configure_legacy_mode!
|
218
251
|
if Chef::Config[:daemonize]
|
219
252
|
Chef::Config[:interval] ||= 1800
|
220
253
|
end
|
221
254
|
|
222
255
|
Chef::Application.fatal!(unforked_interval_error_message) if !Chef::Config[:client_fork] && Chef::Config[:interval]
|
223
256
|
|
224
|
-
Chef::Log.deprecation("-r MUST be changed to --recipe-url, the -r option will be changed in Chef 13.0") if ARGV.include?("-r")
|
225
|
-
|
226
257
|
if Chef::Config[:recipe_url]
|
227
258
|
cookbooks_path = Array(Chef::Config[:cookbook_path]).detect { |e| Pathname.new(e).cleanpath.to_s =~ /\/cookbooks\/*$/ }
|
228
259
|
recipes_path = File.expand_path(File.join(cookbooks_path, ".."))
|
@@ -255,7 +286,6 @@ class Chef::Application::Solo < Chef::Application
|
|
255
286
|
end
|
256
287
|
|
257
288
|
def run_application
|
258
|
-
for_ezra if Chef::Config[:ez]
|
259
289
|
if !Chef::Config[:client_fork] || Chef::Config[:once]
|
260
290
|
# Run immediately without interval sleep or splay
|
261
291
|
begin
|
@@ -263,7 +293,7 @@ class Chef::Application::Solo < Chef::Application
|
|
263
293
|
rescue SystemExit
|
264
294
|
raise
|
265
295
|
rescue Exception => e
|
266
|
-
Chef::Application.fatal!("#{e.class}: #{e.message}",
|
296
|
+
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
267
297
|
end
|
268
298
|
else
|
269
299
|
interval_run_chef_client
|
@@ -310,7 +340,7 @@ EOH
|
|
310
340
|
Chef::Log.debug("#{e.class}: #{e}\n#{e.backtrace.join("\n")}")
|
311
341
|
retry
|
312
342
|
else
|
313
|
-
Chef::Application.fatal!("#{e.class}: #{e.message}",
|
343
|
+
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
314
344
|
end
|
315
345
|
end
|
316
346
|
end
|