chef 12.8.1-universal-mingw32 → 12.9.38-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +208 -208
- data/Gemfile +54 -49
- data/LICENSE +201 -201
- data/README.md +139 -139
- data/Rakefile +87 -86
- data/VERSION +1 -1
- data/acceptance/.gitignore +2 -2
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -33
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +292 -290
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +59 -59
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +13 -14
- data/acceptance/README.md +132 -132
- data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +3 -3
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/basics/.kitchen.yml +4 -4
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +19 -19
- data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +6 -6
- data/acceptance/fips/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/fips/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/fips/.kitchen.yml +4 -4
- data/acceptance/fips/test/integration/fips/serverspec/Gemfile +3 -3
- data/acceptance/fips/test/integration/fips/serverspec/fips_spec.rb +39 -39
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +61 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +43 -43
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +45 -23
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +3 -3
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/top-cookbooks/.gitignore +1 -1
- data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +6 -0
- data/acceptance/top-cookbooks/.kitchen.docker.yml +12 -12
- data/acceptance/top-cookbooks/.kitchen.git.yml +11 -11
- data/acceptance/top-cookbooks/.kitchen.iis.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -7
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -7
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -7
- data/acceptance/top-cookbooks/.kitchen.powershell.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.sql_server.yml +5 -0
- data/acceptance/top-cookbooks/.kitchen.winbox.yml +8 -0
- data/acceptance/top-cookbooks/.kitchen.windows.yml +38 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +5 -5
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/windows-service/.kitchen.yml +7 -7
- data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +58 -58
- data/bin/chef-apply +25 -25
- data/bin/chef-client +26 -26
- data/bin/chef-service-manager +38 -38
- data/bin/chef-shell +34 -34
- data/bin/chef-solo +25 -25
- data/bin/chef-windows-service +35 -35
- data/bin/knife +25 -25
- data/chef-windows.gemspec +24 -24
- data/chef.gemspec +64 -63
- 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/basic.css +536 -536
- data/distro/common/html/_static/doctools.js +238 -238
- data/distro/common/html/_static/guide.css +504 -504
- data/distro/common/html/_static/pygments.css +61 -61
- data/distro/common/html/_static/searchtools.js +621 -621
- data/distro/common/html/_static/underscore.js +31 -31
- data/distro/common/html/_static/websupport.js +808 -808
- 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_cookbook_site.html +375 -375
- 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-site.1 +552 -552
- 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/distro/common/markdown/man1/chef-shell.mkd +195 -195
- data/distro/common/markdown/man1/knife-bootstrap.mkd +141 -141
- data/distro/common/markdown/man1/knife-client.mkd +103 -103
- data/distro/common/markdown/man1/knife-configure.mkd +70 -70
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -123
- data/distro/common/markdown/man1/knife-cookbook.mkd +263 -263
- data/distro/common/markdown/man1/knife-data-bag.mkd +121 -121
- data/distro/common/markdown/man1/knife-environment.mkd +151 -151
- data/distro/common/markdown/man1/knife-exec.mkd +42 -42
- data/distro/common/markdown/man1/knife-index.mkd +30 -30
- data/distro/common/markdown/man1/knife-node.mkd +130 -130
- data/distro/common/markdown/man1/knife-role.mkd +85 -85
- data/distro/common/markdown/man1/knife-search.mkd +180 -180
- data/distro/common/markdown/man1/knife-ssh.mkd +69 -69
- data/distro/common/markdown/man1/knife-status.mkd +36 -36
- data/distro/common/markdown/man1/knife-tag.mkd +39 -39
- data/distro/common/markdown/man1/knife.mkd +213 -213
- data/distro/common/markdown/man8/chef-client.mkd +75 -75
- data/distro/common/markdown/man8/chef-expander.mkd +81 -81
- data/distro/common/markdown/man8/chef-expanderctl.mkd +57 -57
- data/distro/common/markdown/man8/chef-server-webui.mkd +121 -121
- data/distro/common/markdown/man8/chef-server.mkd +120 -120
- data/distro/common/markdown/man8/chef-solo.mkd +107 -107
- data/distro/common/markdown/man8/chef-solr.mkd +89 -89
- data/distro/powershell/chef/chef.psm1 +327 -327
- data/ext/win32-eventlog/Rakefile +53 -53
- data/ext/win32-eventlog/chef-log.man +56 -56
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +5 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +5 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +5 -5
- data/lib/chef.rb +35 -35
- data/lib/chef/api_client.rb +233 -233
- data/lib/chef/api_client/registration.rb +192 -192
- data/lib/chef/api_client_v1.rb +325 -325
- data/lib/chef/application.rb +357 -342
- data/lib/chef/application/apply.rb +221 -221
- data/lib/chef/application/client.rb +520 -513
- data/lib/chef/application/knife.rb +208 -208
- data/lib/chef/application/solo.rb +334 -334
- data/lib/chef/application/windows_service.rb +338 -338
- data/lib/chef/application/windows_service_manager.rb +202 -202
- data/lib/chef/applications.rb +4 -4
- data/lib/chef/audit/audit_event_proxy.rb +93 -93
- data/lib/chef/audit/audit_reporter.rb +172 -172
- data/lib/chef/audit/control_group_data.rb +139 -139
- data/lib/chef/audit/logger.rb +36 -36
- data/lib/chef/audit/rspec_formatter.rb +37 -37
- data/lib/chef/audit/runner.rb +196 -196
- data/lib/chef/chef_class.rb +228 -228
- data/lib/chef/chef_fs.rb +59 -59
- data/lib/chef/chef_fs/chef_fs_data_store.rb +871 -871
- data/lib/chef/chef_fs/command_line.rb +285 -285
- data/lib/chef/chef_fs/config.rb +284 -283
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
- data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +62 -62
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +204 -204
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
- data/lib/chef/chef_fs/file_pattern.rb +301 -301
- data/lib/chef/chef_fs/file_system.rb +429 -429
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +183 -183
- data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +65 -65
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +60 -60
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +75 -75
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +196 -196
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +102 -102
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +222 -222
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +84 -84
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +61 -61
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +102 -102
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +71 -71
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +69 -69
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +57 -57
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +53 -53
- data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +31 -31
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +61 -61
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +60 -60
- data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +41 -41
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +160 -160
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +137 -137
- data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +43 -43
- data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +34 -34
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +178 -178
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +187 -187
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +45 -45
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +107 -107
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +32 -32
- data/lib/chef/chef_fs/file_system/file_system_error.rb +44 -44
- data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +53 -53
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +20 -20
- data/lib/chef/chef_fs/file_system/memory/memory_root.rb +23 -23
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +64 -64
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +36 -36
- data/lib/chef/chef_fs/file_system/not_found_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +42 -42
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +46 -46
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +41 -41
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +146 -146
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +176 -176
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +83 -83
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +214 -214
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +52 -52
- data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +114 -114
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/directory.rb +139 -139
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +117 -117
- data/lib/chef/chef_fs/file_system/repository/file_system_root_dir.rb +33 -33
- data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
- data/lib/chef/chef_fs/knife.rb +161 -161
- data/lib/chef/chef_fs/parallelizer.rb +105 -105
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +281 -281
- data/lib/chef/chef_fs/path_utils.rb +127 -127
- data/lib/chef/client.rb +966 -967
- data/lib/chef/config.rb +85 -85
- data/lib/chef/config_fetcher.rb +72 -72
- data/lib/chef/constants.rb +28 -28
- data/lib/chef/cookbook/chefignore.rb +74 -74
- data/lib/chef/cookbook/cookbook_collection.rb +63 -63
- data/lib/chef/cookbook/cookbook_version_loader.rb +352 -352
- data/lib/chef/cookbook/file_system_file_vendor.rb +59 -59
- data/lib/chef/cookbook/file_vendor.rb +71 -71
- data/lib/chef/cookbook/gem_installer.rb +83 -118
- data/lib/chef/cookbook/metadata.rb +904 -904
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
- data/lib/chef/cookbook/synchronizer.rb +298 -298
- data/lib/chef/cookbook/syntax_check.rb +260 -260
- data/lib/chef/cookbook_loader.rb +200 -200
- data/lib/chef/cookbook_manifest.rb +290 -290
- data/lib/chef/cookbook_site_streaming_uploader.rb +243 -244
- data/lib/chef/cookbook_uploader.rb +157 -157
- data/lib/chef/cookbook_version.rb +637 -631
- data/lib/chef/daemon.rb +131 -131
- data/lib/chef/data_bag.rb +176 -176
- data/lib/chef/data_bag_item.rb +218 -218
- data/lib/chef/delayed_evaluator.rb +21 -21
- data/lib/chef/deprecation/mixin/template.rb +48 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +54 -54
- data/lib/chef/deprecation/provider/file.rb +198 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +52 -52
- data/lib/chef/deprecation/provider/remote_file.rb +85 -85
- data/lib/chef/deprecation/provider/template.rb +63 -63
- data/lib/chef/deprecation/warnings.rb +37 -38
- data/lib/chef/digester.rb +74 -74
- data/lib/chef/dsl.rb +6 -6
- data/lib/chef/dsl/audit.rb +51 -51
- data/lib/chef/dsl/chef_provisioning.rb +57 -57
- data/lib/chef/dsl/cheffish.rb +64 -64
- data/lib/chef/dsl/core.rb +42 -0
- data/lib/chef/dsl/data_query.rb +89 -89
- data/lib/chef/dsl/declare_resource.rb +106 -108
- data/lib/chef/dsl/definitions.rb +43 -43
- data/lib/chef/dsl/include_attribute.rb +61 -61
- data/lib/chef/dsl/include_recipe.rb +44 -44
- data/lib/chef/dsl/method_missing.rb +75 -0
- data/lib/chef/dsl/platform_introspection.rb +254 -254
- data/lib/chef/dsl/powershell.rb +29 -29
- data/lib/chef/dsl/reboot_pending.rb +64 -64
- data/lib/chef/dsl/recipe.rb +89 -134
- data/lib/chef/dsl/registry_helper.rb +63 -63
- data/lib/chef/dsl/resources.rb +58 -58
- data/lib/chef/encrypted_data_bag_item.rb +155 -155
- data/lib/chef/encrypted_data_bag_item/assertions.rb +54 -54
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -56
- data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +227 -227
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -37
- data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +225 -225
- data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +22 -22
- data/lib/chef/environment.rb +326 -326
- data/lib/chef/event_dispatch/base.rb +426 -420
- data/lib/chef/event_dispatch/dispatcher.rb +62 -62
- data/lib/chef/event_dispatch/dsl.rb +65 -65
- data/lib/chef/event_dispatch/events_output_stream.rb +37 -37
- data/lib/chef/event_loggers/base.rb +62 -62
- data/lib/chef/event_loggers/windows_eventlog.rb +101 -101
- data/lib/chef/exceptions.rb +504 -504
- data/lib/chef/file_access_control.rb +75 -75
- data/lib/chef/file_access_control/unix.rb +290 -290
- data/lib/chef/file_access_control/windows.rb +335 -335
- data/lib/chef/file_cache.rb +221 -221
- data/lib/chef/file_content_management/content_base.rb +56 -56
- data/lib/chef/file_content_management/deploy.rb +37 -37
- data/lib/chef/file_content_management/deploy/cp.rb +48 -48
- data/lib/chef/file_content_management/deploy/mv_unix.rb +76 -76
- data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
- data/lib/chef/file_content_management/tempfile.rb +97 -97
- data/lib/chef/formatters/base.rb +237 -237
- data/lib/chef/formatters/doc.rb +438 -422
- data/lib/chef/formatters/{error_descriptor.rb → error_description.rb} +69 -67
- data/lib/chef/formatters/error_inspectors.rb +19 -19
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +184 -184
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +154 -154
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +168 -168
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +82 -82
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +128 -128
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +147 -147
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +124 -124
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +121 -121
- data/lib/chef/formatters/error_mapper.rb +85 -85
- data/lib/chef/formatters/indentable_output_stream.rb +170 -170
- data/lib/chef/formatters/minimal.rb +233 -233
- data/lib/chef/guard_interpreter.rb +32 -32
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +43 -43
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
- data/lib/chef/handler.rb +235 -235
- data/lib/chef/handler/error_report.rb +33 -33
- data/lib/chef/handler/json_file.rb +63 -63
- data/lib/chef/http.rb +460 -430
- data/lib/chef/http/auth_credentials.rb +57 -57
- data/lib/chef/http/authenticator.rb +106 -106
- data/lib/chef/http/basic_client.rb +149 -169
- data/lib/chef/http/cookie_jar.rb +31 -31
- data/lib/chef/http/cookie_manager.rb +59 -59
- data/lib/chef/http/decompressor.rb +142 -142
- data/lib/chef/http/http_request.rb +186 -186
- data/lib/chef/http/json_input.rb +73 -73
- data/lib/chef/http/json_output.rb +78 -78
- data/lib/chef/http/json_to_model_output.rb +34 -34
- data/lib/chef/http/remote_request_id.rb +46 -46
- data/lib/chef/http/simple.rb +40 -40
- data/lib/chef/http/simple_json.rb +43 -43
- data/lib/chef/http/socketless_chef_zero_client.rb +208 -207
- data/lib/chef/http/ssl_policies.rb +130 -130
- data/lib/chef/http/validate_content_length.rb +114 -115
- data/lib/chef/json_compat.rb +164 -164
- data/lib/chef/key.rb +273 -273
- data/lib/chef/knife.rb +587 -587
- data/lib/chef/knife/bootstrap.rb +480 -480
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +159 -159
- data/lib/chef/knife/bootstrap/client_builder.rb +208 -208
- data/lib/chef/knife/bootstrap/templates/README.md +11 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +236 -236
- data/lib/chef/knife/client_bulk_delete.rb +104 -104
- data/lib/chef/knife/client_create.rb +111 -111
- data/lib/chef/knife/client_delete.rb +60 -60
- data/lib/chef/knife/client_edit.rb +53 -53
- data/lib/chef/knife/client_key_create.rb +67 -67
- data/lib/chef/knife/client_key_delete.rb +76 -76
- data/lib/chef/knife/client_key_edit.rb +79 -79
- data/lib/chef/knife/client_key_list.rb +69 -69
- data/lib/chef/knife/client_key_show.rb +76 -76
- data/lib/chef/knife/client_list.rb +42 -42
- data/lib/chef/knife/client_reregister.rb +59 -59
- data/lib/chef/knife/client_show.rb +49 -49
- data/lib/chef/knife/configure.rb +171 -171
- data/lib/chef/knife/configure_client.rb +50 -50
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_create.rb +458 -448
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +143 -143
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +107 -108
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -44
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_site_download.rb +109 -109
- data/lib/chef/knife/cookbook_site_install.rb +192 -192
- data/lib/chef/knife/cookbook_site_list.rb +58 -58
- data/lib/chef/knife/cookbook_site_search.rb +46 -46
- data/lib/chef/knife/cookbook_site_share.rb +169 -169
- data/lib/chef/knife/cookbook_site_show.rb +55 -55
- data/lib/chef/knife/cookbook_site_unshare.rb +56 -56
- data/lib/chef/knife/cookbook_site_vendor.rb +46 -46
- data/lib/chef/knife/cookbook_test.rb +95 -95
- data/lib/chef/knife/cookbook_upload.rb +308 -308
- data/lib/chef/knife/core/bootstrap_context.rb +233 -233
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/custom_manifest_loader.rb +69 -69
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
- data/lib/chef/knife/core/generic_presenter.rb +222 -222
- data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
- data/lib/chef/knife/core/node_editor.rb +130 -130
- data/lib/chef/knife/core/node_presenter.rb +159 -159
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +157 -157
- data/lib/chef/knife/core/subcommand_loader.rb +212 -212
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +284 -284
- data/lib/chef/knife/data_bag_create.rb +78 -78
- data/lib/chef/knife/data_bag_delete.rb +49 -49
- data/lib/chef/knife/data_bag_edit.rb +74 -74
- data/lib/chef/knife/data_bag_from_file.rb +114 -114
- data/lib/chef/knife/data_bag_list.rb +42 -42
- data/lib/chef/knife/data_bag_secret_options.rb +142 -142
- data/lib/chef/knife/data_bag_show.rb +69 -69
- data/lib/chef/knife/delete.rb +107 -107
- data/lib/chef/knife/deps.rb +140 -140
- data/lib/chef/knife/diff.rb +68 -68
- data/lib/chef/knife/download.rb +68 -68
- data/lib/chef/knife/edit.rb +72 -72
- data/lib/chef/knife/environment_compare.rb +127 -127
- data/lib/chef/knife/environment_create.rb +53 -53
- data/lib/chef/knife/environment_delete.rb +45 -45
- data/lib/chef/knife/environment_edit.rb +45 -45
- data/lib/chef/knife/environment_from_file.rb +82 -82
- data/lib/chef/knife/environment_list.rb +42 -42
- data/lib/chef/knife/environment_show.rb +48 -48
- data/lib/chef/knife/exec.rb +87 -87
- data/lib/chef/knife/help.rb +101 -101
- data/lib/chef/knife/help_topics.rb +4 -4
- data/lib/chef/knife/index_rebuild.rb +133 -133
- data/lib/chef/knife/key_create.rb +112 -112
- data/lib/chef/knife/key_create_base.rb +50 -50
- data/lib/chef/knife/key_delete.rb +55 -55
- data/lib/chef/knife/key_edit.rb +118 -118
- data/lib/chef/knife/key_edit_base.rb +55 -55
- data/lib/chef/knife/key_list.rb +88 -88
- data/lib/chef/knife/key_list_base.rb +45 -45
- data/lib/chef/knife/key_show.rb +53 -53
- data/lib/chef/knife/list.rb +157 -157
- data/lib/chef/knife/node_bulk_delete.rb +74 -74
- data/lib/chef/knife/node_create.rb +47 -47
- data/lib/chef/knife/node_delete.rb +46 -46
- data/lib/chef/knife/node_edit.rb +70 -70
- data/lib/chef/knife/node_environment_set.rb +54 -54
- data/lib/chef/knife/node_from_file.rb +51 -51
- data/lib/chef/knife/node_list.rb +44 -44
- data/lib/chef/knife/node_run_list_add.rb +104 -104
- data/lib/chef/knife/node_run_list_remove.rb +67 -67
- data/lib/chef/knife/node_run_list_set.rb +66 -66
- data/lib/chef/knife/node_show.rb +66 -66
- data/lib/chef/knife/null.rb +10 -10
- data/lib/chef/knife/osc_user_create.rb +97 -97
- data/lib/chef/knife/osc_user_delete.rb +51 -51
- data/lib/chef/knife/osc_user_edit.rb +58 -58
- data/lib/chef/knife/osc_user_list.rb +47 -47
- data/lib/chef/knife/osc_user_reregister.rb +64 -64
- data/lib/chef/knife/osc_user_show.rb +54 -54
- data/lib/chef/knife/raw.rb +103 -103
- data/lib/chef/knife/recipe_list.rb +32 -32
- data/lib/chef/knife/rehash.rb +65 -65
- data/lib/chef/knife/role_bulk_delete.rb +65 -65
- data/lib/chef/knife/role_create.rb +53 -53
- data/lib/chef/knife/role_delete.rb +46 -46
- data/lib/chef/knife/role_edit.rb +45 -45
- data/lib/chef/knife/role_env_run_list_add.rb +86 -86
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +59 -59
- data/lib/chef/knife/role_env_run_list_set.rb +70 -70
- data/lib/chef/knife/role_from_file.rb +51 -51
- data/lib/chef/knife/role_list.rb +42 -42
- data/lib/chef/knife/role_run_list_add.rb +86 -86
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_run_list_replace.rb +59 -59
- data/lib/chef/knife/role_run_list_set.rb +70 -70
- data/lib/chef/knife/role_show.rb +49 -49
- data/lib/chef/knife/search.rb +201 -201
- data/lib/chef/knife/serve.rb +48 -48
- data/lib/chef/knife/show.rb +56 -56
- data/lib/chef/knife/ssh.rb +582 -572
- data/lib/chef/knife/ssl_check.rb +282 -281
- data/lib/chef/knife/ssl_fetch.rb +157 -157
- data/lib/chef/knife/status.rb +110 -110
- data/lib/chef/knife/tag_create.rb +52 -52
- data/lib/chef/knife/tag_delete.rb +60 -60
- data/lib/chef/knife/tag_list.rb +47 -47
- data/lib/chef/knife/upload.rb +70 -70
- data/lib/chef/knife/user_create.rb +150 -150
- data/lib/chef/knife/user_delete.rb +95 -95
- data/lib/chef/knife/user_edit.rb +81 -81
- data/lib/chef/knife/user_key_create.rb +69 -69
- data/lib/chef/knife/user_key_delete.rb +76 -76
- data/lib/chef/knife/user_key_edit.rb +79 -79
- data/lib/chef/knife/user_key_list.rb +69 -69
- data/lib/chef/knife/user_key_show.rb +76 -76
- data/lib/chef/knife/user_list.rb +45 -45
- data/lib/chef/knife/user_reregister.rb +89 -89
- data/lib/chef/knife/user_show.rb +78 -78
- data/lib/chef/knife/xargs.rb +266 -266
- data/lib/chef/local_mode.rb +128 -128
- data/lib/chef/log.rb +68 -68
- data/lib/chef/log/syslog.rb +45 -45
- data/lib/chef/log/winevt.rb +99 -99
- data/lib/chef/mash.rb +226 -226
- data/lib/chef/mixin/api_version_request_handling.rb +66 -66
- data/lib/chef/mixin/checksum.rb +32 -32
- data/lib/chef/mixin/command.rb +193 -193
- data/lib/chef/mixin/command/unix.rb +220 -220
- data/lib/chef/mixin/command/windows.rb +71 -71
- data/lib/chef/mixin/convert_to_class_name.rb +126 -126
- data/lib/chef/mixin/create_path.rb +73 -73
- data/lib/chef/mixin/deep_merge.rb +140 -140
- data/lib/chef/mixin/deprecation.rb +123 -123
- data/lib/chef/mixin/descendants_tracker.rb +81 -81
- data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -39
- data/lib/chef/mixin/file_class.rb +35 -35
- data/lib/chef/mixin/from_file.rb +50 -50
- data/lib/chef/mixin/get_source_from_package.rb +47 -47
- data/lib/chef/mixin/homebrew_user.rb +68 -68
- data/lib/chef/mixin/language.rb +48 -48
- data/lib/chef/mixin/language_include_attribute.rb +34 -34
- data/lib/chef/mixin/language_include_recipe.rb +31 -31
- data/lib/chef/mixin/lazy_module_include.rb +77 -0
- data/lib/chef/mixin/params_validate.rb +489 -489
- data/lib/chef/mixin/path_sanity.rb +68 -68
- data/lib/chef/mixin/powershell_out.rb +98 -98
- data/lib/chef/mixin/powershell_type_coercions.rb +84 -84
- data/lib/chef/mixin/properties.rb +303 -303
- data/lib/chef/mixin/provides.rb +28 -28
- data/lib/chef/mixin/proxified_socket.rb +42 -38
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +35 -35
- data/lib/chef/mixin/securable.rb +196 -196
- data/lib/chef/mixin/shell_out.rb +117 -117
- data/lib/chef/mixin/subclass_directive.rb +37 -37
- data/lib/chef/mixin/template.rb +262 -262
- data/lib/chef/mixin/unformatter.rb +32 -32
- data/lib/chef/mixin/uris.rb +43 -43
- data/lib/chef/mixin/which.rb +37 -37
- data/lib/chef/mixin/why_run.rb +331 -331
- data/lib/chef/mixin/wide_string.rb +72 -72
- data/lib/chef/mixin/windows_architecture_helper.rb +114 -114
- data/lib/chef/mixin/windows_env_helper.rb +67 -67
- data/lib/chef/mixin/xml_escape.rb +140 -140
- data/lib/chef/mixins.rb +13 -13
- data/lib/chef/monkey_patches/net-ssh-multi.rb +141 -140
- data/lib/chef/monkey_patches/net_http.rb +60 -60
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
- data/lib/chef/monkey_patches/win32/registry.rb +75 -72
- data/lib/chef/monologger.rb +88 -88
- data/lib/chef/nil_argument.rb +3 -3
- data/lib/chef/node.rb +700 -700
- data/lib/chef/node/attribute.rb +586 -586
- data/lib/chef/node/attribute_collections.rb +323 -323
- data/lib/chef/node/immutable_collections.rb +219 -219
- data/lib/chef/node_map.rb +222 -222
- data/lib/chef/null_logger.rb +72 -72
- data/lib/chef/org.rb +149 -149
- data/lib/chef/platform.rb +30 -30
- data/lib/chef/platform/handler_map.rb +40 -40
- data/lib/chef/platform/priority_map.rb +41 -41
- data/lib/chef/platform/provider_handler_map.rb +29 -29
- data/lib/chef/platform/provider_mapping.rb +214 -214
- data/lib/chef/platform/provider_priority_map.rb +11 -11
- data/lib/chef/platform/query_helpers.rb +112 -112
- data/lib/chef/platform/rebooter.rb +54 -54
- data/lib/chef/platform/resource_handler_map.rb +29 -29
- data/lib/chef/platform/resource_priority_map.rb +11 -11
- data/lib/chef/platform/service_helpers.rb +122 -122
- data/lib/chef/policy_builder.rb +42 -42
- data/lib/chef/policy_builder/dynamic.rb +185 -185
- data/lib/chef/policy_builder/expand_node_object.rb +278 -278
- data/lib/chef/policy_builder/policyfile.rb +523 -527
- data/lib/chef/property.rb +674 -673
- data/lib/chef/provider.rb +458 -461
- data/lib/chef/provider/apt_repository.rb +255 -0
- data/lib/chef/provider/apt_update.rb +80 -79
- data/lib/chef/provider/batch.rb +45 -45
- data/lib/chef/provider/breakpoint.rb +38 -38
- data/lib/chef/provider/cookbook_file.rb +53 -53
- data/lib/chef/provider/cookbook_file/content.rb +49 -49
- data/lib/chef/provider/cron.rb +263 -263
- data/lib/chef/provider/cron/aix.rb +50 -50
- data/lib/chef/provider/cron/solaris.rb +22 -22
- data/lib/chef/provider/cron/unix.rb +83 -83
- data/lib/chef/provider/deploy.rb +476 -476
- data/lib/chef/provider/deploy/revision.rb +109 -109
- data/lib/chef/provider/deploy/timestamped.rb +34 -34
- data/lib/chef/provider/directory.rb +152 -152
- data/lib/chef/provider/dsc_resource.rb +197 -197
- data/lib/chef/provider/dsc_script.rb +185 -185
- data/lib/chef/provider/env.rb +169 -169
- data/lib/chef/provider/env/windows.rb +72 -72
- data/lib/chef/provider/erl_call.rb +108 -108
- data/lib/chef/provider/execute.rb +125 -125
- data/lib/chef/provider/file.rb +495 -495
- data/lib/chef/provider/file/content.rb +39 -39
- data/lib/chef/provider/git.rb +332 -332
- data/lib/chef/provider/group.rb +183 -183
- data/lib/chef/provider/group/aix.rb +86 -86
- data/lib/chef/provider/group/dscl.rb +170 -170
- data/lib/chef/provider/group/gpasswd.rb +58 -58
- data/lib/chef/provider/group/groupadd.rb +137 -137
- data/lib/chef/provider/group/groupmod.rb +128 -128
- data/lib/chef/provider/group/pw.rb +140 -140
- data/lib/chef/provider/group/suse.rb +64 -62
- data/lib/chef/provider/group/usermod.rb +91 -91
- data/lib/chef/provider/group/windows.rb +98 -98
- data/lib/chef/provider/http_request.rb +122 -122
- data/lib/chef/provider/ifconfig.rb +226 -226
- data/lib/chef/provider/ifconfig/aix.rb +99 -99
- data/lib/chef/provider/ifconfig/debian.rb +84 -84
- data/lib/chef/provider/ifconfig/redhat.rb +48 -48
- data/lib/chef/provider/launchd.rb +208 -208
- data/lib/chef/provider/link.rb +159 -159
- data/lib/chef/provider/log.rb +57 -57
- data/lib/chef/provider/lwrp_base.rb +99 -99
- data/lib/chef/provider/mdadm.rb +92 -92
- data/lib/chef/provider/mount.rb +169 -173
- data/lib/chef/provider/mount/aix.rb +180 -180
- data/lib/chef/provider/mount/mount.rb +270 -270
- data/lib/chef/provider/mount/solaris.rb +271 -271
- data/lib/chef/provider/mount/windows.rb +92 -86
- data/lib/chef/provider/noop.rb +37 -0
- data/lib/chef/provider/ohai.rb +49 -49
- data/lib/chef/provider/osx_profile.rb +256 -256
- data/lib/chef/provider/package.rb +565 -565
- data/lib/chef/provider/package/aix.rb +136 -136
- data/lib/chef/provider/package/apt.rb +185 -185
- data/lib/chef/provider/package/chocolatey.rb +275 -275
- data/lib/chef/provider/package/dpkg.rb +226 -226
- data/lib/chef/provider/package/easy_install.rb +133 -133
- data/lib/chef/provider/package/freebsd/base.rb +89 -89
- data/lib/chef/provider/package/freebsd/pkg.rb +114 -114
- data/lib/chef/provider/package/freebsd/pkgng.rb +78 -78
- data/lib/chef/provider/package/freebsd/port.rb +60 -60
- data/lib/chef/provider/package/homebrew.rb +137 -137
- data/lib/chef/provider/package/ips.rb +91 -91
- data/lib/chef/provider/package/macports.rb +101 -101
- data/lib/chef/provider/package/openbsd.rb +136 -136
- data/lib/chef/provider/package/pacman.rb +104 -104
- data/lib/chef/provider/package/paludis.rb +86 -86
- data/lib/chef/provider/package/portage.rb +140 -140
- data/lib/chef/provider/package/rpm.rb +123 -123
- data/lib/chef/provider/package/rubygems.rb +586 -586
- data/lib/chef/provider/package/smartos.rb +92 -92
- data/lib/chef/provider/package/solaris.rb +138 -138
- data/lib/chef/provider/package/windows.rb +269 -269
- data/lib/chef/provider/package/windows/exe.rb +117 -117
- data/lib/chef/provider/package/windows/msi.rb +93 -93
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +89 -89
- data/lib/chef/provider/package/yum-dump.py +307 -307
- data/lib/chef/provider/package/yum.rb +1421 -1421
- data/lib/chef/provider/package/zypper.rb +143 -143
- data/lib/chef/provider/powershell_script.rb +215 -215
- data/lib/chef/provider/reboot.rb +70 -70
- data/lib/chef/provider/registry_key.rb +155 -155
- data/lib/chef/provider/remote_directory.rb +281 -281
- data/lib/chef/provider/remote_file.rb +53 -53
- data/lib/chef/provider/remote_file/cache_control_data.rb +195 -195
- data/lib/chef/provider/remote_file/content.rb +81 -81
- data/lib/chef/provider/remote_file/fetcher.rb +57 -55
- data/lib/chef/provider/remote_file/ftp.rb +172 -183
- data/lib/chef/provider/remote_file/http.rb +135 -117
- data/lib/chef/provider/remote_file/local_file.rb +60 -60
- data/lib/chef/provider/remote_file/network_file.rb +48 -48
- data/lib/chef/provider/remote_file/sftp.rb +105 -0
- data/lib/chef/provider/resource_update.rb +52 -52
- data/lib/chef/provider/route.rb +229 -229
- data/lib/chef/provider/ruby_block.rb +44 -44
- data/lib/chef/provider/script.rb +85 -85
- data/lib/chef/provider/service.rb +259 -250
- data/lib/chef/provider/service/aix.rb +129 -129
- data/lib/chef/provider/service/aixinit.rb +117 -117
- data/lib/chef/provider/service/arch.rb +118 -118
- data/lib/chef/provider/service/debian.rb +182 -182
- data/lib/chef/provider/service/freebsd.rb +195 -195
- data/lib/chef/provider/service/gentoo.rb +71 -71
- data/lib/chef/provider/service/init.rb +94 -94
- data/lib/chef/provider/service/insserv.rb +59 -59
- data/lib/chef/provider/service/invokercd.rb +41 -41
- data/lib/chef/provider/service/macosx.rb +250 -250
- data/lib/chef/provider/service/openbsd.rb +217 -217
- data/lib/chef/provider/service/redhat.rb +126 -120
- data/lib/chef/provider/service/simple.rb +175 -175
- data/lib/chef/provider/service/solaris.rb +122 -117
- data/lib/chef/provider/service/systemd.rb +188 -155
- data/lib/chef/provider/service/upstart.rb +242 -242
- data/lib/chef/provider/service/windows.rb +313 -313
- data/lib/chef/provider/subversion.rb +233 -221
- data/lib/chef/provider/template.rb +65 -65
- data/lib/chef/provider/template/content.rb +70 -70
- data/lib/chef/provider/template_finder.rb +62 -62
- data/lib/chef/provider/user.rb +211 -211
- data/lib/chef/provider/user/aix.rb +97 -97
- data/lib/chef/provider/user/dscl.rb +710 -710
- data/lib/chef/provider/user/pw.rb +114 -114
- data/lib/chef/provider/user/solaris.rb +121 -121
- data/lib/chef/provider/user/useradd.rb +163 -163
- data/lib/chef/provider/user/windows.rb +128 -128
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
- data/lib/chef/provider/windows_script.rb +72 -72
- data/lib/chef/provider_resolver.rb +170 -170
- data/lib/chef/providers.rb +145 -142
- data/lib/chef/recipe.rb +118 -119
- data/lib/chef/request_id.rb +37 -37
- data/lib/chef/reserved_names.rb +9 -9
- data/lib/chef/resource.rb +1581 -1581
- data/lib/chef/resource/action_class.rb +90 -87
- data/lib/chef/resource/apt_package.rb +32 -32
- data/lib/chef/resource/apt_repository.rb +47 -0
- data/lib/chef/resource/apt_update.rb +33 -33
- data/lib/chef/resource/bash.rb +33 -33
- data/lib/chef/resource/batch.rb +33 -33
- data/lib/chef/resource/bff_package.rb +27 -27
- data/lib/chef/resource/breakpoint.rb +32 -32
- data/lib/chef/resource/chef_gem.rb +51 -51
- data/lib/chef/resource/chocolatey_package.rb +39 -39
- data/lib/chef/resource/conditional.rb +127 -127
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
- data/lib/chef/resource/cookbook_file.rb +49 -49
- data/lib/chef/resource/cron.rb +216 -216
- data/lib/chef/resource/csh.rb +33 -33
- data/lib/chef/resource/deploy.rb +443 -443
- data/lib/chef/resource/deploy_revision.rb +31 -31
- data/lib/chef/resource/directory.rb +62 -62
- data/lib/chef/resource/dpkg_package.rb +30 -30
- data/lib/chef/resource/dsc_resource.rb +121 -121
- data/lib/chef/resource/dsc_script.rb +140 -140
- data/lib/chef/resource/easy_install_package.rb +32 -32
- data/lib/chef/resource/env.rb +65 -65
- data/lib/chef/resource/erl_call.rb +85 -85
- data/lib/chef/resource/execute.rb +172 -172
- data/lib/chef/resource/file.rb +83 -83
- data/lib/chef/resource/file/verification.rb +128 -128
- data/lib/chef/resource/freebsd_package.rb +62 -62
- data/lib/chef/resource/gem_package.rb +41 -41
- data/lib/chef/resource/git.rb +44 -44
- data/lib/chef/resource/group.rb +102 -102
- data/lib/chef/resource/homebrew_package.rb +34 -34
- data/lib/chef/resource/http_request.rb +66 -66
- data/lib/chef/resource/ifconfig.rb +147 -147
- data/lib/chef/resource/ips_package.rb +34 -34
- data/lib/chef/resource/ksh.rb +32 -32
- data/lib/chef/resource/launchd.rb +104 -104
- data/lib/chef/resource/link.rb +107 -107
- data/lib/chef/resource/log.rb +76 -76
- data/lib/chef/resource/lwrp_base.rb +124 -124
- data/lib/chef/resource/macosx_service.rb +58 -58
- data/lib/chef/resource/macports_package.rb +27 -27
- data/lib/chef/resource/mdadm.rb +103 -103
- data/lib/chef/resource/mount.rb +187 -187
- data/lib/chef/resource/ohai.rb +53 -53
- data/lib/chef/resource/openbsd_package.rb +35 -35
- data/lib/chef/resource/osx_profile.rb +74 -74
- data/lib/chef/resource/package.rb +47 -47
- data/lib/chef/resource/pacman_package.rb +28 -28
- data/lib/chef/resource/paludis_package.rb +33 -33
- data/lib/chef/resource/perl.rb +32 -32
- data/lib/chef/resource/portage_package.rb +32 -32
- data/lib/chef/resource/powershell_script.rb +50 -50
- data/lib/chef/resource/python.rb +31 -31
- data/lib/chef/resource/reboot.rb +48 -48
- data/lib/chef/resource/registry_key.rb +144 -144
- data/lib/chef/resource/remote_directory.rb +122 -122
- data/lib/chef/resource/remote_file.rb +158 -149
- data/lib/chef/resource/resource_notification.rb +122 -122
- data/lib/chef/resource/route.rb +137 -137
- data/lib/chef/resource/rpm_package.rb +32 -32
- data/lib/chef/resource/ruby.rb +31 -31
- data/lib/chef/resource/ruby_block.rb +53 -53
- data/lib/chef/resource/scm.rb +185 -185
- data/lib/chef/resource/script.rb +74 -74
- data/lib/chef/resource/service.rb +217 -208
- data/lib/chef/resource/smartos_package.rb +29 -29
- data/lib/chef/resource/solaris_package.rb +31 -31
- data/lib/chef/resource/subversion.rb +44 -44
- data/lib/chef/resource/template.rb +215 -215
- data/lib/chef/resource/timestamped_deploy.rb +26 -26
- data/lib/chef/resource/user.rb +160 -160
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
- data/lib/chef/resource/windows_package.rb +55 -55
- data/lib/chef/resource/windows_script.rb +65 -65
- data/lib/chef/resource/windows_service.rb +71 -71
- data/lib/chef/resource/yum_package.rb +47 -47
- data/lib/chef/resource/zypper_package.rb +28 -28
- data/lib/chef/resource_builder.rb +151 -151
- data/lib/chef/resource_collection.rb +131 -89
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -59
- data/lib/chef/resource_collection/resource_list.rb +90 -90
- data/lib/chef/resource_collection/resource_set.rb +170 -170
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -124
- data/lib/chef/resource_definition.rb +68 -68
- data/lib/chef/resource_definition_list.rb +38 -38
- data/lib/chef/resource_reporter.rb +327 -327
- data/lib/chef/resource_resolver.rb +185 -185
- data/lib/chef/resources.rb +89 -88
- data/lib/chef/rest.rb +209 -209
- data/lib/chef/role.rb +280 -280
- data/lib/chef/run_context.rb +694 -670
- data/lib/chef/run_context/cookbook_compiler.rb +290 -289
- data/lib/chef/run_list.rb +168 -168
- data/lib/chef/run_list/run_list_expansion.rb +234 -234
- data/lib/chef/run_list/run_list_item.rb +98 -98
- data/lib/chef/run_list/versioned_recipe_list.rb +102 -102
- data/lib/chef/run_lock.rb +197 -197
- data/lib/chef/run_status.rb +125 -125
- data/lib/chef/runner.rb +143 -141
- data/lib/chef/sandbox.rb +20 -20
- data/lib/chef/scan_access_control.rb +138 -138
- data/lib/chef/search/query.rb +180 -180
- data/lib/chef/server_api.rb +78 -78
- data/lib/chef/shell.rb +327 -327
- data/lib/chef/shell/ext.rb +593 -593
- data/lib/chef/shell/model_wrapper.rb +120 -120
- data/lib/chef/shell/shell_session.rb +299 -299
- data/lib/chef/shell_out.rb +13 -13
- data/lib/chef/tasks/chef_repo.rake +200 -200
- data/lib/chef/user.rb +199 -199
- data/lib/chef/user_v1.rb +330 -330
- data/lib/chef/util/backup.rb +94 -94
- data/lib/chef/util/diff.rb +184 -184
- data/lib/chef/util/dsc/configuration_generator.rb +139 -139
- data/lib/chef/util/dsc/lcm_output_parser.rb +137 -137
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -141
- data/lib/chef/util/dsc/resource_info.rb +26 -26
- data/lib/chef/util/dsc/resource_store.rb +109 -109
- data/lib/chef/util/editor.rb +91 -91
- data/lib/chef/util/file_edit.rb +100 -100
- data/lib/chef/util/path_helper.rb +25 -25
- data/lib/chef/util/powershell/cmdlet.rb +170 -170
- data/lib/chef/util/powershell/cmdlet_result.rb +61 -61
- data/lib/chef/util/powershell/ps_credential.rb +41 -41
- data/lib/chef/util/selinux.rb +92 -92
- data/lib/chef/util/threaded_job_queue.rb +61 -61
- data/lib/chef/util/windows.rb +24 -24
- data/lib/chef/util/windows/net_group.rb +84 -84
- data/lib/chef/util/windows/net_use.rb +85 -85
- data/lib/chef/util/windows/net_user.rb +170 -170
- data/lib/chef/util/windows/volume.rb +59 -59
- data/lib/chef/version.rb +34 -34
- data/lib/chef/version/platform.rb +44 -44
- data/lib/chef/version_class.rb +70 -70
- data/lib/chef/version_constraint.rb +118 -118
- data/lib/chef/version_constraint/platform.rb +26 -26
- data/lib/chef/whitelist.rb +86 -86
- data/lib/chef/win32/api.rb +374 -374
- data/lib/chef/win32/api/crypto.rb +63 -63
- data/lib/chef/win32/api/error.rb +953 -953
- data/lib/chef/win32/api/file.rb +625 -625
- data/lib/chef/win32/api/installer.rb +165 -165
- data/lib/chef/win32/api/memory.rb +105 -105
- data/lib/chef/win32/api/net.rb +312 -312
- data/lib/chef/win32/api/process.rb +42 -42
- data/lib/chef/win32/api/psapi.rb +51 -51
- data/lib/chef/win32/api/registry.rb +51 -51
- data/lib/chef/win32/api/security.rb +460 -460
- data/lib/chef/win32/api/synchronization.rb +89 -89
- data/lib/chef/win32/api/system.rb +238 -238
- data/lib/chef/win32/api/unicode.rb +135 -135
- data/lib/chef/win32/crypto.rb +50 -50
- data/lib/chef/win32/error.rb +86 -86
- data/lib/chef/win32/eventlog.rb +31 -31
- data/lib/chef/win32/file.rb +218 -218
- data/lib/chef/win32/file/info.rb +99 -99
- data/lib/chef/win32/file/version_info.rb +93 -93
- data/lib/chef/win32/handle.rb +55 -55
- data/lib/chef/win32/memory.rb +101 -101
- data/lib/chef/win32/mutex.rb +116 -116
- data/lib/chef/win32/net.rb +311 -311
- data/lib/chef/win32/process.rb +97 -97
- data/lib/chef/win32/registry.rb +374 -372
- data/lib/chef/win32/security.rb +665 -665
- data/lib/chef/win32/security/ace.rb +123 -123
- data/lib/chef/win32/security/acl.rb +103 -103
- data/lib/chef/win32/security/securable_object.rb +109 -109
- data/lib/chef/win32/security/security_descriptor.rb +93 -93
- data/lib/chef/win32/security/sid.rb +304 -304
- data/lib/chef/win32/security/token.rb +72 -72
- data/lib/chef/win32/system.rb +62 -62
- data/lib/chef/win32/unicode.rb +60 -60
- data/lib/chef/win32/version.rb +158 -158
- data/lib/chef/workstation_config_loader.rb +23 -23
- 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/copyright +34 -34
- 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/copyright +34 -34
- 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/changelog +5 -5
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
- 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/client.d_00/00-foo.rb +2 -2
- data/spec/data/client.d_00/01-bar.rb +1 -1
- data/spec/data/client.d_00/bar +1 -1
- data/spec/data/client.d_01/foo/bar.rb +1 -1
- data/spec/data/client.d_02/foo.rb/foo.txt +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/name-mismatch-versionnumber/recipes/default.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.erb +14 -14
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.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/cookbooks/supports-platform-constraints/metadata.rb +5 -5
- 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/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
- 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/buck_passer.rb +28 -28
- data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
- 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/bar.rb +2 -2
- 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/lwrp_override/resources/foo.rb +10 -10
- 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/nested.json +2 -2
- 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/include/recipes/default.rb +24 -24
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
- 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/opscode.pem +57 -57
- data/spec/data/trusted_certs/root.pem +22 -22
- data/spec/functional/application_spec.rb +58 -58
- data/spec/functional/assets/chefinittest +34 -34
- data/spec/functional/assets/testchefsubsys +10 -10
- data/spec/functional/audit/rspec_formatter_spec.rb +54 -54
- data/spec/functional/audit/runner_spec.rb +121 -121
- data/spec/functional/dsl/reboot_pending_spec.rb +106 -106
- data/spec/functional/dsl/registry_helper_spec.rb +61 -61
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +101 -101
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
- data/spec/functional/http/simple_spec.rb +140 -140
- data/spec/functional/knife/configure_spec.rb +33 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +167 -167
- data/spec/functional/knife/exec_spec.rb +55 -55
- data/spec/functional/knife/rehash_spec.rb +39 -39
- data/spec/functional/knife/smoke_test.rb +42 -42
- data/spec/functional/knife/ssh_spec.rb +284 -284
- data/spec/functional/mixin/powershell_out_spec.rb +43 -43
- data/spec/functional/mixin/shell_out_spec.rb +48 -48
- data/spec/functional/notifications_spec.rb +238 -238
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +100 -100
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +51 -51
- data/spec/functional/rebooter_spec.rb +105 -105
- data/spec/functional/resource/aix_service_spec.rb +138 -138
- data/spec/functional/resource/aixinit_service_spec.rb +211 -211
- data/spec/functional/resource/base.rb +28 -28
- data/spec/functional/resource/bash_spec.rb +88 -88
- data/spec/functional/resource/batch_spec.rb +30 -30
- data/spec/functional/resource/bff_spec.rb +120 -120
- data/spec/functional/resource/chocolatey_package_spec.rb +130 -130
- data/spec/functional/resource/cookbook_file_spec.rb +81 -81
- data/spec/functional/resource/cron_spec.rb +172 -172
- data/spec/functional/resource/deploy_revision_spec.rb +881 -881
- data/spec/functional/resource/directory_spec.rb +43 -43
- data/spec/functional/resource/dpkg_package_spec.rb +339 -339
- data/spec/functional/resource/dsc_resource_spec.rb +90 -90
- data/spec/functional/resource/dsc_script_spec.rb +479 -479
- data/spec/functional/resource/env_spec.rb +192 -192
- data/spec/functional/resource/execute_spec.rb +154 -154
- data/spec/functional/resource/file_spec.rb +167 -167
- data/spec/functional/resource/git_spec.rb +259 -259
- data/spec/functional/resource/group_spec.rb +461 -461
- data/spec/functional/resource/ifconfig_spec.rb +165 -165
- data/spec/functional/resource/link_spec.rb +613 -613
- data/spec/functional/resource/mount_spec.rb +203 -203
- data/spec/functional/resource/ohai_spec.rb +62 -62
- data/spec/functional/resource/package_spec.rb +386 -386
- data/spec/functional/resource/powershell_script_spec.rb +601 -601
- data/spec/functional/resource/reboot_spec.rb +103 -103
- data/spec/functional/resource/registry_spec.rb +560 -560
- data/spec/functional/resource/remote_directory_spec.rb +220 -220
- data/spec/functional/resource/remote_file_spec.rb +240 -240
- data/spec/functional/resource/rpm_spec.rb +123 -123
- data/spec/functional/resource/template_spec.rb +212 -212
- data/spec/functional/resource/user/dscl_spec.rb +198 -198
- data/spec/functional/resource/user/useradd_spec.rb +692 -692
- data/spec/functional/resource/user/windows_spec.rb +133 -133
- data/spec/functional/resource/windows_package_spec.rb +168 -168
- data/spec/functional/resource/windows_service_spec.rb +102 -102
- data/spec/functional/rest_spec.rb +95 -95
- data/spec/functional/run_lock_spec.rb +466 -466
- data/spec/functional/shell_spec.rb +148 -148
- data/spec/functional/tiny_server_spec.rb +78 -78
- data/spec/functional/util/path_helper_spec.rb +37 -37
- data/spec/functional/util/powershell/cmdlet_spec.rb +111 -111
- data/spec/functional/version_spec.rb +35 -35
- data/spec/functional/win32/crypto_spec.rb +54 -54
- data/spec/functional/win32/registry_spec.rb +623 -623
- data/spec/functional/win32/security_spec.rb +100 -100
- data/spec/functional/win32/service_manager_spec.rb +220 -220
- data/spec/functional/win32/sid_spec.rb +55 -55
- data/spec/functional/win32/version_info_spec.rb +50 -50
- data/spec/functional/win32/versions_spec.rb +117 -117
- data/spec/integration/client/client_spec.rb +500 -500
- data/spec/integration/client/ipv6_spec.rb +134 -134
- data/spec/integration/knife/chef_fs_data_store_spec.rb +556 -556
- data/spec/integration/knife/chef_repo_path_spec.rb +890 -890
- data/spec/integration/knife/chef_repository_file_system_spec.rb +296 -292
- data/spec/integration/knife/chefignore_spec.rb +300 -300
- data/spec/integration/knife/common_options_spec.rb +155 -155
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
- data/spec/integration/knife/delete_spec.rb +1017 -1017
- data/spec/integration/knife/deps_spec.rb +706 -706
- data/spec/integration/knife/diff_spec.rb +602 -602
- data/spec/integration/knife/download_spec.rb +1314 -1314
- data/spec/integration/knife/list_spec.rb +1067 -1067
- data/spec/integration/knife/raw_spec.rb +242 -242
- data/spec/integration/knife/redirection_spec.rb +52 -52
- data/spec/integration/knife/serve_spec.rb +57 -57
- data/spec/integration/knife/show_spec.rb +167 -167
- data/spec/integration/knife/upload_spec.rb +1529 -1529
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +175 -148
- data/spec/integration/recipes/lwrp_spec.rb +53 -53
- data/spec/integration/recipes/noop_resource_spec.rb +24 -0
- data/spec/integration/recipes/notifies_spec.rb +334 -0
- data/spec/integration/recipes/provider_choice.rb +37 -37
- data/spec/integration/recipes/recipe_dsl_spec.rb +1519 -1519
- data/spec/integration/recipes/remote_directory.rb +74 -74
- data/spec/integration/recipes/resource_action_spec.rb +569 -569
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +496 -496
- data/spec/integration/recipes/resource_load_spec.rb +208 -208
- data/spec/integration/solo/solo_spec.rb +176 -176
- data/spec/rcov.opts +2 -2
- data/spec/scripts/ssl-serve.rb +47 -47
- data/spec/spec_helper.rb +248 -248
- data/spec/stress/win32/file_spec.rb +37 -37
- data/spec/stress/win32/memory_spec.rb +22 -22
- data/spec/stress/win32/security_spec.rb +69 -69
- data/spec/support/chef_helpers.rb +95 -95
- data/spec/support/key_helpers.rb +104 -104
- data/spec/support/lib/chef/provider/easy.rb +35 -35
- data/spec/support/lib/chef/provider/openldap_includer.rb +29 -29
- data/spec/support/lib/chef/provider/snakeoil.rb +41 -41
- data/spec/support/lib/chef/resource/cat.rb +38 -38
- data/spec/support/lib/chef/resource/one_two_three_four.rb +37 -37
- data/spec/support/lib/chef/resource/openldap_includer.rb +26 -26
- data/spec/support/lib/chef/resource/with_state.rb +28 -28
- data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
- data/spec/support/lib/chef/resource/zen_master.rb +41 -41
- data/spec/support/lib/library_load_order.rb +20 -20
- data/spec/support/matchers/leak.rb +98 -98
- data/spec/support/mock/constant.rb +52 -52
- data/spec/support/mock/platform.rb +25 -25
- data/spec/support/platform_helpers.rb +214 -214
- data/spec/support/platforms/prof/gc.rb +53 -53
- data/spec/support/platforms/prof/win32.rb +45 -45
- data/spec/support/platforms/win32/spec_service.rb +59 -59
- data/spec/support/shared/context/client.rb +285 -285
- data/spec/support/shared/context/config.rb +21 -21
- data/spec/support/shared/context/win32.rb +34 -34
- data/spec/support/shared/examples/client.rb +53 -53
- data/spec/support/shared/functional/diff_disabled.rb +10 -10
- data/spec/support/shared/functional/directory_resource.rb +176 -176
- data/spec/support/shared/functional/file_resource.rb +1049 -1049
- data/spec/support/shared/functional/http.rb +248 -248
- data/spec/support/shared/functional/knife.rb +37 -37
- data/spec/support/shared/functional/securable_resource.rb +547 -547
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
- data/spec/support/shared/functional/win32_service.rb +59 -59
- data/spec/support/shared/functional/windows_script.rb +202 -202
- data/spec/support/shared/integration/app_server_support.rb +42 -42
- data/spec/support/shared/integration/integration_helper.rb +154 -154
- data/spec/support/shared/integration/knife_support.rb +173 -173
- data/spec/support/shared/matchers/exit_with_code.rb +32 -32
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
- data/spec/support/shared/shared_examples.rb +14 -14
- data/spec/support/shared/unit/api_error_inspector.rb +190 -190
- data/spec/support/shared/unit/api_versioning.rb +77 -77
- data/spec/support/shared/unit/application_dot_d.rb +70 -70
- data/spec/support/shared/unit/execute_resource.rb +133 -133
- data/spec/support/shared/unit/file_system_support.rb +69 -69
- data/spec/support/shared/unit/knife_shared.rb +39 -39
- data/spec/support/shared/unit/mock_shellout.rb +49 -49
- data/spec/support/shared/unit/platform_introspector.rb +189 -189
- data/spec/support/shared/unit/provider/file.rb +835 -835
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +433 -433
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
- data/spec/support/shared/unit/script_resource.rb +98 -98
- data/spec/support/shared/unit/user_and_client_shared.rb +114 -114
- data/spec/support/shared/unit/windows_script_resource.rb +80 -80
- data/spec/tiny_server.rb +207 -207
- data/spec/unit/api_client/registration_spec.rb +278 -278
- data/spec/unit/api_client_spec.rb +341 -341
- data/spec/unit/api_client_v1_spec.rb +455 -455
- data/spec/unit/application/apply_spec.rb +110 -110
- data/spec/unit/application/client_spec.rb +495 -435
- data/spec/unit/application/knife_spec.rb +229 -229
- data/spec/unit/application/solo_spec.rb +170 -170
- data/spec/unit/application_spec.rb +411 -384
- data/spec/unit/audit/audit_event_proxy_spec.rb +311 -311
- data/spec/unit/audit/audit_reporter_spec.rb +430 -430
- data/spec/unit/audit/control_group_data_spec.rb +477 -477
- data/spec/unit/audit/logger_spec.rb +42 -42
- data/spec/unit/audit/rspec_formatter_spec.rb +29 -29
- data/spec/unit/audit/runner_spec.rb +144 -144
- data/spec/unit/chef_class_spec.rb +110 -110
- data/spec/unit/chef_fs/config_spec.rb +106 -106
- data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +63 -63
- data/spec/unit/chef_fs/diff_spec.rb +328 -328
- data/spec/unit/chef_fs/file_pattern_spec.rb +512 -512
- data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -34
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -47
- data/spec/unit/chef_fs/file_system_spec.rb +148 -148
- data/spec/unit/chef_fs/parallelizer.rb +479 -479
- data/spec/unit/chef_fs/path_util_spec.rb +108 -108
- data/spec/unit/chef_spec.rb +25 -25
- data/spec/unit/client_spec.rb +544 -544
- data/spec/unit/config_fetcher_spec.rb +125 -125
- data/spec/unit/config_spec.rb +31 -31
- data/spec/unit/cookbook/chefignore_spec.rb +49 -49
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +198 -198
- data/spec/unit/cookbook/file_vendor_spec.rb +97 -97
- data/spec/unit/cookbook/metadata_spec.rb +952 -952
- data/spec/unit/cookbook/synchronizer_spec.rb +520 -520
- data/spec/unit/cookbook/syntax_check_spec.rb +219 -219
- data/spec/unit/cookbook_loader_spec.rb +299 -299
- data/spec/unit/cookbook_manifest_spec.rb +243 -243
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +203 -203
- data/spec/unit/cookbook_spec.rb +66 -66
- data/spec/unit/cookbook_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_version_file_specificity_spec.rb +576 -553
- data/spec/unit/cookbook_version_spec.rb +359 -359
- data/spec/unit/daemon_spec.rb +174 -174
- data/spec/unit/data_bag_item_spec.rb +388 -388
- data/spec/unit/data_bag_spec.rb +260 -260
- data/spec/unit/deprecation_spec.rb +150 -150
- data/spec/unit/digester_spec.rb +49 -49
- data/spec/unit/dsl/audit_spec.rb +43 -43
- data/spec/unit/dsl/data_query_spec.rb +106 -106
- data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
- data/spec/unit/dsl/reboot_pending_spec.rb +100 -100
- data/spec/unit/dsl/recipe_spec.rb +93 -80
- data/spec/unit/dsl/{regsitry_helper_spec.rb → registry_helper_spec.rb} +52 -52
- data/spec/unit/dsl/resources_spec.rb +85 -85
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -95
- data/spec/unit/encrypted_data_bag_item_spec.rb +437 -437
- data/spec/unit/environment_spec.rb +470 -470
- data/spec/unit/event_dispatch/dispatcher_spec.rb +122 -122
- data/spec/unit/event_dispatch/dsl_spec.rb +83 -83
- data/spec/unit/exceptions_spec.rb +130 -130
- data/spec/unit/file_access_control_spec.rb +308 -308
- data/spec/unit/file_cache_spec.rb +114 -114
- data/spec/unit/file_content_management/deploy/cp_spec.rb +44 -44
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +101 -101
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
- data/spec/unit/file_content_management/tempfile_spec.rb +85 -85
- data/spec/unit/formatters/base_spec.rb +71 -71
- data/spec/unit/formatters/doc_spec.rb +92 -78
- data/spec/unit/formatters/error_description_spec.rb +96 -0
- data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +76 -76
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +265 -265
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +126 -126
- data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +43 -43
- data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +26 -26
- data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +26 -26
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +191 -191
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +91 -91
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +155 -155
- data/spec/unit/guard_interpreter_spec.rb +41 -41
- data/spec/unit/handler/json_file_spec.rb +63 -63
- data/spec/unit/handler_spec.rb +215 -215
- data/spec/unit/http/authenticator_spec.rb +80 -80
- data/spec/unit/http/basic_client_spec.rb +52 -129
- data/spec/unit/http/http_request_spec.rb +91 -91
- data/spec/unit/http/json_input_spec.rb +128 -128
- data/spec/unit/http/simple_spec.rb +32 -32
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +173 -173
- data/spec/unit/http/ssl_policies_spec.rb +169 -169
- data/spec/unit/http/validate_content_length_spec.rb +207 -207
- data/spec/unit/http_spec.rb +206 -206
- data/spec/unit/json_compat_spec.rb +105 -105
- data/spec/unit/key_spec.rb +631 -631
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
- data/spec/unit/knife/bootstrap_spec.rb +822 -822
- data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
- data/spec/unit/knife/client_create_spec.rb +186 -186
- data/spec/unit/knife/client_delete_spec.rb +83 -83
- data/spec/unit/knife/client_edit_spec.rb +53 -53
- data/spec/unit/knife/client_list_spec.rb +34 -34
- data/spec/unit/knife/client_reregister_spec.rb +62 -62
- data/spec/unit/knife/client_show_spec.rb +52 -52
- data/spec/unit/knife/configure_client_spec.rb +83 -83
- data/spec/unit/knife/configure_spec.rb +241 -241
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_create_spec.rb +260 -260
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +237 -237
- data/spec/unit/knife/cookbook_list_spec.rb +88 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +65 -65
- data/spec/unit/knife/cookbook_metadata_spec.rb +179 -179
- data/spec/unit/knife/cookbook_show_spec.rb +222 -222
- data/spec/unit/knife/cookbook_site_download_spec.rb +149 -149
- data/spec/unit/knife/cookbook_site_install_spec.rb +197 -197
- data/spec/unit/knife/cookbook_site_share_spec.rb +209 -209
- data/spec/unit/knife/cookbook_site_unshare_spec.rb +77 -77
- data/spec/unit/knife/cookbook_test_spec.rb +84 -84
- data/spec/unit/knife/cookbook_upload_spec.rb +331 -331
- data/spec/unit/knife/core/bootstrap_context_spec.rb +257 -257
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +41 -41
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +109 -109
- data/spec/unit/knife/core/node_editor_spec.rb +211 -211
- data/spec/unit/knife/core/object_loader_spec.rb +81 -81
- data/spec/unit/knife/core/subcommand_loader_spec.rb +70 -70
- data/spec/unit/knife/core/ui_spec.rb +598 -598
- data/spec/unit/knife/data_bag_create_spec.rb +109 -109
- data/spec/unit/knife/data_bag_edit_spec.rb +127 -127
- data/spec/unit/knife/data_bag_from_file_spec.rb +172 -172
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
- data/spec/unit/knife/data_bag_show_spec.rb +123 -123
- data/spec/unit/knife/environment_compare_spec.rb +112 -112
- data/spec/unit/knife/environment_create_spec.rb +91 -91
- data/spec/unit/knife/environment_delete_spec.rb +71 -71
- data/spec/unit/knife/environment_edit_spec.rb +79 -79
- data/spec/unit/knife/environment_from_file_spec.rb +90 -90
- data/spec/unit/knife/environment_list_spec.rb +54 -54
- data/spec/unit/knife/environment_show_spec.rb +52 -52
- data/spec/unit/knife/index_rebuild_spec.rb +125 -125
- data/spec/unit/knife/key_create_spec.rb +223 -223
- data/spec/unit/knife/key_delete_spec.rb +133 -133
- data/spec/unit/knife/key_edit_spec.rb +264 -264
- data/spec/unit/knife/key_helper.rb +74 -74
- data/spec/unit/knife/key_list_spec.rb +216 -216
- data/spec/unit/knife/key_show_spec.rb +126 -126
- data/spec/unit/knife/knife_help.rb +92 -92
- data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +68 -68
- data/spec/unit/knife/node_edit_spec.rb +114 -114
- data/spec/unit/knife/node_environment_set_spec.rb +80 -80
- data/spec/unit/knife/node_from_file_spec.rb +59 -59
- data/spec/unit/knife/node_list_spec.rb +62 -62
- data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -140
- data/spec/unit/knife/node_show_spec.rb +65 -65
- data/spec/unit/knife/osc_user_create_spec.rb +93 -93
- data/spec/unit/knife/osc_user_delete_spec.rb +44 -44
- data/spec/unit/knife/osc_user_edit_spec.rb +52 -52
- data/spec/unit/knife/osc_user_list_spec.rb +37 -37
- data/spec/unit/knife/osc_user_reregister_spec.rb +58 -58
- data/spec/unit/knife/osc_user_show_spec.rb +46 -46
- data/spec/unit/knife/raw_spec.rb +43 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
- data/spec/unit/knife/role_create_spec.rb +80 -80
- data/spec/unit/knife/role_delete_spec.rb +67 -67
- data/spec/unit/knife/role_edit_spec.rb +77 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
- data/spec/unit/knife/role_from_file_spec.rb +69 -69
- data/spec/unit/knife/role_list_spec.rb +54 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
- data/spec/unit/knife/role_show_spec.rb +59 -59
- data/spec/unit/knife/ssh_spec.rb +428 -410
- data/spec/unit/knife/ssl_check_spec.rb +240 -240
- data/spec/unit/knife/ssl_fetch_spec.rb +184 -184
- data/spec/unit/knife/status_spec.rb +108 -108
- data/spec/unit/knife/tag_create_spec.rb +23 -23
- data/spec/unit/knife/tag_delete_spec.rb +25 -25
- data/spec/unit/knife/tag_list_spec.rb +23 -23
- data/spec/unit/knife/user_create_spec.rb +214 -214
- data/spec/unit/knife/user_delete_spec.rb +65 -65
- data/spec/unit/knife/user_edit_spec.rb +66 -66
- data/spec/unit/knife/user_list_spec.rb +36 -36
- data/spec/unit/knife/user_reregister_spec.rb +74 -74
- data/spec/unit/knife/user_show_spec.rb +65 -65
- data/spec/unit/knife_spec.rb +529 -529
- data/spec/unit/lib_backcompat_spec.rb +34 -34
- data/spec/unit/log/syslog_spec.rb +53 -53
- data/spec/unit/log/winevt_spec.rb +55 -55
- data/spec/unit/log_spec.rb +24 -24
- data/spec/unit/lwrp_spec.rb +778 -720
- data/spec/unit/mash_spec.rb +51 -51
- data/spec/unit/mixin/api_version_request_handling_spec.rb +126 -126
- data/spec/unit/mixin/checksum_spec.rb +40 -40
- data/spec/unit/mixin/command_spec.rb +104 -104
- data/spec/unit/mixin/convert_to_class_name_spec.rb +54 -54
- data/spec/unit/mixin/deep_merge_spec.rb +342 -342
- data/spec/unit/mixin/deprecation_spec.rb +57 -57
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +96 -96
- data/spec/unit/mixin/homebrew_user_spec.rb +100 -100
- data/spec/unit/mixin/lazy_module_include.rb +71 -0
- data/spec/unit/mixin/params_validate_spec.rb +409 -409
- data/spec/unit/mixin/path_sanity_spec.rb +92 -92
- data/spec/unit/mixin/powershell_out_spec.rb +70 -70
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +83 -83
- data/spec/unit/mixin/properties_spec.rb +97 -97
- data/spec/unit/mixin/proxified_socket_spec.rb +97 -94
- data/spec/unit/mixin/securable_spec.rb +314 -314
- data/spec/unit/mixin/shell_out_spec.rb +299 -299
- data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
- data/spec/unit/mixin/template_spec.rb +276 -276
- data/spec/unit/mixin/unformatter_spec.rb +61 -61
- data/spec/unit/mixin/uris_spec.rb +57 -57
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +85 -85
- data/spec/unit/mixin/xml_escape_spec.rb +54 -54
- data/spec/unit/monkey_patches/uri_spec.rb +34 -34
- data/spec/unit/monologger_spec.rb +45 -45
- data/spec/unit/node/attribute_spec.rb +1179 -1179
- data/spec/unit/node/immutable_collections_spec.rb +197 -197
- data/spec/unit/node_map_spec.rb +170 -170
- data/spec/unit/node_spec.rb +1565 -1565
- data/spec/unit/org_spec.rb +196 -196
- data/spec/unit/platform/query_helpers_spec.rb +220 -220
- data/spec/unit/platform_spec.rb +241 -241
- data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
- data/spec/unit/policy_builder/expand_node_object_spec.rb +336 -336
- data/spec/unit/policy_builder/policyfile_spec.rb +745 -745
- data/spec/unit/policy_builder_spec.rb +26 -26
- data/spec/unit/property/state_spec.rb +508 -508
- data/spec/unit/property/validation_spec.rb +704 -704
- data/spec/unit/property_spec.rb +1227 -1227
- data/spec/unit/provider/apt_repository_spec.rb +178 -0
- data/spec/unit/provider/apt_update_spec.rb +113 -113
- data/spec/unit/provider/breakpoint_spec.rb +53 -53
- data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
- data/spec/unit/provider/cookbook_file_spec.rb +58 -58
- data/spec/unit/provider/cron/unix_spec.rb +139 -139
- data/spec/unit/provider/cron_spec.rb +1010 -1010
- data/spec/unit/provider/deploy/revision_spec.rb +110 -110
- data/spec/unit/provider/deploy/timestamped_spec.rb +40 -40
- data/spec/unit/provider/deploy_spec.rb +641 -641
- data/spec/unit/provider/directory_spec.rb +287 -287
- data/spec/unit/provider/dsc_resource_spec.rb +167 -167
- data/spec/unit/provider/dsc_script_spec.rb +173 -173
- data/spec/unit/provider/env/windows_spec.rb +103 -103
- data/spec/unit/provider/env_spec.rb +310 -310
- data/spec/unit/provider/erl_call_spec.rb +85 -85
- data/spec/unit/provider/execute_spec.rb +243 -243
- data/spec/unit/provider/file/content_spec.rb +114 -114
- data/spec/unit/provider/file_spec.rb +56 -56
- data/spec/unit/provider/git_spec.rb +668 -668
- data/spec/unit/provider/group/dscl_spec.rb +331 -331
- data/spec/unit/provider/group/gpasswd_spec.rb +116 -116
- data/spec/unit/provider/group/groupadd_spec.rb +174 -174
- data/spec/unit/provider/group/groupmod_spec.rb +133 -133
- data/spec/unit/provider/group/pw_spec.rb +138 -138
- data/spec/unit/provider/group/usermod_spec.rb +115 -115
- data/spec/unit/provider/group/windows_spec.rb +101 -101
- data/spec/unit/provider/group_spec.rb +286 -286
- data/spec/unit/provider/http_request_spec.rb +159 -159
- data/spec/unit/provider/ifconfig/aix_spec.rb +180 -180
- data/spec/unit/provider/ifconfig/debian_spec.rb +344 -344
- data/spec/unit/provider/ifconfig/redhat_spec.rb +73 -73
- data/spec/unit/provider/ifconfig_spec.rb +200 -200
- data/spec/unit/provider/launchd_spec.rb +189 -189
- data/spec/unit/provider/link_spec.rb +252 -252
- data/spec/unit/provider/log_spec.rb +75 -75
- data/spec/unit/provider/mdadm_spec.rb +131 -131
- data/spec/unit/provider/mount/aix_spec.rb +237 -238
- data/spec/unit/provider/mount/mount_spec.rb +474 -480
- data/spec/unit/provider/mount/solaris_spec.rb +822 -822
- data/spec/unit/provider/mount/windows_spec.rb +149 -151
- data/spec/unit/provider/mount_spec.rb +184 -203
- data/spec/unit/provider/ohai_spec.rb +84 -84
- data/spec/unit/provider/osx_profile_spec.rb +249 -249
- data/spec/unit/provider/package/aix_spec.rb +172 -172
- data/spec/unit/provider/package/apt_spec.rb +386 -386
- data/spec/unit/provider/package/chocolatey_spec.rb +501 -501
- data/spec/unit/provider/package/dpkg_spec.rb +287 -287
- data/spec/unit/provider/package/easy_install_spec.rb +108 -108
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +274 -274
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +148 -148
- data/spec/unit/provider/package/freebsd/port_spec.rb +163 -163
- data/spec/unit/provider/package/homebrew_spec.rb +292 -292
- data/spec/unit/provider/package/ips_spec.rb +227 -227
- data/spec/unit/provider/package/macports_spec.rb +203 -203
- data/spec/unit/provider/package/openbsd_spec.rb +132 -132
- data/spec/unit/provider/package/pacman_spec.rb +194 -194
- data/spec/unit/provider/package/paludis_spec.rb +134 -134
- data/spec/unit/provider/package/portage_spec.rb +310 -310
- data/spec/unit/provider/package/rpm_spec.rb +429 -429
- data/spec/unit/provider/package/rubygems_spec.rb +782 -782
- data/spec/unit/provider/package/smartos_spec.rb +110 -110
- data/spec/unit/provider/package/solaris_spec.rb +167 -167
- data/spec/unit/provider/package/windows/exe_spec.rb +187 -187
- data/spec/unit/provider/package/windows/msi_spec.rb +159 -159
- data/spec/unit/provider/package/windows_spec.rb +397 -397
- data/spec/unit/provider/package/yum_spec.rb +2267 -2267
- data/spec/unit/provider/package/zypper_spec.rb +268 -268
- data/spec/unit/provider/package_spec.rb +870 -870
- data/spec/unit/provider/powershell_script_spec.rb +106 -106
- data/spec/unit/provider/registry_key_spec.rb +295 -295
- data/spec/unit/provider/remote_directory_spec.rb +221 -221
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
- data/spec/unit/provider/remote_file/content_spec.rb +252 -252
- data/spec/unit/provider/remote_file/fetcher_spec.rb +94 -94
- data/spec/unit/provider/remote_file/ftp_spec.rb +217 -219
- data/spec/unit/provider/remote_file/http_spec.rb +322 -301
- data/spec/unit/provider/remote_file/local_file_spec.rb +103 -103
- data/spec/unit/provider/remote_file/network_file_spec.rb +45 -45
- data/spec/unit/provider/remote_file/sftp_spec.rb +150 -0
- data/spec/unit/provider/remote_file_spec.rb +61 -61
- data/spec/unit/provider/route_spec.rb +242 -242
- data/spec/unit/provider/ruby_block_spec.rb +45 -45
- data/spec/unit/provider/script_spec.rb +114 -114
- data/spec/unit/provider/service/aix_service_spec.rb +195 -195
- data/spec/unit/provider/service/aixinit_service_spec.rb +272 -272
- data/spec/unit/provider/service/arch_service_spec.rb +324 -324
- data/spec/unit/provider/service/debian_service_spec.rb +375 -375
- data/spec/unit/provider/service/freebsd_service_spec.rb +613 -613
- data/spec/unit/provider/service/gentoo_service_spec.rb +144 -144
- data/spec/unit/provider/service/init_service_spec.rb +235 -235
- data/spec/unit/provider/service/insserv_service_spec.rb +75 -75
- data/spec/unit/provider/service/invokercd_service_spec.rb +211 -211
- data/spec/unit/provider/service/macosx_spec.rb +335 -335
- data/spec/unit/provider/service/openbsd_service_spec.rb +545 -545
- data/spec/unit/provider/service/redhat_spec.rb +250 -236
- data/spec/unit/provider/service/simple_service_spec.rb +169 -169
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +255 -255
- data/spec/unit/provider/service/systemd_service_spec.rb +370 -344
- data/spec/unit/provider/service/upstart_service_spec.rb +342 -342
- data/spec/unit/provider/service/windows_spec.rb +463 -463
- data/spec/unit/provider/service_spec.rb +168 -168
- data/spec/unit/provider/subversion_spec.rb +352 -298
- data/spec/unit/provider/template/content_spec.rb +169 -169
- data/spec/unit/provider/template_spec.rb +89 -89
- data/spec/unit/provider/user/dscl_spec.rb +901 -901
- data/spec/unit/provider/user/pw_spec.rb +252 -252
- data/spec/unit/provider/user/solaris_spec.rb +139 -139
- data/spec/unit/provider/user/useradd_spec.rb +51 -51
- data/spec/unit/provider/user/windows_spec.rb +185 -185
- data/spec/unit/provider/user_spec.rb +474 -474
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
- data/spec/unit/provider_resolver_spec.rb +893 -893
- data/spec/unit/provider_spec.rb +198 -198
- data/spec/unit/pure_application_spec.rb +32 -32
- data/spec/unit/recipe_spec.rb +699 -699
- data/spec/unit/resource/apt_package_spec.rb +38 -38
- data/spec/unit/resource/apt_repository_spec.rb +34 -0
- data/spec/unit/resource/apt_update_spec.rb +38 -38
- data/spec/unit/resource/bash_spec.rb +40 -40
- data/spec/unit/resource/batch_spec.rb +49 -49
- data/spec/unit/resource/breakpoint_spec.rb +47 -47
- data/spec/unit/resource/chef_gem_spec.rb +157 -157
- data/spec/unit/resource/chocolatey_package_spec.rb +67 -67
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
- data/spec/unit/resource/conditional_spec.rb +208 -208
- data/spec/unit/resource/cookbook_file_spec.rb +88 -88
- data/spec/unit/resource/cron_spec.rb +186 -186
- data/spec/unit/resource/csh_spec.rb +40 -40
- data/spec/unit/resource/deploy_revision_spec.rb +42 -42
- data/spec/unit/resource/deploy_spec.rb +283 -283
- data/spec/unit/resource/directory_spec.rb +82 -82
- data/spec/unit/resource/dpkg_package_spec.rb +32 -32
- data/spec/unit/resource/dsc_resource_spec.rb +96 -96
- data/spec/unit/resource/dsc_script_spec.rb +134 -134
- data/spec/unit/resource/easy_install_package_spec.rb +39 -39
- data/spec/unit/resource/env_spec.rb +85 -85
- data/spec/unit/resource/erl_call_spec.rb +81 -81
- data/spec/unit/resource/execute_spec.rb +35 -35
- data/spec/unit/resource/file/verification_spec.rb +139 -139
- data/spec/unit/resource/file_spec.rb +130 -130
- data/spec/unit/resource/freebsd_package_spec.rb +87 -87
- data/spec/unit/resource/gem_package_spec.rb +42 -42
- data/spec/unit/resource/git_spec.rb +50 -50
- data/spec/unit/resource/group_spec.rb +162 -162
- data/spec/unit/resource/homebrew_package_spec.rb +50 -50
- data/spec/unit/resource/http_request_spec.rb +59 -59
- data/spec/unit/resource/ifconfig_spec.rb +109 -109
- data/spec/unit/resource/ips_package_spec.rb +40 -40
- data/spec/unit/resource/ksh_spec.rb +40 -40
- data/spec/unit/resource/launchd_spec.rb +31 -31
- data/spec/unit/resource/link_spec.rb +134 -134
- data/spec/unit/resource/log_spec.rb +73 -73
- data/spec/unit/resource/macports_package_spec.rb +32 -32
- data/spec/unit/resource/mdadm_spec.rb +102 -102
- data/spec/unit/resource/mount_spec.rb +214 -214
- data/spec/unit/resource/ohai_spec.rb +61 -61
- data/spec/unit/resource/openbsd_package_spec.rb +48 -48
- data/spec/unit/resource/osx_profile_spec.rb +61 -61
- data/spec/unit/resource/package_spec.rb +93 -93
- data/spec/unit/resource/pacman_package_spec.rb +32 -32
- data/spec/unit/resource/perl_spec.rb +40 -40
- data/spec/unit/resource/portage_package_spec.rb +38 -38
- data/spec/unit/resource/powershell_script_spec.rb +136 -136
- data/spec/unit/resource/python_spec.rb +40 -40
- data/spec/unit/resource/registry_key_spec.rb +199 -199
- data/spec/unit/resource/remote_directory_spec.rb +97 -97
- data/spec/unit/resource/remote_file_spec.rb +207 -207
- data/spec/unit/resource/resource_notification_spec.rb +169 -169
- data/spec/unit/resource/route_spec.rb +107 -107
- data/spec/unit/resource/rpm_package_spec.rb +46 -46
- data/spec/unit/resource/ruby_block_spec.rb +61 -61
- data/spec/unit/resource/ruby_spec.rb +40 -40
- data/spec/unit/resource/scm_spec.rb +193 -193
- data/spec/unit/resource/script_spec.rb +44 -44
- data/spec/unit/resource/service_spec.rb +179 -179
- data/spec/unit/resource/smartos_package_spec.rb +33 -33
- data/spec/unit/resource/solaris_package_spec.rb +42 -42
- data/spec/unit/resource/subversion_spec.rb +71 -71
- data/spec/unit/resource/template_spec.rb +210 -210
- data/spec/unit/resource/timestamped_deploy_spec.rb +32 -32
- data/spec/unit/resource/user_spec.rb +133 -133
- data/spec/unit/resource/windows_package_spec.rb +95 -95
- data/spec/unit/resource/windows_service_spec.rb +49 -49
- data/spec/unit/resource/yum_package_spec.rb +89 -89
- data/spec/unit/resource_builder_spec.rb +1 -1
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -137
- data/spec/unit/resource_collection/resource_set_spec.rb +199 -199
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
- data/spec/unit/resource_collection_spec.rb +369 -299
- data/spec/unit/resource_definition_spec.rb +117 -117
- data/spec/unit/resource_reporter_spec.rb +758 -758
- data/spec/unit/resource_resolver_spec.rb +52 -52
- data/spec/unit/resource_spec.rb +1101 -1101
- data/spec/unit/rest/auth_credentials_spec.rb +292 -296
- data/spec/unit/rest_spec.rb +753 -753
- data/spec/unit/role_spec.rb +358 -358
- data/spec/unit/run_context/child_run_context_spec.rb +133 -133
- data/spec/unit/run_context/cookbook_compiler_spec.rb +184 -184
- data/spec/unit/run_context_spec.rb +241 -241
- data/spec/unit/run_list/run_list_expansion_spec.rb +144 -144
- data/spec/unit/run_list/run_list_item_spec.rb +117 -117
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +194 -194
- data/spec/unit/run_list_spec.rb +312 -312
- data/spec/unit/run_lock_spec.rb +140 -140
- data/spec/unit/run_status_spec.rb +144 -144
- data/spec/unit/runner_spec.rb +411 -411
- data/spec/unit/scan_access_control_spec.rb +183 -183
- data/spec/unit/search/query_spec.rb +289 -289
- data/spec/unit/shell/model_wrapper_spec.rb +96 -96
- data/spec/unit/shell/shell_ext_spec.rb +153 -153
- data/spec/unit/shell/shell_session_spec.rb +195 -195
- data/spec/unit/shell_out_spec.rb +18 -18
- data/spec/unit/shell_spec.rb +162 -162
- data/spec/unit/user_spec.rb +275 -275
- data/spec/unit/user_v1_spec.rb +583 -583
- data/spec/unit/util/backup_spec.rb +141 -141
- data/spec/unit/util/diff_spec.rb +576 -576
- data/spec/unit/util/dsc/configuration_generator_spec.rb +193 -193
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +164 -164
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +138 -138
- data/spec/unit/util/dsc/resource_store.rb +76 -76
- data/spec/unit/util/editor_spec.rb +152 -152
- data/spec/unit/util/file_edit_spec.rb +224 -224
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -106
- data/spec/unit/util/powershell/ps_credential_spec.rb +44 -44
- data/spec/unit/util/selinux_spec.rb +171 -171
- data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
- data/spec/unit/version/platform_spec.rb +60 -60
- data/spec/unit/version_class_spec.rb +171 -171
- data/spec/unit/version_constraint/platform_spec.rb +45 -45
- data/spec/unit/version_constraint_spec.rb +179 -179
- data/spec/unit/win32/registry_spec.rb +394 -394
- data/spec/unit/windows_service_spec.rb +116 -116
- data/tasks/cbgb.rb +84 -84
- data/tasks/external_tests.rb +64 -64
- data/tasks/maintainers.rb +210 -210
- data/tasks/rspec.rb +89 -89
- metadata +55 -464
@@ -1,127 +1,127 @@
|
|
1
|
-
#
|
2
|
-
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
-
# Copyright:: Copyright 2012-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/chef_fs"
|
20
|
-
require "pathname"
|
21
|
-
|
22
|
-
class Chef
|
23
|
-
module ChefFS
|
24
|
-
class PathUtils
|
25
|
-
|
26
|
-
# A Chef-FS path is a path in a chef-repository that can be used to address
|
27
|
-
# both files on a local file-system as well as objects on a chef server.
|
28
|
-
# These paths are stricter than file-system paths allowed on various OSes.
|
29
|
-
# Absolute Chef-FS paths begin with "/" (on windows, "\" is acceptable as well).
|
30
|
-
# "/" is used as the path element separator (on windows, "\" is acceptable as well).
|
31
|
-
# No directory/path element may contain a literal "\" character. Any such characters
|
32
|
-
# encountered are either dealt with as separators (on windows) or as escape
|
33
|
-
# characters (on POSIX systems). Relative Chef-FS paths may use ".." or "." but
|
34
|
-
# may never use these to back-out of the root of a Chef-FS path. Any such extraneous
|
35
|
-
# ".."s are ignored.
|
36
|
-
# Chef-FS paths are case sensitive (since the paths on the server are).
|
37
|
-
# On OSes with case insensitive paths, you may be unable to locally deal with two
|
38
|
-
# objects whose server paths only differ by case. OTOH, the case of path segments
|
39
|
-
# that are outside the Chef-FS root (such as when looking at a file-system absolute
|
40
|
-
# path to discover the Chef-FS root path) are handled in accordance to the rules
|
41
|
-
# of the local file-system and OS.
|
42
|
-
|
43
|
-
def self.join(*parts)
|
44
|
-
return "" if parts.length == 0
|
45
|
-
# Determine if it started with a slash
|
46
|
-
absolute = parts[0].length == 0 || parts[0].length > 0 && parts[0] =~ /^#{regexp_path_separator}/
|
47
|
-
# Remove leading and trailing slashes from each part so that the join will work (and the slash at the end will go away)
|
48
|
-
parts = parts.map { |part| part.gsub(/^#{regexp_path_separator}+|#{regexp_path_separator}+$/, "") }
|
49
|
-
# Don't join empty bits
|
50
|
-
result = parts.select { |part| part != "" }.join("/")
|
51
|
-
# Put the / back on
|
52
|
-
absolute ? "/#{result}" : result
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.split(path)
|
56
|
-
path.split(Regexp.new(regexp_path_separator))
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.regexp_path_separator
|
60
|
-
Chef::ChefFS.windows? ? '[\/\\\\]' : "/"
|
61
|
-
end
|
62
|
-
|
63
|
-
# Given a server path, determines if it is absolute.
|
64
|
-
def self.is_absolute?(path)
|
65
|
-
!!(path =~ /^#{regexp_path_separator}/)
|
66
|
-
end
|
67
|
-
|
68
|
-
# Given a path which may only be partly real (i.e. /x/y/z when only /x exists,
|
69
|
-
# or /x/y/*/blah when /x/y/z/blah exists), call File.realpath on the biggest
|
70
|
-
# part that actually exists. The paths operated on here are not Chef-FS paths.
|
71
|
-
# These are OS paths that may contain symlinks but may not also fully exist.
|
72
|
-
#
|
73
|
-
# If /x is a symlink to /blarghle, and has no subdirectories, then:
|
74
|
-
# PathUtils.realest_path('/x/y/z') == '/blarghle/y/z'
|
75
|
-
# PathUtils.realest_path('/x/*/z') == '/blarghle/*/z'
|
76
|
-
# PathUtils.realest_path('/*/y/z') == '/*/y/z'
|
77
|
-
#
|
78
|
-
# TODO: Move this to wherever util/path_helper is these days.
|
79
|
-
def self.realest_path(path, cwd = Dir.pwd)
|
80
|
-
path = File.expand_path(path, cwd)
|
81
|
-
parent_path = File.dirname(path)
|
82
|
-
suffix = []
|
83
|
-
|
84
|
-
# File.dirname happens to return the path as its own dirname if you're
|
85
|
-
# at the root (such as at \\foo\bar, C:\ or /)
|
86
|
-
until parent_path == path
|
87
|
-
# This can occur if a path such as "C:" is given. Ruby gives the parent as "C:."
|
88
|
-
# for reasons only it knows.
|
89
|
-
raise ArgumentError "Invalid path segment #{path}" if parent_path.length > path.length
|
90
|
-
begin
|
91
|
-
path = File.realpath(path)
|
92
|
-
break
|
93
|
-
rescue Errno::ENOENT
|
94
|
-
suffix << File.basename(path)
|
95
|
-
path = parent_path
|
96
|
-
parent_path = File.dirname(path)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
File.join(path, *suffix.reverse)
|
100
|
-
end
|
101
|
-
|
102
|
-
# Compares two path fragments according to the case-sentitivity of the host platform.
|
103
|
-
def self.os_path_eq?(left, right)
|
104
|
-
Chef::ChefFS.windows? ? left.casecmp(right) == 0 : left == right
|
105
|
-
end
|
106
|
-
|
107
|
-
# Given two general OS-dependent file paths, determines the relative path of the
|
108
|
-
# child with respect to the ancestor. Both child and ancestor must exist and be
|
109
|
-
# fully resolved - this is strictly a lexical comparison. No trailing slashes
|
110
|
-
# and other shenanigans are allowed.
|
111
|
-
#
|
112
|
-
# TODO: Move this to util/path_helper.
|
113
|
-
def self.descendant_path(path, ancestor)
|
114
|
-
candidate_fragment = path[0, ancestor.length]
|
115
|
-
return nil unless PathUtils.os_path_eq?(candidate_fragment, ancestor)
|
116
|
-
if ancestor.length == path.length
|
117
|
-
""
|
118
|
-
elsif path[ancestor.length, 1] =~ /#{PathUtils.regexp_path_separator}/
|
119
|
-
path[ancestor.length + 1..-1]
|
120
|
-
else
|
121
|
-
nil
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
+
# Copyright:: Copyright 2012-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/chef_fs"
|
20
|
+
require "pathname"
|
21
|
+
|
22
|
+
class Chef
|
23
|
+
module ChefFS
|
24
|
+
class PathUtils
|
25
|
+
|
26
|
+
# A Chef-FS path is a path in a chef-repository that can be used to address
|
27
|
+
# both files on a local file-system as well as objects on a chef server.
|
28
|
+
# These paths are stricter than file-system paths allowed on various OSes.
|
29
|
+
# Absolute Chef-FS paths begin with "/" (on windows, "\" is acceptable as well).
|
30
|
+
# "/" is used as the path element separator (on windows, "\" is acceptable as well).
|
31
|
+
# No directory/path element may contain a literal "\" character. Any such characters
|
32
|
+
# encountered are either dealt with as separators (on windows) or as escape
|
33
|
+
# characters (on POSIX systems). Relative Chef-FS paths may use ".." or "." but
|
34
|
+
# may never use these to back-out of the root of a Chef-FS path. Any such extraneous
|
35
|
+
# ".."s are ignored.
|
36
|
+
# Chef-FS paths are case sensitive (since the paths on the server are).
|
37
|
+
# On OSes with case insensitive paths, you may be unable to locally deal with two
|
38
|
+
# objects whose server paths only differ by case. OTOH, the case of path segments
|
39
|
+
# that are outside the Chef-FS root (such as when looking at a file-system absolute
|
40
|
+
# path to discover the Chef-FS root path) are handled in accordance to the rules
|
41
|
+
# of the local file-system and OS.
|
42
|
+
|
43
|
+
def self.join(*parts)
|
44
|
+
return "" if parts.length == 0
|
45
|
+
# Determine if it started with a slash
|
46
|
+
absolute = parts[0].length == 0 || parts[0].length > 0 && parts[0] =~ /^#{regexp_path_separator}/
|
47
|
+
# Remove leading and trailing slashes from each part so that the join will work (and the slash at the end will go away)
|
48
|
+
parts = parts.map { |part| part.gsub(/^#{regexp_path_separator}+|#{regexp_path_separator}+$/, "") }
|
49
|
+
# Don't join empty bits
|
50
|
+
result = parts.select { |part| part != "" }.join("/")
|
51
|
+
# Put the / back on
|
52
|
+
absolute ? "/#{result}" : result
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.split(path)
|
56
|
+
path.split(Regexp.new(regexp_path_separator))
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.regexp_path_separator
|
60
|
+
Chef::ChefFS.windows? ? '[\/\\\\]' : "/"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Given a server path, determines if it is absolute.
|
64
|
+
def self.is_absolute?(path)
|
65
|
+
!!(path =~ /^#{regexp_path_separator}/)
|
66
|
+
end
|
67
|
+
|
68
|
+
# Given a path which may only be partly real (i.e. /x/y/z when only /x exists,
|
69
|
+
# or /x/y/*/blah when /x/y/z/blah exists), call File.realpath on the biggest
|
70
|
+
# part that actually exists. The paths operated on here are not Chef-FS paths.
|
71
|
+
# These are OS paths that may contain symlinks but may not also fully exist.
|
72
|
+
#
|
73
|
+
# If /x is a symlink to /blarghle, and has no subdirectories, then:
|
74
|
+
# PathUtils.realest_path('/x/y/z') == '/blarghle/y/z'
|
75
|
+
# PathUtils.realest_path('/x/*/z') == '/blarghle/*/z'
|
76
|
+
# PathUtils.realest_path('/*/y/z') == '/*/y/z'
|
77
|
+
#
|
78
|
+
# TODO: Move this to wherever util/path_helper is these days.
|
79
|
+
def self.realest_path(path, cwd = Dir.pwd)
|
80
|
+
path = File.expand_path(path, cwd)
|
81
|
+
parent_path = File.dirname(path)
|
82
|
+
suffix = []
|
83
|
+
|
84
|
+
# File.dirname happens to return the path as its own dirname if you're
|
85
|
+
# at the root (such as at \\foo\bar, C:\ or /)
|
86
|
+
until parent_path == path
|
87
|
+
# This can occur if a path such as "C:" is given. Ruby gives the parent as "C:."
|
88
|
+
# for reasons only it knows.
|
89
|
+
raise ArgumentError "Invalid path segment #{path}" if parent_path.length > path.length
|
90
|
+
begin
|
91
|
+
path = File.realpath(path)
|
92
|
+
break
|
93
|
+
rescue Errno::ENOENT
|
94
|
+
suffix << File.basename(path)
|
95
|
+
path = parent_path
|
96
|
+
parent_path = File.dirname(path)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
File.join(path, *suffix.reverse)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Compares two path fragments according to the case-sentitivity of the host platform.
|
103
|
+
def self.os_path_eq?(left, right)
|
104
|
+
Chef::ChefFS.windows? ? left.casecmp(right) == 0 : left == right
|
105
|
+
end
|
106
|
+
|
107
|
+
# Given two general OS-dependent file paths, determines the relative path of the
|
108
|
+
# child with respect to the ancestor. Both child and ancestor must exist and be
|
109
|
+
# fully resolved - this is strictly a lexical comparison. No trailing slashes
|
110
|
+
# and other shenanigans are allowed.
|
111
|
+
#
|
112
|
+
# TODO: Move this to util/path_helper.
|
113
|
+
def self.descendant_path(path, ancestor)
|
114
|
+
candidate_fragment = path[0, ancestor.length]
|
115
|
+
return nil unless PathUtils.os_path_eq?(candidate_fragment, ancestor)
|
116
|
+
if ancestor.length == path.length
|
117
|
+
""
|
118
|
+
elsif path[ancestor.length, 1] =~ /#{PathUtils.regexp_path_separator}/
|
119
|
+
path[ancestor.length + 1..-1]
|
120
|
+
else
|
121
|
+
nil
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
data/lib/chef/client.rb
CHANGED
@@ -1,967 +1,966 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Author:: Christopher Walters (<cw@chef.io>)
|
4
|
-
# Author:: Christopher Brown (<cb@chef.io>)
|
5
|
-
# Author:: Tim Hinderliter (<tim@chef.io>)
|
6
|
-
# Copyright:: Copyright 2008-2016, Chef Software, Inc.
|
7
|
-
# License:: Apache License, Version 2.0
|
8
|
-
#
|
9
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
-
# you may not use this file except in compliance with the License.
|
11
|
-
# You may obtain a copy of the License at
|
12
|
-
#
|
13
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
-
#
|
15
|
-
# Unless required by applicable law or agreed to in writing, software
|
16
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
-
# See the License for the specific language governing permissions and
|
19
|
-
# limitations under the License.
|
20
|
-
|
21
|
-
require "chef/config"
|
22
|
-
require "chef/mixin/params_validate"
|
23
|
-
require "chef/mixin/path_sanity"
|
24
|
-
require "chef/log"
|
25
|
-
require "chef/server_api"
|
26
|
-
require "chef/api_client"
|
27
|
-
require "chef/api_client/registration"
|
28
|
-
require "chef/audit/runner"
|
29
|
-
require "chef/node"
|
30
|
-
require "chef/role"
|
31
|
-
require "chef/file_cache"
|
32
|
-
require "chef/run_context"
|
33
|
-
require "chef/runner"
|
34
|
-
require "chef/run_status"
|
35
|
-
require "chef/cookbook/cookbook_collection"
|
36
|
-
require "chef/cookbook/file_vendor"
|
37
|
-
require "chef/cookbook/file_system_file_vendor"
|
38
|
-
require "chef/cookbook/remote_file_vendor"
|
39
|
-
require "chef/event_dispatch/dispatcher"
|
40
|
-
require "chef/event_loggers/base"
|
41
|
-
require "chef/event_loggers/windows_eventlog"
|
42
|
-
require "chef/exceptions"
|
43
|
-
require "chef/formatters/base"
|
44
|
-
require "chef/formatters/doc"
|
45
|
-
require "chef/formatters/minimal"
|
46
|
-
require "chef/version"
|
47
|
-
require "chef/resource_reporter"
|
48
|
-
require "chef/audit/audit_reporter"
|
49
|
-
require "chef/run_lock"
|
50
|
-
require "chef/policy_builder"
|
51
|
-
require "chef/request_id"
|
52
|
-
require "chef/platform/rebooter"
|
53
|
-
require "chef/mixin/deprecation"
|
54
|
-
require "ohai"
|
55
|
-
require "rbconfig"
|
56
|
-
|
57
|
-
class Chef
|
58
|
-
# == Chef::Client
|
59
|
-
# The main object in a Chef run. Preps a Chef::Node and Chef::RunContext,
|
60
|
-
# syncs cookbooks if necessary, and triggers convergence.
|
61
|
-
class Client
|
62
|
-
include Chef::Mixin::PathSanity
|
63
|
-
|
64
|
-
extend Chef::Mixin::Deprecation
|
65
|
-
|
66
|
-
#
|
67
|
-
# The status of the Chef run.
|
68
|
-
#
|
69
|
-
# @return [Chef::RunStatus]
|
70
|
-
#
|
71
|
-
attr_reader :run_status
|
72
|
-
|
73
|
-
#
|
74
|
-
# The node represented by this client.
|
75
|
-
#
|
76
|
-
# @return [Chef::Node]
|
77
|
-
#
|
78
|
-
def node
|
79
|
-
run_status.node
|
80
|
-
end
|
81
|
-
|
82
|
-
def node=(value)
|
83
|
-
run_status.node = value
|
84
|
-
end
|
85
|
-
|
86
|
-
#
|
87
|
-
# The ohai system used by this client.
|
88
|
-
#
|
89
|
-
# @return [Ohai::System]
|
90
|
-
#
|
91
|
-
attr_reader :ohai
|
92
|
-
|
93
|
-
#
|
94
|
-
# The rest object used to communicate with the Chef server.
|
95
|
-
#
|
96
|
-
# @return [Chef::ServerAPI]
|
97
|
-
#
|
98
|
-
attr_reader :rest
|
99
|
-
|
100
|
-
#
|
101
|
-
# A rest object with validate_utf8 set to false. This will not throw exceptions
|
102
|
-
# on non-UTF8 strings in JSON but will sanitize them so that e.g. POSTs will
|
103
|
-
# never fail. Cannot be configured on a request-by-request basis, so we carry
|
104
|
-
# around another rest object for it.
|
105
|
-
#
|
106
|
-
attr_reader :rest_clean
|
107
|
-
|
108
|
-
#
|
109
|
-
# The runner used to converge.
|
110
|
-
#
|
111
|
-
# @return [Chef::Runner]
|
112
|
-
#
|
113
|
-
attr_accessor :runner
|
114
|
-
|
115
|
-
#
|
116
|
-
# Extra node attributes that were applied to the node.
|
117
|
-
#
|
118
|
-
# @return [Hash]
|
119
|
-
#
|
120
|
-
attr_reader :json_attribs
|
121
|
-
|
122
|
-
#
|
123
|
-
# The event dispatcher for the Chef run, including any configured output
|
124
|
-
# formatters and event loggers.
|
125
|
-
#
|
126
|
-
# @return [EventDispatch::Dispatcher]
|
127
|
-
#
|
128
|
-
# @see Chef::Formatters
|
129
|
-
# @see Chef::Config#formatters
|
130
|
-
# @see Chef::Config#stdout
|
131
|
-
# @see Chef::Config#stderr
|
132
|
-
# @see Chef::Config#force_logger
|
133
|
-
# @see Chef::Config#force_formatter
|
134
|
-
# TODO add stdout, stderr, and default formatters to Chef::Config so the
|
135
|
-
# defaults aren't calculated here. Remove force_logger and force_formatter
|
136
|
-
# from this code.
|
137
|
-
# @see Chef::EventLoggers
|
138
|
-
# @see Chef::Config#disable_event_logger
|
139
|
-
# @see Chef::Config#event_loggers
|
140
|
-
# @see Chef::Config#event_handlers
|
141
|
-
#
|
142
|
-
attr_reader :events
|
143
|
-
|
144
|
-
#
|
145
|
-
# Creates a new Chef::Client.
|
146
|
-
#
|
147
|
-
# @param json_attribs [Hash] Node attributes to layer into the node when it is
|
148
|
-
# fetched.
|
149
|
-
# @param args [Hash] Options:
|
150
|
-
# @option args [Array<RunList::RunListItem>] :override_runlist A runlist to
|
151
|
-
# use instead of the node's embedded run list.
|
152
|
-
# @option args [Array<String>] :specific_recipes A list of recipe file paths
|
153
|
-
# to load after the run list has been loaded.
|
154
|
-
#
|
155
|
-
def initialize(json_attribs = nil, args = {})
|
156
|
-
@json_attribs = json_attribs || {}
|
157
|
-
@ohai = Ohai::System.new
|
158
|
-
|
159
|
-
event_handlers = configure_formatters + configure_event_loggers
|
160
|
-
event_handlers += Array(Chef::Config[:event_handlers])
|
161
|
-
|
162
|
-
@events = EventDispatch::Dispatcher.new(*event_handlers)
|
163
|
-
# TODO it seems like a bad idea to be deletin' other peoples' hashes.
|
164
|
-
@override_runlist = args.delete(:override_runlist)
|
165
|
-
@specific_recipes = args.delete(:specific_recipes)
|
166
|
-
@run_status = Chef::RunStatus.new(nil, events)
|
167
|
-
|
168
|
-
if new_runlist = args.delete(:runlist)
|
169
|
-
@json_attribs["run_list"] = new_runlist
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
#
|
174
|
-
# Do a full run for this Chef::Client.
|
175
|
-
#
|
176
|
-
# Locks the run while doing its job.
|
177
|
-
#
|
178
|
-
# Fires run_start before doing anything and fires run_completed or
|
179
|
-
# run_failed when finished. Also notifies client listeners of run_started
|
180
|
-
# at the beginning of Compile, and run_completed_successfully or run_failed
|
181
|
-
# when all is complete.
|
182
|
-
#
|
183
|
-
# Phase 1: Setup
|
184
|
-
# --------------
|
185
|
-
# Gets information about the system and the run we are doing.
|
186
|
-
#
|
187
|
-
# 1. Run ohai to collect system information.
|
188
|
-
# 2. Register / connect to the Chef server (unless in solo mode).
|
189
|
-
# 3. Retrieve the node (or create a new one).
|
190
|
-
# 4. Merge in json_attribs, Chef::Config.environment, and override_run_list.
|
191
|
-
#
|
192
|
-
# @see #run_ohai
|
193
|
-
# @see #load_node
|
194
|
-
# @see #build_node
|
195
|
-
# @see Chef::Config#lockfile
|
196
|
-
# @see Chef::RunLock#acquire
|
197
|
-
#
|
198
|
-
# Phase 2: Compile
|
199
|
-
# ----------------
|
200
|
-
# Decides *what* we plan to converge by compiling recipes.
|
201
|
-
#
|
202
|
-
# 1. Sync required cookbooks to the local cache.
|
203
|
-
# 2. Load libraries from all cookbooks.
|
204
|
-
# 3. Load attributes from all cookbooks.
|
205
|
-
# 4. Load LWRPs from all cookbooks.
|
206
|
-
# 5. Load resource definitions from all cookbooks.
|
207
|
-
# 6. Load recipes in the run list.
|
208
|
-
# 7. Load recipes from the command line.
|
209
|
-
#
|
210
|
-
# @see #setup_run_context Syncs and compiles cookbooks.
|
211
|
-
# @see Chef::CookbookCompiler#compile
|
212
|
-
#
|
213
|
-
# Phase 3: Converge
|
214
|
-
# -----------------
|
215
|
-
# Brings the system up to date.
|
216
|
-
#
|
217
|
-
# 1. Converge the resources built from recipes in Phase 2.
|
218
|
-
# 2. Save the node.
|
219
|
-
# 3. Reboot if we were asked to.
|
220
|
-
#
|
221
|
-
# @see #converge_and_save
|
222
|
-
# @see Chef::Runner
|
223
|
-
#
|
224
|
-
# Phase 4: Audit
|
225
|
-
# --------------
|
226
|
-
# Runs 'control_group' audits in recipes. This entire section can be enabled or disabled with config.
|
227
|
-
#
|
228
|
-
# 1. 'control_group' DSL collects audits during Phase 2
|
229
|
-
# 2. Audits are run using RSpec
|
230
|
-
# 3. Errors are collected and reported using the formatters
|
231
|
-
#
|
232
|
-
# @see #run_audits
|
233
|
-
# @see Chef::Audit::Runner#run
|
234
|
-
#
|
235
|
-
# @raise [Chef::Exceptions::RunFailedWrappingError] If converge or audit failed.
|
236
|
-
#
|
237
|
-
# @see Chef::Config#enforce_path_sanity
|
238
|
-
# @see Chef::Config#solo
|
239
|
-
# @see Chef::Config#audit_mode
|
240
|
-
#
|
241
|
-
# @return Always returns true.
|
242
|
-
#
|
243
|
-
def run
|
244
|
-
start_profiling
|
245
|
-
|
246
|
-
run_error = nil
|
247
|
-
|
248
|
-
runlock = RunLock.new(Chef::Config.lockfile)
|
249
|
-
# TODO feels like acquire should have its own block arg for this
|
250
|
-
runlock.acquire
|
251
|
-
# don't add code that may fail before entering this section to be sure to release lock
|
252
|
-
begin
|
253
|
-
runlock.save_pid
|
254
|
-
|
255
|
-
request_id = Chef::RequestID.instance.request_id
|
256
|
-
run_context = nil
|
257
|
-
events.run_start(Chef::VERSION)
|
258
|
-
Chef::Log.info("*** Chef #{Chef::VERSION} ***")
|
259
|
-
Chef::Log.info
|
260
|
-
Chef::Log.
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
run_status.
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
run_status.
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
@run_status = nil
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
#
|
322
|
-
#
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
e
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
#
|
345
|
-
#
|
346
|
-
#
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
io =
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
#
|
398
|
-
#
|
399
|
-
#
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
#
|
408
|
-
#
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
Chef::
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
#
|
420
|
-
#
|
421
|
-
#
|
422
|
-
#
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
#
|
432
|
-
#
|
433
|
-
#
|
434
|
-
#
|
435
|
-
|
436
|
-
|
437
|
-
success_handlers
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
#
|
444
|
-
#
|
445
|
-
#
|
446
|
-
#
|
447
|
-
|
448
|
-
|
449
|
-
failure_handlers
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
#
|
456
|
-
#
|
457
|
-
#
|
458
|
-
#
|
459
|
-
#
|
460
|
-
#
|
461
|
-
#
|
462
|
-
#
|
463
|
-
#
|
464
|
-
|
465
|
-
|
466
|
-
policy_builder.
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
#
|
473
|
-
#
|
474
|
-
#
|
475
|
-
#
|
476
|
-
#
|
477
|
-
#
|
478
|
-
#
|
479
|
-
#
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
#
|
488
|
-
#
|
489
|
-
#
|
490
|
-
#
|
491
|
-
#
|
492
|
-
#
|
493
|
-
#
|
494
|
-
#
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
#
|
501
|
-
#
|
502
|
-
#
|
503
|
-
#
|
504
|
-
#
|
505
|
-
#
|
506
|
-
#
|
507
|
-
|
508
|
-
|
509
|
-
run_context
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
#
|
516
|
-
#
|
517
|
-
#
|
518
|
-
#
|
519
|
-
#
|
520
|
-
#
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
#
|
527
|
-
#
|
528
|
-
#
|
529
|
-
#
|
530
|
-
#
|
531
|
-
# @see Chef::
|
532
|
-
#
|
533
|
-
#
|
534
|
-
#
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
#
|
548
|
-
#
|
549
|
-
#
|
550
|
-
#
|
551
|
-
#
|
552
|
-
# @see Chef::
|
553
|
-
#
|
554
|
-
#
|
555
|
-
#
|
556
|
-
|
557
|
-
|
558
|
-
filter
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
#
|
564
|
-
#
|
565
|
-
#
|
566
|
-
#
|
567
|
-
# -
|
568
|
-
# - ohai[:
|
569
|
-
# - ohai[:
|
570
|
-
#
|
571
|
-
#
|
572
|
-
#
|
573
|
-
#
|
574
|
-
#
|
575
|
-
#
|
576
|
-
#
|
577
|
-
#
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
#
|
589
|
-
#
|
590
|
-
#
|
591
|
-
#
|
592
|
-
#
|
593
|
-
#
|
594
|
-
#
|
595
|
-
#
|
596
|
-
#
|
597
|
-
#
|
598
|
-
#
|
599
|
-
# @see Chef::Config#
|
600
|
-
# @see Chef::
|
601
|
-
# @see Chef::
|
602
|
-
# @see Chef::EventDispatcher#
|
603
|
-
# @see Chef::EventDispatcher#
|
604
|
-
# @see Chef::EventDispatcher#
|
605
|
-
#
|
606
|
-
#
|
607
|
-
#
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
Chef::
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
#
|
630
|
-
#
|
631
|
-
#
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
#
|
638
|
-
#
|
639
|
-
#
|
640
|
-
#
|
641
|
-
#
|
642
|
-
#
|
643
|
-
#
|
644
|
-
#
|
645
|
-
#
|
646
|
-
#
|
647
|
-
#
|
648
|
-
#
|
649
|
-
#
|
650
|
-
#
|
651
|
-
#
|
652
|
-
#
|
653
|
-
# @see Chef::
|
654
|
-
# @see Chef::
|
655
|
-
# @see Chef::EventDispatch#
|
656
|
-
# @see Chef::EventDispatch#
|
657
|
-
#
|
658
|
-
#
|
659
|
-
#
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
Chef::
|
667
|
-
@runner
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
#
|
680
|
-
#
|
681
|
-
#
|
682
|
-
#
|
683
|
-
#
|
684
|
-
#
|
685
|
-
#
|
686
|
-
#
|
687
|
-
#
|
688
|
-
#
|
689
|
-
#
|
690
|
-
# @see #
|
691
|
-
# @see #
|
692
|
-
#
|
693
|
-
#
|
694
|
-
#
|
695
|
-
#
|
696
|
-
#
|
697
|
-
#
|
698
|
-
#
|
699
|
-
#
|
700
|
-
|
701
|
-
|
702
|
-
converge_exception
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
#
|
715
|
-
#
|
716
|
-
#
|
717
|
-
#
|
718
|
-
#
|
719
|
-
#
|
720
|
-
#
|
721
|
-
#
|
722
|
-
#
|
723
|
-
#
|
724
|
-
# @see Chef::
|
725
|
-
# @see Chef::EventDispatch#
|
726
|
-
# @see Chef::EventDispatch#
|
727
|
-
#
|
728
|
-
#
|
729
|
-
#
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
Chef::
|
735
|
-
auditor
|
736
|
-
auditor.
|
737
|
-
|
738
|
-
audit_exception
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
Chef::
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
#
|
752
|
-
#
|
753
|
-
#
|
754
|
-
#
|
755
|
-
#
|
756
|
-
#
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
#
|
763
|
-
#
|
764
|
-
#
|
765
|
-
#
|
766
|
-
#
|
767
|
-
#
|
768
|
-
#
|
769
|
-
#
|
770
|
-
# @see Chef::
|
771
|
-
#
|
772
|
-
#
|
773
|
-
#
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
Chef::Log.fatal(
|
783
|
-
Chef::
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
#
|
797
|
-
#
|
798
|
-
#
|
799
|
-
# @
|
800
|
-
#
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
#
|
807
|
-
#
|
808
|
-
#
|
809
|
-
# @
|
810
|
-
#
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
#
|
817
|
-
#
|
818
|
-
#
|
819
|
-
# @
|
820
|
-
#
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
#
|
827
|
-
#
|
828
|
-
#
|
829
|
-
#
|
830
|
-
#
|
831
|
-
#
|
832
|
-
|
833
|
-
|
834
|
-
@
|
835
|
-
@
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
#
|
840
|
-
#
|
841
|
-
|
842
|
-
|
843
|
-
#
|
844
|
-
#
|
845
|
-
#
|
846
|
-
#
|
847
|
-
#
|
848
|
-
#
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
#
|
855
|
-
#
|
856
|
-
#
|
857
|
-
#
|
858
|
-
#
|
859
|
-
#
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
#
|
866
|
-
#
|
867
|
-
#
|
868
|
-
#
|
869
|
-
#
|
870
|
-
#
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
#
|
878
|
-
#
|
879
|
-
#
|
880
|
-
#
|
881
|
-
#
|
882
|
-
#
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
#
|
887
|
-
#
|
888
|
-
#
|
889
|
-
#
|
890
|
-
#
|
891
|
-
#
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
#
|
896
|
-
#
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
deprecated_attr_writer :
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
attr_reader :
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
path
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
#
|
942
|
-
#
|
943
|
-
|
944
|
-
cookbook_paths
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
Chef::
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
require "chef/
|
966
|
-
require "chef/
|
967
|
-
require "chef/cookbook/synchronizer"
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
+
# Author:: Christopher Walters (<cw@chef.io>)
|
4
|
+
# Author:: Christopher Brown (<cb@chef.io>)
|
5
|
+
# Author:: Tim Hinderliter (<tim@chef.io>)
|
6
|
+
# Copyright:: Copyright 2008-2016, Chef Software, Inc.
|
7
|
+
# License:: Apache License, Version 2.0
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
|
21
|
+
require "chef/config"
|
22
|
+
require "chef/mixin/params_validate"
|
23
|
+
require "chef/mixin/path_sanity"
|
24
|
+
require "chef/log"
|
25
|
+
require "chef/server_api"
|
26
|
+
require "chef/api_client"
|
27
|
+
require "chef/api_client/registration"
|
28
|
+
require "chef/audit/runner"
|
29
|
+
require "chef/node"
|
30
|
+
require "chef/role"
|
31
|
+
require "chef/file_cache"
|
32
|
+
require "chef/run_context"
|
33
|
+
require "chef/runner"
|
34
|
+
require "chef/run_status"
|
35
|
+
require "chef/cookbook/cookbook_collection"
|
36
|
+
require "chef/cookbook/file_vendor"
|
37
|
+
require "chef/cookbook/file_system_file_vendor"
|
38
|
+
require "chef/cookbook/remote_file_vendor"
|
39
|
+
require "chef/event_dispatch/dispatcher"
|
40
|
+
require "chef/event_loggers/base"
|
41
|
+
require "chef/event_loggers/windows_eventlog"
|
42
|
+
require "chef/exceptions"
|
43
|
+
require "chef/formatters/base"
|
44
|
+
require "chef/formatters/doc"
|
45
|
+
require "chef/formatters/minimal"
|
46
|
+
require "chef/version"
|
47
|
+
require "chef/resource_reporter"
|
48
|
+
require "chef/audit/audit_reporter"
|
49
|
+
require "chef/run_lock"
|
50
|
+
require "chef/policy_builder"
|
51
|
+
require "chef/request_id"
|
52
|
+
require "chef/platform/rebooter"
|
53
|
+
require "chef/mixin/deprecation"
|
54
|
+
require "ohai"
|
55
|
+
require "rbconfig"
|
56
|
+
|
57
|
+
class Chef
|
58
|
+
# == Chef::Client
|
59
|
+
# The main object in a Chef run. Preps a Chef::Node and Chef::RunContext,
|
60
|
+
# syncs cookbooks if necessary, and triggers convergence.
|
61
|
+
class Client
|
62
|
+
include Chef::Mixin::PathSanity
|
63
|
+
|
64
|
+
extend Chef::Mixin::Deprecation
|
65
|
+
|
66
|
+
#
|
67
|
+
# The status of the Chef run.
|
68
|
+
#
|
69
|
+
# @return [Chef::RunStatus]
|
70
|
+
#
|
71
|
+
attr_reader :run_status
|
72
|
+
|
73
|
+
#
|
74
|
+
# The node represented by this client.
|
75
|
+
#
|
76
|
+
# @return [Chef::Node]
|
77
|
+
#
|
78
|
+
def node
|
79
|
+
run_status.node
|
80
|
+
end
|
81
|
+
|
82
|
+
def node=(value)
|
83
|
+
run_status.node = value
|
84
|
+
end
|
85
|
+
|
86
|
+
#
|
87
|
+
# The ohai system used by this client.
|
88
|
+
#
|
89
|
+
# @return [Ohai::System]
|
90
|
+
#
|
91
|
+
attr_reader :ohai
|
92
|
+
|
93
|
+
#
|
94
|
+
# The rest object used to communicate with the Chef server.
|
95
|
+
#
|
96
|
+
# @return [Chef::ServerAPI]
|
97
|
+
#
|
98
|
+
attr_reader :rest
|
99
|
+
|
100
|
+
#
|
101
|
+
# A rest object with validate_utf8 set to false. This will not throw exceptions
|
102
|
+
# on non-UTF8 strings in JSON but will sanitize them so that e.g. POSTs will
|
103
|
+
# never fail. Cannot be configured on a request-by-request basis, so we carry
|
104
|
+
# around another rest object for it.
|
105
|
+
#
|
106
|
+
attr_reader :rest_clean
|
107
|
+
|
108
|
+
#
|
109
|
+
# The runner used to converge.
|
110
|
+
#
|
111
|
+
# @return [Chef::Runner]
|
112
|
+
#
|
113
|
+
attr_accessor :runner
|
114
|
+
|
115
|
+
#
|
116
|
+
# Extra node attributes that were applied to the node.
|
117
|
+
#
|
118
|
+
# @return [Hash]
|
119
|
+
#
|
120
|
+
attr_reader :json_attribs
|
121
|
+
|
122
|
+
#
|
123
|
+
# The event dispatcher for the Chef run, including any configured output
|
124
|
+
# formatters and event loggers.
|
125
|
+
#
|
126
|
+
# @return [EventDispatch::Dispatcher]
|
127
|
+
#
|
128
|
+
# @see Chef::Formatters
|
129
|
+
# @see Chef::Config#formatters
|
130
|
+
# @see Chef::Config#stdout
|
131
|
+
# @see Chef::Config#stderr
|
132
|
+
# @see Chef::Config#force_logger
|
133
|
+
# @see Chef::Config#force_formatter
|
134
|
+
# TODO add stdout, stderr, and default formatters to Chef::Config so the
|
135
|
+
# defaults aren't calculated here. Remove force_logger and force_formatter
|
136
|
+
# from this code.
|
137
|
+
# @see Chef::EventLoggers
|
138
|
+
# @see Chef::Config#disable_event_logger
|
139
|
+
# @see Chef::Config#event_loggers
|
140
|
+
# @see Chef::Config#event_handlers
|
141
|
+
#
|
142
|
+
attr_reader :events
|
143
|
+
|
144
|
+
#
|
145
|
+
# Creates a new Chef::Client.
|
146
|
+
#
|
147
|
+
# @param json_attribs [Hash] Node attributes to layer into the node when it is
|
148
|
+
# fetched.
|
149
|
+
# @param args [Hash] Options:
|
150
|
+
# @option args [Array<RunList::RunListItem>] :override_runlist A runlist to
|
151
|
+
# use instead of the node's embedded run list.
|
152
|
+
# @option args [Array<String>] :specific_recipes A list of recipe file paths
|
153
|
+
# to load after the run list has been loaded.
|
154
|
+
#
|
155
|
+
def initialize(json_attribs = nil, args = {})
|
156
|
+
@json_attribs = json_attribs || {}
|
157
|
+
@ohai = Ohai::System.new
|
158
|
+
|
159
|
+
event_handlers = configure_formatters + configure_event_loggers
|
160
|
+
event_handlers += Array(Chef::Config[:event_handlers])
|
161
|
+
|
162
|
+
@events = EventDispatch::Dispatcher.new(*event_handlers)
|
163
|
+
# TODO it seems like a bad idea to be deletin' other peoples' hashes.
|
164
|
+
@override_runlist = args.delete(:override_runlist)
|
165
|
+
@specific_recipes = args.delete(:specific_recipes)
|
166
|
+
@run_status = Chef::RunStatus.new(nil, events)
|
167
|
+
|
168
|
+
if new_runlist = args.delete(:runlist)
|
169
|
+
@json_attribs["run_list"] = new_runlist
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
#
|
174
|
+
# Do a full run for this Chef::Client.
|
175
|
+
#
|
176
|
+
# Locks the run while doing its job.
|
177
|
+
#
|
178
|
+
# Fires run_start before doing anything and fires run_completed or
|
179
|
+
# run_failed when finished. Also notifies client listeners of run_started
|
180
|
+
# at the beginning of Compile, and run_completed_successfully or run_failed
|
181
|
+
# when all is complete.
|
182
|
+
#
|
183
|
+
# Phase 1: Setup
|
184
|
+
# --------------
|
185
|
+
# Gets information about the system and the run we are doing.
|
186
|
+
#
|
187
|
+
# 1. Run ohai to collect system information.
|
188
|
+
# 2. Register / connect to the Chef server (unless in solo mode).
|
189
|
+
# 3. Retrieve the node (or create a new one).
|
190
|
+
# 4. Merge in json_attribs, Chef::Config.environment, and override_run_list.
|
191
|
+
#
|
192
|
+
# @see #run_ohai
|
193
|
+
# @see #load_node
|
194
|
+
# @see #build_node
|
195
|
+
# @see Chef::Config#lockfile
|
196
|
+
# @see Chef::RunLock#acquire
|
197
|
+
#
|
198
|
+
# Phase 2: Compile
|
199
|
+
# ----------------
|
200
|
+
# Decides *what* we plan to converge by compiling recipes.
|
201
|
+
#
|
202
|
+
# 1. Sync required cookbooks to the local cache.
|
203
|
+
# 2. Load libraries from all cookbooks.
|
204
|
+
# 3. Load attributes from all cookbooks.
|
205
|
+
# 4. Load LWRPs from all cookbooks.
|
206
|
+
# 5. Load resource definitions from all cookbooks.
|
207
|
+
# 6. Load recipes in the run list.
|
208
|
+
# 7. Load recipes from the command line.
|
209
|
+
#
|
210
|
+
# @see #setup_run_context Syncs and compiles cookbooks.
|
211
|
+
# @see Chef::CookbookCompiler#compile
|
212
|
+
#
|
213
|
+
# Phase 3: Converge
|
214
|
+
# -----------------
|
215
|
+
# Brings the system up to date.
|
216
|
+
#
|
217
|
+
# 1. Converge the resources built from recipes in Phase 2.
|
218
|
+
# 2. Save the node.
|
219
|
+
# 3. Reboot if we were asked to.
|
220
|
+
#
|
221
|
+
# @see #converge_and_save
|
222
|
+
# @see Chef::Runner
|
223
|
+
#
|
224
|
+
# Phase 4: Audit
|
225
|
+
# --------------
|
226
|
+
# Runs 'control_group' audits in recipes. This entire section can be enabled or disabled with config.
|
227
|
+
#
|
228
|
+
# 1. 'control_group' DSL collects audits during Phase 2
|
229
|
+
# 2. Audits are run using RSpec
|
230
|
+
# 3. Errors are collected and reported using the formatters
|
231
|
+
#
|
232
|
+
# @see #run_audits
|
233
|
+
# @see Chef::Audit::Runner#run
|
234
|
+
#
|
235
|
+
# @raise [Chef::Exceptions::RunFailedWrappingError] If converge or audit failed.
|
236
|
+
#
|
237
|
+
# @see Chef::Config#enforce_path_sanity
|
238
|
+
# @see Chef::Config#solo
|
239
|
+
# @see Chef::Config#audit_mode
|
240
|
+
#
|
241
|
+
# @return Always returns true.
|
242
|
+
#
|
243
|
+
def run
|
244
|
+
start_profiling
|
245
|
+
|
246
|
+
run_error = nil
|
247
|
+
|
248
|
+
runlock = RunLock.new(Chef::Config.lockfile)
|
249
|
+
# TODO feels like acquire should have its own block arg for this
|
250
|
+
runlock.acquire
|
251
|
+
# don't add code that may fail before entering this section to be sure to release lock
|
252
|
+
begin
|
253
|
+
runlock.save_pid
|
254
|
+
|
255
|
+
request_id = Chef::RequestID.instance.request_id
|
256
|
+
run_context = nil
|
257
|
+
events.run_start(Chef::VERSION)
|
258
|
+
Chef::Log.info("*** Chef #{Chef::VERSION} ***")
|
259
|
+
Chef::Log.info("Platform: #{RUBY_PLATFORM}")
|
260
|
+
Chef::Log.info "Chef-client pid: #{Process.pid}"
|
261
|
+
Chef::Log.debug("Chef-client request_id: #{request_id}")
|
262
|
+
enforce_path_sanity
|
263
|
+
run_ohai
|
264
|
+
|
265
|
+
register unless Chef::Config[:solo]
|
266
|
+
|
267
|
+
load_node
|
268
|
+
|
269
|
+
build_node
|
270
|
+
|
271
|
+
run_status.run_id = request_id
|
272
|
+
run_status.start_clock
|
273
|
+
Chef::Log.info("Starting Chef Run for #{node.name}")
|
274
|
+
run_started
|
275
|
+
|
276
|
+
do_windows_admin_check
|
277
|
+
|
278
|
+
run_context = setup_run_context
|
279
|
+
|
280
|
+
if Chef::Config[:audit_mode] != :audit_only
|
281
|
+
converge_error = converge_and_save(run_context)
|
282
|
+
end
|
283
|
+
|
284
|
+
if Chef::Config[:why_run] == true
|
285
|
+
# why_run should probably be renamed to why_converge
|
286
|
+
Chef::Log.debug("Not running controls in 'why-run' mode - this mode is used to see potential converge changes")
|
287
|
+
elsif Chef::Config[:audit_mode] != :disabled
|
288
|
+
audit_error = run_audits(run_context)
|
289
|
+
end
|
290
|
+
|
291
|
+
# Raise converge_error so run_failed reporters/events are processed.
|
292
|
+
raise converge_error if converge_error
|
293
|
+
|
294
|
+
run_status.stop_clock
|
295
|
+
Chef::Log.info("Chef Run complete in #{run_status.elapsed_time} seconds")
|
296
|
+
run_completed_successfully
|
297
|
+
events.run_completed(node)
|
298
|
+
|
299
|
+
# keep this inside the main loop to get exception backtraces
|
300
|
+
end_profiling
|
301
|
+
|
302
|
+
# rebooting has to be the last thing we do, no exceptions.
|
303
|
+
Chef::Platform::Rebooter.reboot_if_needed!(node)
|
304
|
+
rescue Exception => run_error
|
305
|
+
# CHEF-3336: Send the error first in case something goes wrong below and we don't know why
|
306
|
+
Chef::Log.debug("Re-raising exception: #{run_error.class} - #{run_error.message}\n#{run_error.backtrace.join("\n ")}")
|
307
|
+
# If we failed really early, we may not have a run_status yet. Too early for these to be of much use.
|
308
|
+
if run_status
|
309
|
+
run_status.stop_clock
|
310
|
+
run_status.exception = run_error
|
311
|
+
run_failed
|
312
|
+
end
|
313
|
+
events.run_failed(run_error)
|
314
|
+
ensure
|
315
|
+
Chef::RequestID.instance.reset_request_id
|
316
|
+
@run_status = nil
|
317
|
+
runlock.release
|
318
|
+
end
|
319
|
+
|
320
|
+
# Raise audit, converge, and other errors here so that we exit
|
321
|
+
# with the proper exit status code and everything gets raised
|
322
|
+
# as a RunFailedWrappingError
|
323
|
+
if run_error || converge_error || audit_error
|
324
|
+
error = if Chef::Config[:audit_mode] == :disabled
|
325
|
+
run_error || converge_error
|
326
|
+
else
|
327
|
+
e = if run_error == converge_error
|
328
|
+
Chef::Exceptions::RunFailedWrappingError.new(converge_error, audit_error)
|
329
|
+
else
|
330
|
+
Chef::Exceptions::RunFailedWrappingError.new(run_error, converge_error, audit_error)
|
331
|
+
end
|
332
|
+
e.fill_backtrace
|
333
|
+
e
|
334
|
+
end
|
335
|
+
|
336
|
+
Chef::Application.debug_stacktrace(error)
|
337
|
+
raise error
|
338
|
+
end
|
339
|
+
|
340
|
+
true
|
341
|
+
end
|
342
|
+
|
343
|
+
#
|
344
|
+
# Private API
|
345
|
+
# TODO make this stuff protected or private
|
346
|
+
#
|
347
|
+
|
348
|
+
# @api private
|
349
|
+
def configure_formatters
|
350
|
+
formatters_for_run.map do |formatter_name, output_path|
|
351
|
+
if output_path.nil?
|
352
|
+
Chef::Formatters.new(formatter_name, STDOUT_FD, STDERR_FD)
|
353
|
+
else
|
354
|
+
io = File.open(output_path, "a+")
|
355
|
+
io.sync = true
|
356
|
+
Chef::Formatters.new(formatter_name, io, io)
|
357
|
+
end
|
358
|
+
end
|
359
|
+
end
|
360
|
+
|
361
|
+
# @api private
|
362
|
+
def formatters_for_run
|
363
|
+
if Chef::Config.formatters.empty?
|
364
|
+
[default_formatter]
|
365
|
+
else
|
366
|
+
Chef::Config.formatters
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
# @api private
|
371
|
+
def default_formatter
|
372
|
+
if (STDOUT.tty? && !Chef::Config[:force_logger]) || Chef::Config[:force_formatter]
|
373
|
+
[:doc]
|
374
|
+
else
|
375
|
+
[:null]
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
# @api private
|
380
|
+
def configure_event_loggers
|
381
|
+
if Chef::Config.disable_event_logger
|
382
|
+
[]
|
383
|
+
else
|
384
|
+
Chef::Config.event_loggers.map do |evt_logger|
|
385
|
+
case evt_logger
|
386
|
+
when Symbol
|
387
|
+
Chef::EventLoggers.new(evt_logger)
|
388
|
+
when Class
|
389
|
+
evt_logger.new
|
390
|
+
else
|
391
|
+
end
|
392
|
+
end
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
396
|
+
# Rest client for use by API reporters. This rest client will not fail with an exception if
|
397
|
+
# it is fed non-UTF8 data.
|
398
|
+
#
|
399
|
+
# @api private
|
400
|
+
def rest_clean(client_name = node_name, config = Chef::Config)
|
401
|
+
@rest_clean ||=
|
402
|
+
Chef::ServerAPI.new(config[:chef_server_url], client_name: client_name,
|
403
|
+
signing_key_filename: config[:client_key], validate_utf8: false)
|
404
|
+
end
|
405
|
+
|
406
|
+
# Resource reporters send event information back to the chef server for
|
407
|
+
# processing. Can only be called after we have a @rest object
|
408
|
+
# @api private
|
409
|
+
def register_reporters
|
410
|
+
[
|
411
|
+
Chef::ResourceReporter.new(rest_clean),
|
412
|
+
Chef::Audit::AuditReporter.new(rest_clean),
|
413
|
+
].each do |r|
|
414
|
+
events.register(r)
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
#
|
419
|
+
# Callback to fire notifications that the Chef run is starting
|
420
|
+
#
|
421
|
+
# @api private
|
422
|
+
#
|
423
|
+
def run_started
|
424
|
+
self.class.run_start_notifications.each do |notification|
|
425
|
+
notification.call(run_status)
|
426
|
+
end
|
427
|
+
events.run_started(run_status)
|
428
|
+
end
|
429
|
+
|
430
|
+
#
|
431
|
+
# Callback to fire notifications that the run completed successfully
|
432
|
+
#
|
433
|
+
# @api private
|
434
|
+
#
|
435
|
+
def run_completed_successfully
|
436
|
+
success_handlers = self.class.run_completed_successfully_notifications
|
437
|
+
success_handlers.each do |notification|
|
438
|
+
notification.call(run_status)
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
#
|
443
|
+
# Callback to fire notifications that the Chef run failed
|
444
|
+
#
|
445
|
+
# @api private
|
446
|
+
#
|
447
|
+
def run_failed
|
448
|
+
failure_handlers = self.class.run_failed_notifications
|
449
|
+
failure_handlers.each do |notification|
|
450
|
+
notification.call(run_status)
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
#
|
455
|
+
# Instantiates a Chef::Node object, possibly loading the node's prior state
|
456
|
+
# when using chef-client. Sets Chef.node to the new node.
|
457
|
+
#
|
458
|
+
# @return [Chef::Node] The node object for this Chef run
|
459
|
+
#
|
460
|
+
# @see Chef::PolicyBuilder#load_node
|
461
|
+
#
|
462
|
+
# @api private
|
463
|
+
#
|
464
|
+
def load_node
|
465
|
+
policy_builder.load_node
|
466
|
+
run_status.node = policy_builder.node
|
467
|
+
Chef.set_node(policy_builder.node)
|
468
|
+
node
|
469
|
+
end
|
470
|
+
|
471
|
+
#
|
472
|
+
# Mutates the `node` object to prepare it for the chef run.
|
473
|
+
#
|
474
|
+
# @return [Chef::Node] The updated node object
|
475
|
+
#
|
476
|
+
# @see Chef::PolicyBuilder#build_node
|
477
|
+
#
|
478
|
+
# @api private
|
479
|
+
#
|
480
|
+
def build_node
|
481
|
+
policy_builder.build_node
|
482
|
+
run_status.node = node
|
483
|
+
node
|
484
|
+
end
|
485
|
+
|
486
|
+
#
|
487
|
+
# Sync cookbooks to local cache.
|
488
|
+
#
|
489
|
+
# TODO this appears to be unused.
|
490
|
+
#
|
491
|
+
# @see Chef::PolicyBuilder#sync_cookbooks
|
492
|
+
#
|
493
|
+
# @api private
|
494
|
+
#
|
495
|
+
def sync_cookbooks
|
496
|
+
policy_builder.sync_cookbooks
|
497
|
+
end
|
498
|
+
|
499
|
+
#
|
500
|
+
# Sets up the run context.
|
501
|
+
#
|
502
|
+
# @see Chef::PolicyBuilder#setup_run_context
|
503
|
+
#
|
504
|
+
# @return The newly set up run context
|
505
|
+
#
|
506
|
+
# @api private
|
507
|
+
def setup_run_context
|
508
|
+
run_context = policy_builder.setup_run_context(specific_recipes)
|
509
|
+
assert_cookbook_path_not_empty(run_context)
|
510
|
+
run_status.run_context = run_context
|
511
|
+
run_context
|
512
|
+
end
|
513
|
+
|
514
|
+
#
|
515
|
+
# The PolicyBuilder strategy for figuring out run list and cookbooks.
|
516
|
+
#
|
517
|
+
# @return [Chef::PolicyBuilder::Policyfile, Chef::PolicyBuilder::ExpandNodeObject]
|
518
|
+
#
|
519
|
+
# @api private
|
520
|
+
#
|
521
|
+
def policy_builder
|
522
|
+
@policy_builder ||= Chef::PolicyBuilder::Dynamic.new(node_name, ohai.data, json_attribs, override_runlist, events)
|
523
|
+
end
|
524
|
+
|
525
|
+
#
|
526
|
+
# Save the updated node to Chef.
|
527
|
+
#
|
528
|
+
# Does not save if we are in solo mode or using override_runlist.
|
529
|
+
#
|
530
|
+
# @see Chef::Node#save
|
531
|
+
# @see Chef::Config#solo
|
532
|
+
#
|
533
|
+
# @api private
|
534
|
+
#
|
535
|
+
def save_updated_node
|
536
|
+
if Chef::Config[:solo]
|
537
|
+
# nothing to do
|
538
|
+
elsif policy_builder.temporary_policy?
|
539
|
+
Chef::Log.warn("Skipping final node save because override_runlist was given")
|
540
|
+
else
|
541
|
+
Chef::Log.debug("Saving the current state of node #{node_name}")
|
542
|
+
node.save
|
543
|
+
end
|
544
|
+
end
|
545
|
+
|
546
|
+
#
|
547
|
+
# Run ohai plugins. Runs all ohai plugins unless minimal_ohai is specified.
|
548
|
+
#
|
549
|
+
# Sends the ohai_completed event when finished.
|
550
|
+
#
|
551
|
+
# @see Chef::EventDispatcher#
|
552
|
+
# @see Chef::Config#minimal_ohai
|
553
|
+
#
|
554
|
+
# @api private
|
555
|
+
#
|
556
|
+
def run_ohai
|
557
|
+
filter = Chef::Config[:minimal_ohai] ? %w{fqdn machinename hostname platform platform_version os os_version} : nil
|
558
|
+
ohai.all_plugins(filter)
|
559
|
+
events.ohai_completed(node)
|
560
|
+
end
|
561
|
+
|
562
|
+
#
|
563
|
+
# Figure out the node name we are working with.
|
564
|
+
#
|
565
|
+
# It tries these, in order:
|
566
|
+
# - Chef::Config.node_name
|
567
|
+
# - ohai[:fqdn]
|
568
|
+
# - ohai[:machinename]
|
569
|
+
# - ohai[:hostname]
|
570
|
+
#
|
571
|
+
# @raise [Chef::Exceptions::CannotDetermineNodeName] If the node name is not
|
572
|
+
# set and cannot be determined via ohai.
|
573
|
+
#
|
574
|
+
# @see Chef::Config#node_name
|
575
|
+
#
|
576
|
+
# @api private
|
577
|
+
#
|
578
|
+
def node_name
|
579
|
+
name = Chef::Config[:node_name] || ohai[:fqdn] || ohai[:machinename] || ohai[:hostname]
|
580
|
+
Chef::Config[:node_name] = name
|
581
|
+
|
582
|
+
raise Chef::Exceptions::CannotDetermineNodeName unless name
|
583
|
+
|
584
|
+
name
|
585
|
+
end
|
586
|
+
|
587
|
+
#
|
588
|
+
# Determine our private key and set up the connection to the Chef server.
|
589
|
+
#
|
590
|
+
# Skips registration and fires the `skipping_registration` event if
|
591
|
+
# Chef::Config.client_key is unspecified or already exists.
|
592
|
+
#
|
593
|
+
# If Chef::Config.client_key does not exist, we register the client with the
|
594
|
+
# Chef server and fire the registration_start and registration_completed events.
|
595
|
+
#
|
596
|
+
# @return [Chef::ServerAPI] The server connection object.
|
597
|
+
#
|
598
|
+
# @see Chef::Config#chef_server_url
|
599
|
+
# @see Chef::Config#client_key
|
600
|
+
# @see Chef::ApiClient::Registration#run
|
601
|
+
# @see Chef::EventDispatcher#skipping_registration
|
602
|
+
# @see Chef::EventDispatcher#registration_start
|
603
|
+
# @see Chef::EventDispatcher#registration_completed
|
604
|
+
# @see Chef::EventDispatcher#registration_failed
|
605
|
+
#
|
606
|
+
# @api private
|
607
|
+
#
|
608
|
+
def register(client_name = node_name, config = Chef::Config)
|
609
|
+
if !config[:client_key]
|
610
|
+
events.skipping_registration(client_name, config)
|
611
|
+
Chef::Log.debug("Client key is unspecified - skipping registration")
|
612
|
+
elsif File.exists?(config[:client_key])
|
613
|
+
events.skipping_registration(client_name, config)
|
614
|
+
Chef::Log.debug("Client key #{config[:client_key]} is present - skipping registration")
|
615
|
+
else
|
616
|
+
events.registration_start(node_name, config)
|
617
|
+
Chef::Log.info("Client key #{config[:client_key]} is not present - registering")
|
618
|
+
Chef::ApiClient::Registration.new(node_name, config[:client_key]).run
|
619
|
+
events.registration_completed
|
620
|
+
end
|
621
|
+
# We now have the client key, and should use it from now on.
|
622
|
+
@rest = Chef::ServerAPI.new(config[:chef_server_url], client_name: client_name,
|
623
|
+
signing_key_filename: config[:client_key])
|
624
|
+
# force initialization of the rest_clean API object
|
625
|
+
rest_clean(client_name, config)
|
626
|
+
register_reporters
|
627
|
+
rescue Exception => e
|
628
|
+
# TODO this should probably only ever fire if we *started* registration.
|
629
|
+
# Move it to the block above.
|
630
|
+
# TODO: munge exception so a semantic failure message can be given to the
|
631
|
+
# user
|
632
|
+
events.registration_failed(client_name, e, config)
|
633
|
+
raise
|
634
|
+
end
|
635
|
+
|
636
|
+
#
|
637
|
+
# Converges all compiled resources.
|
638
|
+
#
|
639
|
+
# Fires the converge_start, converge_complete and converge_failed events.
|
640
|
+
#
|
641
|
+
# If the exception `:end_client_run_early` is thrown during convergence, it
|
642
|
+
# does not mark the run complete *or* failed, and returns `nil`
|
643
|
+
#
|
644
|
+
# @param run_context The run context.
|
645
|
+
#
|
646
|
+
# @return The thrown exception, if we are in audit mode. `nil` means the
|
647
|
+
# converge was successful or ended early.
|
648
|
+
#
|
649
|
+
# @raise Any converge exception, unless we are in audit mode, in which case
|
650
|
+
# we *return* the exception.
|
651
|
+
#
|
652
|
+
# @see Chef::Runner#converge
|
653
|
+
# @see Chef::Config#audit_mode
|
654
|
+
# @see Chef::EventDispatch#converge_start
|
655
|
+
# @see Chef::EventDispatch#converge_complete
|
656
|
+
# @see Chef::EventDispatch#converge_failed
|
657
|
+
#
|
658
|
+
# @api private
|
659
|
+
#
|
660
|
+
def converge(run_context)
|
661
|
+
converge_exception = nil
|
662
|
+
catch(:end_client_run_early) do
|
663
|
+
begin
|
664
|
+
events.converge_start(run_context)
|
665
|
+
Chef::Log.debug("Converging node #{node_name}")
|
666
|
+
@runner = Chef::Runner.new(run_context)
|
667
|
+
@runner.converge
|
668
|
+
events.converge_complete
|
669
|
+
rescue Exception => e
|
670
|
+
events.converge_failed(e)
|
671
|
+
raise e if Chef::Config[:audit_mode] == :disabled
|
672
|
+
converge_exception = e
|
673
|
+
end
|
674
|
+
end
|
675
|
+
converge_exception
|
676
|
+
end
|
677
|
+
|
678
|
+
#
|
679
|
+
# Converge the node via and then save it if successful.
|
680
|
+
#
|
681
|
+
# @param run_context The run context.
|
682
|
+
#
|
683
|
+
# @return The thrown exception, if we are in audit mode. `nil` means the
|
684
|
+
# converge was successful or ended early.
|
685
|
+
#
|
686
|
+
# @raise Any converge or node save exception, unless we are in audit mode,
|
687
|
+
# in which case we *return* the exception.
|
688
|
+
#
|
689
|
+
# @see #converge
|
690
|
+
# @see #save_updated_mode
|
691
|
+
# @see Chef::Config#audit_mode
|
692
|
+
#
|
693
|
+
# @api private
|
694
|
+
#
|
695
|
+
# We don't want to change the old API on the `converge` method to have it perform
|
696
|
+
# saving. So we wrap it in this method.
|
697
|
+
# TODO given this seems to be pretty internal stuff, how badly do we need to
|
698
|
+
# split this stuff up?
|
699
|
+
#
|
700
|
+
def converge_and_save(run_context)
|
701
|
+
converge_exception = converge(run_context)
|
702
|
+
unless converge_exception
|
703
|
+
begin
|
704
|
+
save_updated_node
|
705
|
+
rescue Exception => e
|
706
|
+
raise e if Chef::Config[:audit_mode] == :disabled
|
707
|
+
converge_exception = e
|
708
|
+
end
|
709
|
+
end
|
710
|
+
converge_exception
|
711
|
+
end
|
712
|
+
|
713
|
+
#
|
714
|
+
# Run the audit phase.
|
715
|
+
#
|
716
|
+
# Triggers the audit_phase_start, audit_phase_complete and
|
717
|
+
# audit_phase_failed events.
|
718
|
+
#
|
719
|
+
# @param run_context The run context.
|
720
|
+
#
|
721
|
+
# @return Any thrown exceptions. `nil` if successful.
|
722
|
+
#
|
723
|
+
# @see Chef::Audit::Runner#run
|
724
|
+
# @see Chef::EventDispatch#audit_phase_start
|
725
|
+
# @see Chef::EventDispatch#audit_phase_complete
|
726
|
+
# @see Chef::EventDispatch#audit_phase_failed
|
727
|
+
#
|
728
|
+
# @api private
|
729
|
+
#
|
730
|
+
def run_audits(run_context)
|
731
|
+
begin
|
732
|
+
events.audit_phase_start(run_status)
|
733
|
+
Chef::Log.info("Starting audit phase")
|
734
|
+
auditor = Chef::Audit::Runner.new(run_context)
|
735
|
+
auditor.run
|
736
|
+
if auditor.failed?
|
737
|
+
audit_exception = Chef::Exceptions::AuditsFailed.new(auditor.num_failed, auditor.num_total)
|
738
|
+
@events.audit_phase_failed(audit_exception, Chef::Audit::Logger.read_buffer)
|
739
|
+
else
|
740
|
+
@events.audit_phase_complete(Chef::Audit::Logger.read_buffer)
|
741
|
+
end
|
742
|
+
rescue Exception => e
|
743
|
+
Chef::Log.error("Audit phase failed with error message: #{e.message}")
|
744
|
+
@events.audit_phase_failed(e, Chef::Audit::Logger.read_buffer)
|
745
|
+
audit_exception = e
|
746
|
+
end
|
747
|
+
audit_exception
|
748
|
+
end
|
749
|
+
|
750
|
+
#
|
751
|
+
# Expands the run list.
|
752
|
+
#
|
753
|
+
# @return [Chef::RunListExpansion] The expanded run list.
|
754
|
+
#
|
755
|
+
# @see Chef::PolicyBuilder#expand_run_list
|
756
|
+
#
|
757
|
+
def expanded_run_list
|
758
|
+
policy_builder.expand_run_list
|
759
|
+
end
|
760
|
+
|
761
|
+
#
|
762
|
+
# Check if the user has Administrator privileges on windows.
|
763
|
+
#
|
764
|
+
# Throws an error if the user is not an admin, and
|
765
|
+
# `Chef::Config.fatal_windows_admin_check` is true.
|
766
|
+
#
|
767
|
+
# @raise [Chef::Exceptions::WindowsNotAdmin] If the user is not an admin.
|
768
|
+
#
|
769
|
+
# @see Chef::platform#windows?
|
770
|
+
# @see Chef::Config#fatal_windows_admin_check
|
771
|
+
#
|
772
|
+
# @api private
|
773
|
+
#
|
774
|
+
def do_windows_admin_check
|
775
|
+
if Chef::Platform.windows?
|
776
|
+
Chef::Log.debug("Checking for administrator privileges....")
|
777
|
+
|
778
|
+
if !has_admin_privileges?
|
779
|
+
message = "chef-client doesn't have administrator privileges on node #{node_name}."
|
780
|
+
if Chef::Config[:fatal_windows_admin_check]
|
781
|
+
Chef::Log.fatal(message)
|
782
|
+
Chef::Log.fatal("fatal_windows_admin_check is set to TRUE.")
|
783
|
+
raise Chef::Exceptions::WindowsNotAdmin, message
|
784
|
+
else
|
785
|
+
Chef::Log.warn("#{message} This might cause unexpected resource failures.")
|
786
|
+
end
|
787
|
+
else
|
788
|
+
Chef::Log.debug("chef-client has administrator privileges on node #{node_name}.")
|
789
|
+
end
|
790
|
+
end
|
791
|
+
end
|
792
|
+
|
793
|
+
# Notification registration
|
794
|
+
class<<self
|
795
|
+
#
|
796
|
+
# Add a listener for the 'client run started' event.
|
797
|
+
#
|
798
|
+
# @param notification_block The callback (takes |run_status| parameter).
|
799
|
+
# @yieldparam [Chef::RunStatus] run_status The run status.
|
800
|
+
#
|
801
|
+
def when_run_starts(¬ification_block)
|
802
|
+
run_start_notifications << notification_block
|
803
|
+
end
|
804
|
+
|
805
|
+
#
|
806
|
+
# Add a listener for the 'client run success' event.
|
807
|
+
#
|
808
|
+
# @param notification_block The callback (takes |run_status| parameter).
|
809
|
+
# @yieldparam [Chef::RunStatus] run_status The run status.
|
810
|
+
#
|
811
|
+
def when_run_completes_successfully(¬ification_block)
|
812
|
+
run_completed_successfully_notifications << notification_block
|
813
|
+
end
|
814
|
+
|
815
|
+
#
|
816
|
+
# Add a listener for the 'client run failed' event.
|
817
|
+
#
|
818
|
+
# @param notification_block The callback (takes |run_status| parameter).
|
819
|
+
# @yieldparam [Chef::RunStatus] run_status The run status.
|
820
|
+
#
|
821
|
+
def when_run_fails(¬ification_block)
|
822
|
+
run_failed_notifications << notification_block
|
823
|
+
end
|
824
|
+
|
825
|
+
#
|
826
|
+
# Clears all listeners for client run status events.
|
827
|
+
#
|
828
|
+
# Primarily for testing purposes.
|
829
|
+
#
|
830
|
+
# @api private
|
831
|
+
#
|
832
|
+
def clear_notifications
|
833
|
+
@run_start_notifications = nil
|
834
|
+
@run_completed_successfully_notifications = nil
|
835
|
+
@run_failed_notifications = nil
|
836
|
+
end
|
837
|
+
|
838
|
+
#
|
839
|
+
# TODO These seem protected to me.
|
840
|
+
#
|
841
|
+
|
842
|
+
#
|
843
|
+
# Listeners to be run when the client run starts.
|
844
|
+
#
|
845
|
+
# @return [Array<Proc>]
|
846
|
+
#
|
847
|
+
# @api private
|
848
|
+
#
|
849
|
+
def run_start_notifications
|
850
|
+
@run_start_notifications ||= []
|
851
|
+
end
|
852
|
+
|
853
|
+
#
|
854
|
+
# Listeners to be run when the client run completes successfully.
|
855
|
+
#
|
856
|
+
# @return [Array<Proc>]
|
857
|
+
#
|
858
|
+
# @api private
|
859
|
+
#
|
860
|
+
def run_completed_successfully_notifications
|
861
|
+
@run_completed_successfully_notifications ||= []
|
862
|
+
end
|
863
|
+
|
864
|
+
#
|
865
|
+
# Listeners to be run when the client run fails.
|
866
|
+
#
|
867
|
+
# @return [Array<Proc>]
|
868
|
+
#
|
869
|
+
# @api private
|
870
|
+
#
|
871
|
+
def run_failed_notifications
|
872
|
+
@run_failed_notifications ||= []
|
873
|
+
end
|
874
|
+
end
|
875
|
+
|
876
|
+
#
|
877
|
+
# IO stream that will be used as 'STDOUT' for formatters. Formatters are
|
878
|
+
# configured during `initialize`, so this provides a convenience for
|
879
|
+
# setting alternative IO stream during tests.
|
880
|
+
#
|
881
|
+
# @api private
|
882
|
+
#
|
883
|
+
STDOUT_FD = STDOUT
|
884
|
+
|
885
|
+
#
|
886
|
+
# IO stream that will be used as 'STDERR' for formatters. Formatters are
|
887
|
+
# configured during `initialize`, so this provides a convenience for
|
888
|
+
# setting alternative IO stream during tests.
|
889
|
+
#
|
890
|
+
# @api private
|
891
|
+
#
|
892
|
+
STDERR_FD = STDERR
|
893
|
+
|
894
|
+
#
|
895
|
+
# Deprecated writers
|
896
|
+
#
|
897
|
+
|
898
|
+
include Chef::Mixin::Deprecation
|
899
|
+
deprecated_attr_writer :ohai, "There is no alternative. Leave ohai alone!"
|
900
|
+
deprecated_attr_writer :rest, "There is no alternative. Leave rest alone!"
|
901
|
+
deprecated_attr :runner, "There is no alternative. Leave runner alone!"
|
902
|
+
|
903
|
+
private
|
904
|
+
|
905
|
+
attr_reader :override_runlist
|
906
|
+
attr_reader :specific_recipes
|
907
|
+
|
908
|
+
def profiling_prereqs!
|
909
|
+
require "ruby-prof"
|
910
|
+
rescue LoadError
|
911
|
+
raise "You must have the ruby-prof gem installed in order to use --profile-ruby"
|
912
|
+
end
|
913
|
+
|
914
|
+
def start_profiling
|
915
|
+
return unless Chef::Config[:profile_ruby]
|
916
|
+
profiling_prereqs!
|
917
|
+
RubyProf.start
|
918
|
+
end
|
919
|
+
|
920
|
+
def end_profiling
|
921
|
+
return unless Chef::Config[:profile_ruby]
|
922
|
+
profiling_prereqs!
|
923
|
+
path = Chef::FileCache.create_cache_path("graph_profile.out", false)
|
924
|
+
File.open(path, "w+") do |file|
|
925
|
+
RubyProf::GraphPrinter.new(RubyProf.stop).print(file, {})
|
926
|
+
end
|
927
|
+
Chef::Log.warn("Ruby execution profile dumped to #{path}")
|
928
|
+
end
|
929
|
+
|
930
|
+
def empty_directory?(path)
|
931
|
+
!File.exists?(path) || (Dir.entries(path).size <= 2)
|
932
|
+
end
|
933
|
+
|
934
|
+
def is_last_element?(index, object)
|
935
|
+
object.kind_of?(Array) ? index == object.size - 1 : true
|
936
|
+
end
|
937
|
+
|
938
|
+
def assert_cookbook_path_not_empty(run_context)
|
939
|
+
if Chef::Config[:solo]
|
940
|
+
# Check for cookbooks in the path given
|
941
|
+
# Chef::Config[:cookbook_path] can be a string or an array
|
942
|
+
# if it's an array, go through it and check each one, raise error at the last one if no files are found
|
943
|
+
cookbook_paths = Array(Chef::Config[:cookbook_path])
|
944
|
+
Chef::Log.debug "Loading from cookbook_path: #{cookbook_paths.map { |path| File.expand_path(path) }.join(', ')}"
|
945
|
+
if cookbook_paths.all? { |path| empty_directory?(path) }
|
946
|
+
msg = "None of the cookbook paths set in Chef::Config[:cookbook_path], #{cookbook_paths.inspect}, contain any cookbooks"
|
947
|
+
Chef::Log.fatal(msg)
|
948
|
+
raise Chef::Exceptions::CookbookNotFound, msg
|
949
|
+
end
|
950
|
+
else
|
951
|
+
Chef::Log.warn("Node #{node_name} has an empty run list.") if run_context.node.run_list.empty?
|
952
|
+
end
|
953
|
+
end
|
954
|
+
|
955
|
+
def has_admin_privileges?
|
956
|
+
require "chef/win32/security"
|
957
|
+
|
958
|
+
Chef::ReservedNames::Win32::Security.has_admin_privileges?
|
959
|
+
end
|
960
|
+
end
|
961
|
+
end
|
962
|
+
|
963
|
+
# HACK cannot load this first, but it must be loaded.
|
964
|
+
require "chef/cookbook_loader"
|
965
|
+
require "chef/cookbook_version"
|
966
|
+
require "chef/cookbook/synchronizer"
|