chef 12.7.2-universal-mingw32 → 12.8.1-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 +49 -58
- data/LICENSE +201 -201
- data/README.md +139 -139
- data/Rakefile +86 -73
- data/VERSION +1 -1
- data/acceptance/.gitignore +2 -1
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +290 -281
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +59 -49
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -46
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +14 -11
- data/acceptance/README.md +132 -86
- 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 -0
- data/acceptance/fips/.acceptance/acceptance-cookbook/metadata.rb +2 -0
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/fips/.kitchen.yml +4 -0
- data/acceptance/fips/test/integration/fips/serverspec/Gemfile +3 -0
- data/acceptance/fips/test/integration/fips/serverspec/fips_spec.rb +39 -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 +23 -21
- 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.docker.yml +12 -0
- data/acceptance/top-cookbooks/.kitchen.git.yml +11 -10
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -4
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -4
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -4
- 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 -37
- 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 +63 -58
- 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 -73
- 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 +342 -342
- data/lib/chef/application/apply.rb +221 -221
- data/lib/chef/application/client.rb +513 -501
- data/lib/chef/application/knife.rb +208 -208
- data/lib/chef/application/solo.rb +334 -330
- 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 -856
- data/lib/chef/chef_fs/command_line.rb +285 -285
- data/lib/chef/chef_fs/config.rb +283 -282
- 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 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -29
- 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 -56
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +204 -202
- 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 -30
- 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 -42
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -27
- 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_data_bags_dir.rb → 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 -95
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +176 -82
- 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 -210
- 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/{chef_repository_file_system_cookbook_artifacts_dir.rb → cookbook_artifacts_dir.rb} +36 -34
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -0
- data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +114 -0
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -0
- data/lib/chef/chef_fs/file_system/repository/directory.rb +139 -0
- 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/{chef_repository_file_system_versioned_cookbooks_dir.rb → 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 +967 -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 -58
- data/lib/chef/cookbook/cookbook_version_loader.rb +352 -301
- 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 +118 -0
- data/lib/chef/cookbook/metadata.rb +904 -886
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
- data/lib/chef/cookbook/synchronizer.rb +298 -294
- data/lib/chef/cookbook/syntax_check.rb +260 -260
- data/lib/chef/cookbook_loader.rb +200 -182
- data/lib/chef/cookbook_manifest.rb +290 -290
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -244
- data/lib/chef/cookbook_uploader.rb +157 -157
- data/lib/chef/cookbook_version.rb +631 -627
- data/lib/chef/daemon.rb +131 -131
- data/lib/chef/data_bag.rb +176 -175
- 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 +38 -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/data_query.rb +89 -89
- data/lib/chef/dsl/declare_resource.rb +108 -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/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 +134 -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 +420 -400
- 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 -96
- data/lib/chef/formatters/base.rb +237 -237
- data/lib/chef/formatters/doc.rb +422 -396
- data/lib/chef/formatters/error_descriptor.rb +67 -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 +430 -427
- data/lib/chef/http/auth_credentials.rb +57 -57
- data/lib/chef/http/authenticator.rb +106 -106
- data/lib/chef/http/basic_client.rb +169 -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 +207 -206
- data/lib/chef/http/ssl_policies.rb +130 -130
- data/lib/chef/http/validate_content_length.rb +115 -110
- data/lib/chef/json_compat.rb +164 -164
- data/lib/chef/key.rb +273 -273
- data/lib/chef/knife.rb +587 -580
- 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 -231
- 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 +448 -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 +108 -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 -310
- data/lib/chef/knife/core/bootstrap_context.rb +233 -200
- 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 -80
- 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 -206
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +284 -275
- 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 -108
- 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 -114
- 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 -62
- 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 +572 -575
- data/lib/chef/knife/ssl_check.rb +281 -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 -192
- 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/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 -302
- data/lib/chef/mixin/provides.rb +28 -27
- data/lib/chef/mixin/proxified_socket.rb +38 -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 +140 -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 +72 -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 -274
- data/lib/chef/policy_builder/policyfile.rb +527 -525
- data/lib/chef/property.rb +673 -673
- data/lib/chef/provider.rb +461 -461
- data/lib/chef/provider/apt_update.rb +79 -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 -200
- 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 +62 -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 -0
- 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 +173 -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 +86 -86
- 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 -277
- 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 -260
- 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 +55 -55
- data/lib/chef/provider/remote_file/ftp.rb +183 -183
- data/lib/chef/provider/remote_file/http.rb +117 -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/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 +250 -212
- 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 +120 -120
- data/lib/chef/provider/service/simple.rb +175 -175
- data/lib/chef/provider/service/solaris.rb +117 -117
- data/lib/chef/provider/service/systemd.rb +155 -139
- data/lib/chef/provider/service/upstart.rb +242 -242
- data/lib/chef/provider/service/windows.rb +313 -313
- data/lib/chef/provider/subversion.rb +221 -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 +142 -141
- data/lib/chef/recipe.rb +119 -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 +87 -87
- data/lib/chef/resource/apt_package.rb +32 -32
- 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 -0
- 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 +149 -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 +208 -197
- 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 +89 -89
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -59
- data/lib/chef/resource_collection/resource_list.rb +90 -89
- 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 +88 -87
- data/lib/chef/rest.rb +209 -209
- data/lib/chef/role.rb +280 -280
- data/lib/chef/run_context.rb +670 -670
- data/lib/chef/run_context/cookbook_compiler.rb +289 -289
- data/lib/chef/run_list.rb +168 -166
- 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 +141 -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 -322
- data/lib/chef/shell/ext.rb +593 -593
- data/lib/chef/shell/model_wrapper.rb +120 -119
- 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 -169
- 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 -922
- data/lib/chef/win32/api/file.rb +625 -622
- 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 -76
- 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 +372 -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 -0
- data/spec/data/client.d_00/01-bar.rb +1 -0
- data/spec/data/client.d_00/bar +1 -0
- data/spec/data/client.d_01/foo/bar.rb +1 -0
- data/spec/data/client.d_02/foo.rb/foo.txt +1 -0
- 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/.root_dotfile +0 -0
- 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/spec/spec_helper.rb +0 -0
- 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 -0
- 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 -124
- 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 -469
- 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 -699
- 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 +292 -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 +148 -148
- data/spec/integration/recipes/lwrp_spec.rb +53 -53
- 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 -249
- 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 -218
- 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 -0
- 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 +435 -431
- data/spec/unit/application/knife_spec.rb +229 -229
- data/spec/unit/application/solo_spec.rb +170 -167
- data/spec/unit/application_spec.rb +384 -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 -186
- data/spec/unit/cookbook/file_vendor_spec.rb +97 -97
- data/spec/unit/cookbook/metadata_spec.rb +952 -924
- data/spec/unit/cookbook/synchronizer_spec.rb +520 -520
- data/spec/unit/cookbook/syntax_check_spec.rb +219 -217
- data/spec/unit/cookbook_loader_spec.rb +299 -290
- data/spec/unit/cookbook_manifest_spec.rb +243 -243
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +203 -199
- 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 +553 -553
- data/spec/unit/cookbook_version_spec.rb +359 -341
- data/spec/unit/daemon_spec.rb +174 -174
- data/spec/unit/data_bag_item_spec.rb +388 -323
- 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 +80 -80
- data/spec/unit/dsl/regsitry_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 -0
- data/spec/unit/formatters/base_spec.rb +71 -71
- data/spec/unit/formatters/doc_spec.rb +78 -78
- 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 +129 -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 -192
- data/spec/unit/http_spec.rb +206 -194
- 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 -773
- 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 -329
- 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 -93
- 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 -64
- data/spec/unit/knife/core/ui_spec.rb +598 -591
- 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 +410 -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 -522
- 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 +720 -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/params_validate_spec.rb +409 -409
- data/spec/unit/mixin/path_sanity_spec.rb +92 -86
- 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 +94 -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 -739
- 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_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 -118
- 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 -0
- 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 +238 -238
- data/spec/unit/provider/mount/mount_spec.rb +480 -480
- data/spec/unit/provider/mount/solaris_spec.rb +822 -822
- data/spec/unit/provider/mount/windows_spec.rb +151 -151
- data/spec/unit/provider/mount_spec.rb +203 -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 -504
- 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 -376
- 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 +219 -219
- data/spec/unit/provider/remote_file/http_spec.rb +301 -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_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 +236 -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 +344 -279
- 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 +298 -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 -900
- data/spec/unit/provider/user/pw_spec.rb +252 -252
- data/spec/unit/provider/user/solaris_spec.rb +139 -137
- 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_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 -157
- 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 -0
- 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 +299 -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 +296 -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 +428 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbooks_dir.rb +0 -84
data/lib/chef/run_context.rb
CHANGED
@@ -1,670 +1,670 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Author:: Christopher Walters (<cw@chef.io>)
|
4
|
-
# Author:: Tim Hinderliter (<tim@chef.io>)
|
5
|
-
# Copyright:: Copyright 2008-2016, Chef Software Inc.
|
6
|
-
# License:: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
|
20
|
-
require "chef/resource_collection"
|
21
|
-
require "chef/cookbook_version"
|
22
|
-
require "chef/node"
|
23
|
-
require "chef/role"
|
24
|
-
require "chef/log"
|
25
|
-
require "chef/recipe"
|
26
|
-
require "chef/run_context/cookbook_compiler"
|
27
|
-
require "chef/event_dispatch/events_output_stream"
|
28
|
-
require "forwardable"
|
29
|
-
|
30
|
-
class Chef
|
31
|
-
|
32
|
-
# == Chef::RunContext
|
33
|
-
# Value object that loads and tracks the context of a Chef run
|
34
|
-
class RunContext
|
35
|
-
#
|
36
|
-
# Global state
|
37
|
-
#
|
38
|
-
|
39
|
-
#
|
40
|
-
# The node for this run
|
41
|
-
#
|
42
|
-
# @return [Chef::Node]
|
43
|
-
#
|
44
|
-
attr_reader :node
|
45
|
-
|
46
|
-
#
|
47
|
-
# The set of cookbooks involved in this run
|
48
|
-
#
|
49
|
-
# @return [Chef::CookbookCollection]
|
50
|
-
#
|
51
|
-
attr_reader :cookbook_collection
|
52
|
-
|
53
|
-
#
|
54
|
-
# Resource Definitions for this run. Populated when the files in
|
55
|
-
# +definitions/+ are evaluated (this is triggered by #load).
|
56
|
-
#
|
57
|
-
# @return [Array[Chef::ResourceDefinition]]
|
58
|
-
#
|
59
|
-
attr_reader :definitions
|
60
|
-
|
61
|
-
#
|
62
|
-
# Event dispatcher for this run.
|
63
|
-
#
|
64
|
-
# @return [Chef::EventDispatch::Dispatcher]
|
65
|
-
#
|
66
|
-
attr_reader :events
|
67
|
-
|
68
|
-
#
|
69
|
-
# Hash of factoids for a reboot request.
|
70
|
-
#
|
71
|
-
# @return [Hash]
|
72
|
-
#
|
73
|
-
attr_accessor :reboot_info
|
74
|
-
|
75
|
-
#
|
76
|
-
# Scoped state
|
77
|
-
#
|
78
|
-
|
79
|
-
#
|
80
|
-
# The parent run context.
|
81
|
-
#
|
82
|
-
# @return [Chef::RunContext] The parent run context, or `nil` if this is the
|
83
|
-
# root context.
|
84
|
-
#
|
85
|
-
attr_reader :parent_run_context
|
86
|
-
|
87
|
-
#
|
88
|
-
# The collection of resources intended to be converged (and able to be
|
89
|
-
# notified).
|
90
|
-
#
|
91
|
-
# @return [Chef::ResourceCollection]
|
92
|
-
#
|
93
|
-
# @see CookbookCompiler
|
94
|
-
#
|
95
|
-
attr_reader :resource_collection
|
96
|
-
|
97
|
-
#
|
98
|
-
# The list of control groups to execute during the audit phase
|
99
|
-
#
|
100
|
-
attr_reader :audits
|
101
|
-
|
102
|
-
#
|
103
|
-
# Notification handling
|
104
|
-
#
|
105
|
-
|
106
|
-
#
|
107
|
-
# A Hash containing the before notifications triggered by resources
|
108
|
-
# during the converge phase of the chef run.
|
109
|
-
#
|
110
|
-
# @return [Hash[String, Array[Chef::Resource::Notification]]] A hash from
|
111
|
-
# <notifying resource name> => <list of notifications it sent>
|
112
|
-
#
|
113
|
-
attr_reader :before_notification_collection
|
114
|
-
|
115
|
-
#
|
116
|
-
# A Hash containing the immediate notifications triggered by resources
|
117
|
-
# during the converge phase of the chef run.
|
118
|
-
#
|
119
|
-
# @return [Hash[String, Array[Chef::Resource::Notification]]] A hash from
|
120
|
-
# <notifying resource name> => <list of notifications it sent>
|
121
|
-
#
|
122
|
-
attr_reader :immediate_notification_collection
|
123
|
-
|
124
|
-
#
|
125
|
-
# A Hash containing the delayed (end of run) notifications triggered by
|
126
|
-
# resources during the converge phase of the chef run.
|
127
|
-
#
|
128
|
-
# @return [Hash[String, Array[Chef::Resource::Notification]]] A hash from
|
129
|
-
# <notifying resource name> => <list of notifications it sent>
|
130
|
-
#
|
131
|
-
attr_reader :delayed_notification_collection
|
132
|
-
|
133
|
-
# Creates a new Chef::RunContext object and populates its fields. This object gets
|
134
|
-
# used by the Chef Server to generate a fully compiled recipe list for a node.
|
135
|
-
#
|
136
|
-
# @param node [Chef::Node] The node to run against.
|
137
|
-
# @param cookbook_collection [Chef::CookbookCollection] The cookbooks
|
138
|
-
# involved in this run.
|
139
|
-
# @param events [EventDispatch::Dispatcher] The event dispatcher for this
|
140
|
-
# run.
|
141
|
-
#
|
142
|
-
def initialize(node, cookbook_collection, events)
|
143
|
-
@node = node
|
144
|
-
@cookbook_collection = cookbook_collection
|
145
|
-
@events = events
|
146
|
-
|
147
|
-
node.run_context = self
|
148
|
-
node.set_cookbook_attribute
|
149
|
-
|
150
|
-
@definitions = Hash.new
|
151
|
-
@loaded_recipes_hash = {}
|
152
|
-
@loaded_attributes_hash = {}
|
153
|
-
@reboot_info = {}
|
154
|
-
@cookbook_compiler = nil
|
155
|
-
|
156
|
-
initialize_child_state
|
157
|
-
end
|
158
|
-
|
159
|
-
#
|
160
|
-
# Triggers the compile phase of the chef run.
|
161
|
-
#
|
162
|
-
# @param run_list_expansion [Chef::RunList::RunListExpansion] The run list.
|
163
|
-
# @see Chef::RunContext::CookbookCompiler
|
164
|
-
#
|
165
|
-
def load(run_list_expansion)
|
166
|
-
@cookbook_compiler = CookbookCompiler.new(self, run_list_expansion, events)
|
167
|
-
cookbook_compiler.compile
|
168
|
-
end
|
169
|
-
|
170
|
-
#
|
171
|
-
# Initialize state that applies to both Chef::RunContext and Chef::ChildRunContext
|
172
|
-
#
|
173
|
-
def initialize_child_state
|
174
|
-
@audits = {}
|
175
|
-
@resource_collection = Chef::ResourceCollection.new
|
176
|
-
@before_notification_collection = Hash.new { |h, k| h[k] = [] }
|
177
|
-
@immediate_notification_collection = Hash.new { |h, k| h[k] = [] }
|
178
|
-
@delayed_notification_collection = Hash.new { |h, k| h[k] = [] }
|
179
|
-
end
|
180
|
-
|
181
|
-
#
|
182
|
-
# Adds an before notification to the +before_notification_collection+.
|
183
|
-
#
|
184
|
-
# @param [Chef::Resource::Notification] The notification to add.
|
185
|
-
#
|
186
|
-
def notifies_before(notification)
|
187
|
-
nr = notification.notifying_resource
|
188
|
-
if nr.instance_of?(Chef::Resource)
|
189
|
-
before_notification_collection[nr.name] << notification
|
190
|
-
else
|
191
|
-
before_notification_collection[nr.declared_key] << notification
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
#
|
196
|
-
# Adds an immediate notification to the +immediate_notification_collection+.
|
197
|
-
#
|
198
|
-
# @param [Chef::Resource::Notification] The notification to add.
|
199
|
-
#
|
200
|
-
def notifies_immediately(notification)
|
201
|
-
nr = notification.notifying_resource
|
202
|
-
if nr.instance_of?(Chef::Resource)
|
203
|
-
immediate_notification_collection[nr.name] << notification
|
204
|
-
else
|
205
|
-
immediate_notification_collection[nr.declared_key] << notification
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
#
|
210
|
-
# Adds a delayed notification to the +delayed_notification_collection+.
|
211
|
-
#
|
212
|
-
# @param [Chef::Resource::Notification] The notification to add.
|
213
|
-
#
|
214
|
-
def notifies_delayed(notification)
|
215
|
-
nr = notification.notifying_resource
|
216
|
-
if nr.instance_of?(Chef::Resource)
|
217
|
-
delayed_notification_collection[nr.name] << notification
|
218
|
-
else
|
219
|
-
delayed_notification_collection[nr.declared_key] << notification
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
#
|
224
|
-
# Get the list of before notifications sent by the given resource.
|
225
|
-
#
|
226
|
-
# TODO seriously, this is actually wrong. resource.name is not unique,
|
227
|
-
# you need the type as well.
|
228
|
-
#
|
229
|
-
# @return [Array[Notification]]
|
230
|
-
#
|
231
|
-
def before_notifications(resource)
|
232
|
-
if resource.instance_of?(Chef::Resource)
|
233
|
-
return before_notification_collection[resource.name]
|
234
|
-
else
|
235
|
-
return before_notification_collection[resource.declared_key]
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
#
|
240
|
-
# Get the list of immediate notifications sent by the given resource.
|
241
|
-
#
|
242
|
-
# TODO seriously, this is actually wrong. resource.name is not unique,
|
243
|
-
# you need the type as well.
|
244
|
-
#
|
245
|
-
# @return [Array[Notification]]
|
246
|
-
#
|
247
|
-
def immediate_notifications(resource)
|
248
|
-
if resource.instance_of?(Chef::Resource)
|
249
|
-
return immediate_notification_collection[resource.name]
|
250
|
-
else
|
251
|
-
return immediate_notification_collection[resource.declared_key]
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
#
|
256
|
-
# Get the list of delayed (end of run) notifications sent by the given
|
257
|
-
# resource.
|
258
|
-
#
|
259
|
-
# TODO seriously, this is actually wrong. resource.name is not unique,
|
260
|
-
# you need the type as well.
|
261
|
-
#
|
262
|
-
# @return [Array[Notification]]
|
263
|
-
#
|
264
|
-
def delayed_notifications(resource)
|
265
|
-
if resource.instance_of?(Chef::Resource)
|
266
|
-
return delayed_notification_collection[resource.name]
|
267
|
-
else
|
268
|
-
return delayed_notification_collection[resource.declared_key]
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
|
-
#
|
273
|
-
# Cookbook and recipe loading
|
274
|
-
#
|
275
|
-
|
276
|
-
#
|
277
|
-
# Evaluates the recipes +recipe_names+. Used by DSL::IncludeRecipe
|
278
|
-
#
|
279
|
-
# @param recipe_names [Array[String]] The list of recipe names (e.g.
|
280
|
-
# 'my_cookbook' or 'my_cookbook::my_resource').
|
281
|
-
# @param current_cookbook The cookbook we are currently running in.
|
282
|
-
#
|
283
|
-
# @see DSL::IncludeRecipe#include_recipe
|
284
|
-
#
|
285
|
-
def include_recipe(*recipe_names, current_cookbook: nil)
|
286
|
-
result_recipes = Array.new
|
287
|
-
recipe_names.flatten.each do |recipe_name|
|
288
|
-
if result = load_recipe(recipe_name, current_cookbook: current_cookbook)
|
289
|
-
result_recipes << result
|
290
|
-
end
|
291
|
-
end
|
292
|
-
result_recipes
|
293
|
-
end
|
294
|
-
|
295
|
-
#
|
296
|
-
# Evaluates the recipe +recipe_name+. Used by DSL::IncludeRecipe
|
297
|
-
#
|
298
|
-
# TODO I am sort of confused why we have both this and include_recipe ...
|
299
|
-
# I don't see anything different beyond accepting and returning an
|
300
|
-
# array of recipes.
|
301
|
-
#
|
302
|
-
# @param recipe_names [Array[String]] The recipe name (e.g 'my_cookbook' or
|
303
|
-
# 'my_cookbook::my_resource').
|
304
|
-
# @param current_cookbook The cookbook we are currently running in.
|
305
|
-
#
|
306
|
-
# @return A truthy value if the load occurred; `false` if already loaded.
|
307
|
-
#
|
308
|
-
# @see DSL::IncludeRecipe#load_recipe
|
309
|
-
#
|
310
|
-
def load_recipe(recipe_name, current_cookbook: nil)
|
311
|
-
Chef::Log.debug("Loading recipe #{recipe_name} via include_recipe")
|
312
|
-
|
313
|
-
cookbook_name, recipe_short_name = Chef::Recipe.parse_recipe_name(recipe_name, current_cookbook: current_cookbook)
|
314
|
-
|
315
|
-
if unreachable_cookbook?(cookbook_name) # CHEF-4367
|
316
|
-
Chef::Log.warn(<<-ERROR_MESSAGE)
|
317
|
-
MissingCookbookDependency:
|
318
|
-
Recipe `#{recipe_name}` is not in the run_list, and cookbook '#{cookbook_name}'
|
319
|
-
is not a dependency of any cookbook in the run_list. To load this recipe,
|
320
|
-
first add a dependency on cookbook '#{cookbook_name}' in the cookbook you're
|
321
|
-
including it from in that cookbook's metadata.
|
322
|
-
ERROR_MESSAGE
|
323
|
-
end
|
324
|
-
|
325
|
-
if loaded_fully_qualified_recipe?(cookbook_name, recipe_short_name)
|
326
|
-
Chef::Log.debug("I am not loading #{recipe_name}, because I have already seen it.")
|
327
|
-
false
|
328
|
-
else
|
329
|
-
loaded_recipe(cookbook_name, recipe_short_name)
|
330
|
-
node.loaded_recipe(cookbook_name, recipe_short_name)
|
331
|
-
cookbook = cookbook_collection[cookbook_name]
|
332
|
-
cookbook.load_recipe(recipe_short_name, self)
|
333
|
-
end
|
334
|
-
end
|
335
|
-
|
336
|
-
#
|
337
|
-
# Load the given recipe from a filename.
|
338
|
-
#
|
339
|
-
# @param recipe_file [String] The recipe filename.
|
340
|
-
#
|
341
|
-
# @return [Chef::Recipe] The loaded recipe.
|
342
|
-
#
|
343
|
-
# @raise [Chef::Exceptions::RecipeNotFound] If the file does not exist.
|
344
|
-
#
|
345
|
-
def load_recipe_file(recipe_file)
|
346
|
-
if !File.exist?(recipe_file)
|
347
|
-
raise Chef::Exceptions::RecipeNotFound, "could not find recipe file #{recipe_file}"
|
348
|
-
end
|
349
|
-
|
350
|
-
Chef::Log.debug("Loading recipe file #{recipe_file}")
|
351
|
-
recipe = Chef::Recipe.new("@recipe_files", recipe_file, self)
|
352
|
-
recipe.from_file(recipe_file)
|
353
|
-
recipe
|
354
|
-
end
|
355
|
-
|
356
|
-
#
|
357
|
-
# Look up an attribute filename.
|
358
|
-
#
|
359
|
-
# @param cookbook_name [String] The cookbook name of the attribute file.
|
360
|
-
# @param attr_file_name [String] The attribute file's name (not path).
|
361
|
-
#
|
362
|
-
# @return [String] The filename.
|
363
|
-
#
|
364
|
-
# @see DSL::IncludeAttribute#include_attribute
|
365
|
-
#
|
366
|
-
# @raise [Chef::Exceptions::CookbookNotFound] If the cookbook could not be found.
|
367
|
-
# @raise [Chef::Exceptions::AttributeNotFound] If the attribute file could not be found.
|
368
|
-
#
|
369
|
-
def resolve_attribute(cookbook_name, attr_file_name)
|
370
|
-
cookbook = cookbook_collection[cookbook_name]
|
371
|
-
raise Chef::Exceptions::CookbookNotFound, "could not find cookbook #{cookbook_name} while loading attribute #{name}" unless cookbook
|
372
|
-
|
373
|
-
attribute_filename = cookbook.attribute_filenames_by_short_filename[attr_file_name]
|
374
|
-
raise Chef::Exceptions::AttributeNotFound, "could not find filename for attribute #{attr_file_name} in cookbook #{cookbook_name}" unless attribute_filename
|
375
|
-
|
376
|
-
attribute_filename
|
377
|
-
end
|
378
|
-
|
379
|
-
#
|
380
|
-
# A list of all recipes that have been loaded.
|
381
|
-
#
|
382
|
-
# This is stored internally as a Hash, so ordering is predictable.
|
383
|
-
#
|
384
|
-
# TODO is the above statement true in a 1.9+ ruby world? Is it relevant?
|
385
|
-
#
|
386
|
-
# @return [Array[String]] A list of recipes in fully qualified form, e.g.
|
387
|
-
# the recipe "nginx" will be given as "nginx::default".
|
388
|
-
#
|
389
|
-
# @see #loaded_recipe? To determine if a particular recipe has been loaded.
|
390
|
-
#
|
391
|
-
def loaded_recipes
|
392
|
-
loaded_recipes_hash.keys
|
393
|
-
end
|
394
|
-
|
395
|
-
#
|
396
|
-
# A list of all attributes files that have been loaded.
|
397
|
-
#
|
398
|
-
# Stored internally using a Hash, so order is predictable.
|
399
|
-
#
|
400
|
-
# TODO is the above statement true in a 1.9+ ruby world? Is it relevant?
|
401
|
-
#
|
402
|
-
# @return [Array[String]] A list of attribute file names in fully qualified
|
403
|
-
# form, e.g. the "nginx" will be given as "nginx::default".
|
404
|
-
#
|
405
|
-
def loaded_attributes
|
406
|
-
loaded_attributes_hash.keys
|
407
|
-
end
|
408
|
-
|
409
|
-
#
|
410
|
-
# Find out if a given recipe has been loaded.
|
411
|
-
#
|
412
|
-
# @param cookbook [String] Cookbook name.
|
413
|
-
# @param recipe [String] Recipe name.
|
414
|
-
#
|
415
|
-
# @return [Boolean] `true` if the recipe has been loaded, `false` otherwise.
|
416
|
-
#
|
417
|
-
def loaded_fully_qualified_recipe?(cookbook, recipe)
|
418
|
-
loaded_recipes_hash.has_key?("#{cookbook}::#{recipe}")
|
419
|
-
end
|
420
|
-
|
421
|
-
#
|
422
|
-
# Find out if a given recipe has been loaded.
|
423
|
-
#
|
424
|
-
# @param recipe [String] Recipe name. "nginx" and "nginx::default" yield
|
425
|
-
# the same results.
|
426
|
-
#
|
427
|
-
# @return [Boolean] `true` if the recipe has been loaded, `false` otherwise.
|
428
|
-
#
|
429
|
-
def loaded_recipe?(recipe)
|
430
|
-
cookbook, recipe_name = Chef::Recipe.parse_recipe_name(recipe)
|
431
|
-
loaded_fully_qualified_recipe?(cookbook, recipe_name)
|
432
|
-
end
|
433
|
-
|
434
|
-
#
|
435
|
-
# Mark a given recipe as having been loaded.
|
436
|
-
#
|
437
|
-
# @param cookbook [String] Cookbook name.
|
438
|
-
# @param recipe [String] Recipe name.
|
439
|
-
#
|
440
|
-
def loaded_recipe(cookbook, recipe)
|
441
|
-
loaded_recipes_hash["#{cookbook}::#{recipe}"] = true
|
442
|
-
end
|
443
|
-
|
444
|
-
#
|
445
|
-
# Find out if a given attribute file has been loaded.
|
446
|
-
#
|
447
|
-
# @param cookbook [String] Cookbook name.
|
448
|
-
# @param attribute_file [String] Attribute file name.
|
449
|
-
#
|
450
|
-
# @return [Boolean] `true` if the recipe has been loaded, `false` otherwise.
|
451
|
-
#
|
452
|
-
def loaded_fully_qualified_attribute?(cookbook, attribute_file)
|
453
|
-
loaded_attributes_hash.has_key?("#{cookbook}::#{attribute_file}")
|
454
|
-
end
|
455
|
-
|
456
|
-
#
|
457
|
-
# Mark a given attribute file as having been loaded.
|
458
|
-
#
|
459
|
-
# @param cookbook [String] Cookbook name.
|
460
|
-
# @param attribute_file [String] Attribute file name.
|
461
|
-
#
|
462
|
-
def loaded_attribute(cookbook, attribute_file)
|
463
|
-
loaded_attributes_hash["#{cookbook}::#{attribute_file}"] = true
|
464
|
-
end
|
465
|
-
|
466
|
-
##
|
467
|
-
# Cookbook File Introspection
|
468
|
-
|
469
|
-
#
|
470
|
-
# Find out if the cookbook has the given template.
|
471
|
-
#
|
472
|
-
# @param cookbook [String] Cookbook name.
|
473
|
-
# @param template_name [String] Template name.
|
474
|
-
#
|
475
|
-
# @return [Boolean] `true` if the template is in the cookbook, `false`
|
476
|
-
# otherwise.
|
477
|
-
# @see Chef::CookbookVersion#has_template_for_node?
|
478
|
-
#
|
479
|
-
def has_template_in_cookbook?(cookbook, template_name)
|
480
|
-
cookbook = cookbook_collection[cookbook]
|
481
|
-
cookbook.has_template_for_node?(node, template_name)
|
482
|
-
end
|
483
|
-
|
484
|
-
#
|
485
|
-
# Find out if the cookbook has the given file.
|
486
|
-
#
|
487
|
-
# @param cookbook [String] Cookbook name.
|
488
|
-
# @param cb_file_name [String] File name.
|
489
|
-
#
|
490
|
-
# @return [Boolean] `true` if the file is in the cookbook, `false`
|
491
|
-
# otherwise.
|
492
|
-
# @see Chef::CookbookVersion#has_cookbook_file_for_node?
|
493
|
-
#
|
494
|
-
def has_cookbook_file_in_cookbook?(cookbook, cb_file_name)
|
495
|
-
cookbook = cookbook_collection[cookbook]
|
496
|
-
cookbook.has_cookbook_file_for_node?(node, cb_file_name)
|
497
|
-
end
|
498
|
-
|
499
|
-
#
|
500
|
-
# Find out whether the given cookbook is in the cookbook dependency graph.
|
501
|
-
#
|
502
|
-
# @param cookbook_name [String] Cookbook name.
|
503
|
-
#
|
504
|
-
# @return [Boolean] `true` if the cookbook is reachable, `false` otherwise.
|
505
|
-
#
|
506
|
-
# @see Chef::CookbookCompiler#unreachable_cookbook?
|
507
|
-
def unreachable_cookbook?(cookbook_name)
|
508
|
-
cookbook_compiler.unreachable_cookbook?(cookbook_name)
|
509
|
-
end
|
510
|
-
|
511
|
-
#
|
512
|
-
# Open a stream object that can be printed into and will dispatch to events
|
513
|
-
#
|
514
|
-
# @param name [String] The name of the stream.
|
515
|
-
# @param options [Hash] Other options for the stream.
|
516
|
-
#
|
517
|
-
# @return [EventDispatch::EventsOutputStream] The created stream.
|
518
|
-
#
|
519
|
-
# @yield If a block is passed, it will be run and the stream will be closed
|
520
|
-
# afterwards.
|
521
|
-
# @yieldparam stream [EventDispatch::EventsOutputStream] The created stream.
|
522
|
-
#
|
523
|
-
def open_stream(name: nil, **options)
|
524
|
-
stream = EventDispatch::EventsOutputStream.new(events, name: name, **options)
|
525
|
-
if block_given?
|
526
|
-
begin
|
527
|
-
yield stream
|
528
|
-
ensure
|
529
|
-
stream.close
|
530
|
-
end
|
531
|
-
else
|
532
|
-
stream
|
533
|
-
end
|
534
|
-
end
|
535
|
-
|
536
|
-
# there are options for how to handle multiple calls to these functions:
|
537
|
-
# 1. first call always wins (never change reboot_info once set).
|
538
|
-
# 2. last call always wins (happily change reboot_info whenever).
|
539
|
-
# 3. raise an exception on the first conflict.
|
540
|
-
# 4. disable reboot after this run if anyone ever calls :cancel.
|
541
|
-
# 5. raise an exception on any second call.
|
542
|
-
# 6. ?
|
543
|
-
def request_reboot(reboot_info)
|
544
|
-
Chef::Log
|
545
|
-
@reboot_info = reboot_info
|
546
|
-
end
|
547
|
-
|
548
|
-
def cancel_reboot
|
549
|
-
Chef::Log
|
550
|
-
@reboot_info = {}
|
551
|
-
end
|
552
|
-
|
553
|
-
def reboot_requested?
|
554
|
-
reboot_info.size > 0
|
555
|
-
end
|
556
|
-
|
557
|
-
#
|
558
|
-
# Create a child RunContext.
|
559
|
-
#
|
560
|
-
def create_child
|
561
|
-
ChildRunContext.new(self)
|
562
|
-
end
|
563
|
-
|
564
|
-
# @api private
|
565
|
-
attr_writer :resource_collection
|
566
|
-
|
567
|
-
protected
|
568
|
-
|
569
|
-
attr_reader :cookbook_compiler
|
570
|
-
attr_reader :loaded_attributes_hash
|
571
|
-
attr_reader :loaded_recipes_hash
|
572
|
-
|
573
|
-
module Deprecated
|
574
|
-
###
|
575
|
-
# These need to be settable so deploy can run a resource_collection
|
576
|
-
# independent of any cookbooks via +recipe_eval+
|
577
|
-
def audits=(value)
|
578
|
-
Chef.log_deprecation("Setting run_context.audits will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
579
|
-
@audits = value
|
580
|
-
end
|
581
|
-
|
582
|
-
def immediate_notification_collection=(value)
|
583
|
-
Chef.log_deprecation("Setting run_context.immediate_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
584
|
-
@immediate_notification_collection = value
|
585
|
-
end
|
586
|
-
|
587
|
-
def delayed_notification_collection=(value)
|
588
|
-
Chef.log_deprecation("Setting run_context.delayed_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
589
|
-
@delayed_notification_collection = value
|
590
|
-
end
|
591
|
-
end
|
592
|
-
prepend Deprecated
|
593
|
-
|
594
|
-
#
|
595
|
-
# A child run context. Delegates all root context calls to its parent.
|
596
|
-
#
|
597
|
-
# @api private
|
598
|
-
#
|
599
|
-
class ChildRunContext < RunContext
|
600
|
-
extend Forwardable
|
601
|
-
def_delegators :parent_run_context, *%w{
|
602
|
-
cancel_reboot
|
603
|
-
config
|
604
|
-
cookbook_collection
|
605
|
-
cookbook_compiler
|
606
|
-
definitions
|
607
|
-
events
|
608
|
-
has_cookbook_file_in_cookbook?
|
609
|
-
has_template_in_cookbook?
|
610
|
-
load
|
611
|
-
loaded_attribute
|
612
|
-
loaded_attributes
|
613
|
-
loaded_attributes_hash
|
614
|
-
loaded_fully_qualified_attribute?
|
615
|
-
loaded_fully_qualified_recipe?
|
616
|
-
loaded_recipe
|
617
|
-
loaded_recipe?
|
618
|
-
loaded_recipes
|
619
|
-
loaded_recipes_hash
|
620
|
-
node
|
621
|
-
open_stream
|
622
|
-
reboot_info
|
623
|
-
reboot_info=
|
624
|
-
reboot_requested?
|
625
|
-
request_reboot
|
626
|
-
resolve_attribute
|
627
|
-
unreachable_cookbook?
|
628
|
-
}
|
629
|
-
|
630
|
-
def initialize(parent_run_context)
|
631
|
-
@parent_run_context = parent_run_context
|
632
|
-
|
633
|
-
# We don't call super, because we don't bother initializing stuff we're
|
634
|
-
# going to delegate to the parent anyway. Just initialize things that
|
635
|
-
# every instance needs.
|
636
|
-
initialize_child_state
|
637
|
-
end
|
638
|
-
|
639
|
-
CHILD_STATE = %w{
|
640
|
-
audits
|
641
|
-
audits=
|
642
|
-
create_child
|
643
|
-
delayed_notification_collection
|
644
|
-
delayed_notification_collection=
|
645
|
-
delayed_notifications
|
646
|
-
immediate_notification_collection
|
647
|
-
immediate_notification_collection=
|
648
|
-
immediate_notifications
|
649
|
-
before_notification_collection
|
650
|
-
before_notifications
|
651
|
-
include_recipe
|
652
|
-
initialize_child_state
|
653
|
-
load_recipe
|
654
|
-
load_recipe_file
|
655
|
-
notifies_before
|
656
|
-
notifies_immediately
|
657
|
-
notifies_delayed
|
658
|
-
parent_run_context
|
659
|
-
resource_collection
|
660
|
-
resource_collection=
|
661
|
-
}.map { |x| x.to_sym }
|
662
|
-
|
663
|
-
# Verify that we didn't miss any methods
|
664
|
-
missing_methods = superclass.instance_methods(false) - instance_methods(false) - CHILD_STATE
|
665
|
-
if !missing_methods.empty?
|
666
|
-
raise "ERROR: not all methods of RunContext accounted for in ChildRunContext! All methods must be marked as child methods with CHILD_STATE or delegated to the parent_run_context. Missing #{missing_methods.join(", ")}."
|
667
|
-
end
|
668
|
-
end
|
669
|
-
end
|
670
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
+
# Author:: Christopher Walters (<cw@chef.io>)
|
4
|
+
# Author:: Tim Hinderliter (<tim@chef.io>)
|
5
|
+
# Copyright:: Copyright 2008-2016, Chef Software Inc.
|
6
|
+
# License:: Apache License, Version 2.0
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
|
20
|
+
require "chef/resource_collection"
|
21
|
+
require "chef/cookbook_version"
|
22
|
+
require "chef/node"
|
23
|
+
require "chef/role"
|
24
|
+
require "chef/log"
|
25
|
+
require "chef/recipe"
|
26
|
+
require "chef/run_context/cookbook_compiler"
|
27
|
+
require "chef/event_dispatch/events_output_stream"
|
28
|
+
require "forwardable"
|
29
|
+
|
30
|
+
class Chef
|
31
|
+
|
32
|
+
# == Chef::RunContext
|
33
|
+
# Value object that loads and tracks the context of a Chef run
|
34
|
+
class RunContext
|
35
|
+
#
|
36
|
+
# Global state
|
37
|
+
#
|
38
|
+
|
39
|
+
#
|
40
|
+
# The node for this run
|
41
|
+
#
|
42
|
+
# @return [Chef::Node]
|
43
|
+
#
|
44
|
+
attr_reader :node
|
45
|
+
|
46
|
+
#
|
47
|
+
# The set of cookbooks involved in this run
|
48
|
+
#
|
49
|
+
# @return [Chef::CookbookCollection]
|
50
|
+
#
|
51
|
+
attr_reader :cookbook_collection
|
52
|
+
|
53
|
+
#
|
54
|
+
# Resource Definitions for this run. Populated when the files in
|
55
|
+
# +definitions/+ are evaluated (this is triggered by #load).
|
56
|
+
#
|
57
|
+
# @return [Array[Chef::ResourceDefinition]]
|
58
|
+
#
|
59
|
+
attr_reader :definitions
|
60
|
+
|
61
|
+
#
|
62
|
+
# Event dispatcher for this run.
|
63
|
+
#
|
64
|
+
# @return [Chef::EventDispatch::Dispatcher]
|
65
|
+
#
|
66
|
+
attr_reader :events
|
67
|
+
|
68
|
+
#
|
69
|
+
# Hash of factoids for a reboot request.
|
70
|
+
#
|
71
|
+
# @return [Hash]
|
72
|
+
#
|
73
|
+
attr_accessor :reboot_info
|
74
|
+
|
75
|
+
#
|
76
|
+
# Scoped state
|
77
|
+
#
|
78
|
+
|
79
|
+
#
|
80
|
+
# The parent run context.
|
81
|
+
#
|
82
|
+
# @return [Chef::RunContext] The parent run context, or `nil` if this is the
|
83
|
+
# root context.
|
84
|
+
#
|
85
|
+
attr_reader :parent_run_context
|
86
|
+
|
87
|
+
#
|
88
|
+
# The collection of resources intended to be converged (and able to be
|
89
|
+
# notified).
|
90
|
+
#
|
91
|
+
# @return [Chef::ResourceCollection]
|
92
|
+
#
|
93
|
+
# @see CookbookCompiler
|
94
|
+
#
|
95
|
+
attr_reader :resource_collection
|
96
|
+
|
97
|
+
#
|
98
|
+
# The list of control groups to execute during the audit phase
|
99
|
+
#
|
100
|
+
attr_reader :audits
|
101
|
+
|
102
|
+
#
|
103
|
+
# Notification handling
|
104
|
+
#
|
105
|
+
|
106
|
+
#
|
107
|
+
# A Hash containing the before notifications triggered by resources
|
108
|
+
# during the converge phase of the chef run.
|
109
|
+
#
|
110
|
+
# @return [Hash[String, Array[Chef::Resource::Notification]]] A hash from
|
111
|
+
# <notifying resource name> => <list of notifications it sent>
|
112
|
+
#
|
113
|
+
attr_reader :before_notification_collection
|
114
|
+
|
115
|
+
#
|
116
|
+
# A Hash containing the immediate notifications triggered by resources
|
117
|
+
# during the converge phase of the chef run.
|
118
|
+
#
|
119
|
+
# @return [Hash[String, Array[Chef::Resource::Notification]]] A hash from
|
120
|
+
# <notifying resource name> => <list of notifications it sent>
|
121
|
+
#
|
122
|
+
attr_reader :immediate_notification_collection
|
123
|
+
|
124
|
+
#
|
125
|
+
# A Hash containing the delayed (end of run) notifications triggered by
|
126
|
+
# resources during the converge phase of the chef run.
|
127
|
+
#
|
128
|
+
# @return [Hash[String, Array[Chef::Resource::Notification]]] A hash from
|
129
|
+
# <notifying resource name> => <list of notifications it sent>
|
130
|
+
#
|
131
|
+
attr_reader :delayed_notification_collection
|
132
|
+
|
133
|
+
# Creates a new Chef::RunContext object and populates its fields. This object gets
|
134
|
+
# used by the Chef Server to generate a fully compiled recipe list for a node.
|
135
|
+
#
|
136
|
+
# @param node [Chef::Node] The node to run against.
|
137
|
+
# @param cookbook_collection [Chef::CookbookCollection] The cookbooks
|
138
|
+
# involved in this run.
|
139
|
+
# @param events [EventDispatch::Dispatcher] The event dispatcher for this
|
140
|
+
# run.
|
141
|
+
#
|
142
|
+
def initialize(node, cookbook_collection, events)
|
143
|
+
@node = node
|
144
|
+
@cookbook_collection = cookbook_collection
|
145
|
+
@events = events
|
146
|
+
|
147
|
+
node.run_context = self
|
148
|
+
node.set_cookbook_attribute
|
149
|
+
|
150
|
+
@definitions = Hash.new
|
151
|
+
@loaded_recipes_hash = {}
|
152
|
+
@loaded_attributes_hash = {}
|
153
|
+
@reboot_info = {}
|
154
|
+
@cookbook_compiler = nil
|
155
|
+
|
156
|
+
initialize_child_state
|
157
|
+
end
|
158
|
+
|
159
|
+
#
|
160
|
+
# Triggers the compile phase of the chef run.
|
161
|
+
#
|
162
|
+
# @param run_list_expansion [Chef::RunList::RunListExpansion] The run list.
|
163
|
+
# @see Chef::RunContext::CookbookCompiler
|
164
|
+
#
|
165
|
+
def load(run_list_expansion)
|
166
|
+
@cookbook_compiler = CookbookCompiler.new(self, run_list_expansion, events)
|
167
|
+
cookbook_compiler.compile
|
168
|
+
end
|
169
|
+
|
170
|
+
#
|
171
|
+
# Initialize state that applies to both Chef::RunContext and Chef::ChildRunContext
|
172
|
+
#
|
173
|
+
def initialize_child_state
|
174
|
+
@audits = {}
|
175
|
+
@resource_collection = Chef::ResourceCollection.new
|
176
|
+
@before_notification_collection = Hash.new { |h, k| h[k] = [] }
|
177
|
+
@immediate_notification_collection = Hash.new { |h, k| h[k] = [] }
|
178
|
+
@delayed_notification_collection = Hash.new { |h, k| h[k] = [] }
|
179
|
+
end
|
180
|
+
|
181
|
+
#
|
182
|
+
# Adds an before notification to the +before_notification_collection+.
|
183
|
+
#
|
184
|
+
# @param [Chef::Resource::Notification] The notification to add.
|
185
|
+
#
|
186
|
+
def notifies_before(notification)
|
187
|
+
nr = notification.notifying_resource
|
188
|
+
if nr.instance_of?(Chef::Resource)
|
189
|
+
before_notification_collection[nr.name] << notification
|
190
|
+
else
|
191
|
+
before_notification_collection[nr.declared_key] << notification
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
#
|
196
|
+
# Adds an immediate notification to the +immediate_notification_collection+.
|
197
|
+
#
|
198
|
+
# @param [Chef::Resource::Notification] The notification to add.
|
199
|
+
#
|
200
|
+
def notifies_immediately(notification)
|
201
|
+
nr = notification.notifying_resource
|
202
|
+
if nr.instance_of?(Chef::Resource)
|
203
|
+
immediate_notification_collection[nr.name] << notification
|
204
|
+
else
|
205
|
+
immediate_notification_collection[nr.declared_key] << notification
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
#
|
210
|
+
# Adds a delayed notification to the +delayed_notification_collection+.
|
211
|
+
#
|
212
|
+
# @param [Chef::Resource::Notification] The notification to add.
|
213
|
+
#
|
214
|
+
def notifies_delayed(notification)
|
215
|
+
nr = notification.notifying_resource
|
216
|
+
if nr.instance_of?(Chef::Resource)
|
217
|
+
delayed_notification_collection[nr.name] << notification
|
218
|
+
else
|
219
|
+
delayed_notification_collection[nr.declared_key] << notification
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
#
|
224
|
+
# Get the list of before notifications sent by the given resource.
|
225
|
+
#
|
226
|
+
# TODO seriously, this is actually wrong. resource.name is not unique,
|
227
|
+
# you need the type as well.
|
228
|
+
#
|
229
|
+
# @return [Array[Notification]]
|
230
|
+
#
|
231
|
+
def before_notifications(resource)
|
232
|
+
if resource.instance_of?(Chef::Resource)
|
233
|
+
return before_notification_collection[resource.name]
|
234
|
+
else
|
235
|
+
return before_notification_collection[resource.declared_key]
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
#
|
240
|
+
# Get the list of immediate notifications sent by the given resource.
|
241
|
+
#
|
242
|
+
# TODO seriously, this is actually wrong. resource.name is not unique,
|
243
|
+
# you need the type as well.
|
244
|
+
#
|
245
|
+
# @return [Array[Notification]]
|
246
|
+
#
|
247
|
+
def immediate_notifications(resource)
|
248
|
+
if resource.instance_of?(Chef::Resource)
|
249
|
+
return immediate_notification_collection[resource.name]
|
250
|
+
else
|
251
|
+
return immediate_notification_collection[resource.declared_key]
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
#
|
256
|
+
# Get the list of delayed (end of run) notifications sent by the given
|
257
|
+
# resource.
|
258
|
+
#
|
259
|
+
# TODO seriously, this is actually wrong. resource.name is not unique,
|
260
|
+
# you need the type as well.
|
261
|
+
#
|
262
|
+
# @return [Array[Notification]]
|
263
|
+
#
|
264
|
+
def delayed_notifications(resource)
|
265
|
+
if resource.instance_of?(Chef::Resource)
|
266
|
+
return delayed_notification_collection[resource.name]
|
267
|
+
else
|
268
|
+
return delayed_notification_collection[resource.declared_key]
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
#
|
273
|
+
# Cookbook and recipe loading
|
274
|
+
#
|
275
|
+
|
276
|
+
#
|
277
|
+
# Evaluates the recipes +recipe_names+. Used by DSL::IncludeRecipe
|
278
|
+
#
|
279
|
+
# @param recipe_names [Array[String]] The list of recipe names (e.g.
|
280
|
+
# 'my_cookbook' or 'my_cookbook::my_resource').
|
281
|
+
# @param current_cookbook The cookbook we are currently running in.
|
282
|
+
#
|
283
|
+
# @see DSL::IncludeRecipe#include_recipe
|
284
|
+
#
|
285
|
+
def include_recipe(*recipe_names, current_cookbook: nil)
|
286
|
+
result_recipes = Array.new
|
287
|
+
recipe_names.flatten.each do |recipe_name|
|
288
|
+
if result = load_recipe(recipe_name, current_cookbook: current_cookbook)
|
289
|
+
result_recipes << result
|
290
|
+
end
|
291
|
+
end
|
292
|
+
result_recipes
|
293
|
+
end
|
294
|
+
|
295
|
+
#
|
296
|
+
# Evaluates the recipe +recipe_name+. Used by DSL::IncludeRecipe
|
297
|
+
#
|
298
|
+
# TODO I am sort of confused why we have both this and include_recipe ...
|
299
|
+
# I don't see anything different beyond accepting and returning an
|
300
|
+
# array of recipes.
|
301
|
+
#
|
302
|
+
# @param recipe_names [Array[String]] The recipe name (e.g 'my_cookbook' or
|
303
|
+
# 'my_cookbook::my_resource').
|
304
|
+
# @param current_cookbook The cookbook we are currently running in.
|
305
|
+
#
|
306
|
+
# @return A truthy value if the load occurred; `false` if already loaded.
|
307
|
+
#
|
308
|
+
# @see DSL::IncludeRecipe#load_recipe
|
309
|
+
#
|
310
|
+
def load_recipe(recipe_name, current_cookbook: nil)
|
311
|
+
Chef::Log.debug("Loading recipe #{recipe_name} via include_recipe")
|
312
|
+
|
313
|
+
cookbook_name, recipe_short_name = Chef::Recipe.parse_recipe_name(recipe_name, current_cookbook: current_cookbook)
|
314
|
+
|
315
|
+
if unreachable_cookbook?(cookbook_name) # CHEF-4367
|
316
|
+
Chef::Log.warn(<<-ERROR_MESSAGE)
|
317
|
+
MissingCookbookDependency:
|
318
|
+
Recipe `#{recipe_name}` is not in the run_list, and cookbook '#{cookbook_name}'
|
319
|
+
is not a dependency of any cookbook in the run_list. To load this recipe,
|
320
|
+
first add a dependency on cookbook '#{cookbook_name}' in the cookbook you're
|
321
|
+
including it from in that cookbook's metadata.
|
322
|
+
ERROR_MESSAGE
|
323
|
+
end
|
324
|
+
|
325
|
+
if loaded_fully_qualified_recipe?(cookbook_name, recipe_short_name)
|
326
|
+
Chef::Log.debug("I am not loading #{recipe_name}, because I have already seen it.")
|
327
|
+
false
|
328
|
+
else
|
329
|
+
loaded_recipe(cookbook_name, recipe_short_name)
|
330
|
+
node.loaded_recipe(cookbook_name, recipe_short_name)
|
331
|
+
cookbook = cookbook_collection[cookbook_name]
|
332
|
+
cookbook.load_recipe(recipe_short_name, self)
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
#
|
337
|
+
# Load the given recipe from a filename.
|
338
|
+
#
|
339
|
+
# @param recipe_file [String] The recipe filename.
|
340
|
+
#
|
341
|
+
# @return [Chef::Recipe] The loaded recipe.
|
342
|
+
#
|
343
|
+
# @raise [Chef::Exceptions::RecipeNotFound] If the file does not exist.
|
344
|
+
#
|
345
|
+
def load_recipe_file(recipe_file)
|
346
|
+
if !File.exist?(recipe_file)
|
347
|
+
raise Chef::Exceptions::RecipeNotFound, "could not find recipe file #{recipe_file}"
|
348
|
+
end
|
349
|
+
|
350
|
+
Chef::Log.debug("Loading recipe file #{recipe_file}")
|
351
|
+
recipe = Chef::Recipe.new("@recipe_files", recipe_file, self)
|
352
|
+
recipe.from_file(recipe_file)
|
353
|
+
recipe
|
354
|
+
end
|
355
|
+
|
356
|
+
#
|
357
|
+
# Look up an attribute filename.
|
358
|
+
#
|
359
|
+
# @param cookbook_name [String] The cookbook name of the attribute file.
|
360
|
+
# @param attr_file_name [String] The attribute file's name (not path).
|
361
|
+
#
|
362
|
+
# @return [String] The filename.
|
363
|
+
#
|
364
|
+
# @see DSL::IncludeAttribute#include_attribute
|
365
|
+
#
|
366
|
+
# @raise [Chef::Exceptions::CookbookNotFound] If the cookbook could not be found.
|
367
|
+
# @raise [Chef::Exceptions::AttributeNotFound] If the attribute file could not be found.
|
368
|
+
#
|
369
|
+
def resolve_attribute(cookbook_name, attr_file_name)
|
370
|
+
cookbook = cookbook_collection[cookbook_name]
|
371
|
+
raise Chef::Exceptions::CookbookNotFound, "could not find cookbook #{cookbook_name} while loading attribute #{name}" unless cookbook
|
372
|
+
|
373
|
+
attribute_filename = cookbook.attribute_filenames_by_short_filename[attr_file_name]
|
374
|
+
raise Chef::Exceptions::AttributeNotFound, "could not find filename for attribute #{attr_file_name} in cookbook #{cookbook_name}" unless attribute_filename
|
375
|
+
|
376
|
+
attribute_filename
|
377
|
+
end
|
378
|
+
|
379
|
+
#
|
380
|
+
# A list of all recipes that have been loaded.
|
381
|
+
#
|
382
|
+
# This is stored internally as a Hash, so ordering is predictable.
|
383
|
+
#
|
384
|
+
# TODO is the above statement true in a 1.9+ ruby world? Is it relevant?
|
385
|
+
#
|
386
|
+
# @return [Array[String]] A list of recipes in fully qualified form, e.g.
|
387
|
+
# the recipe "nginx" will be given as "nginx::default".
|
388
|
+
#
|
389
|
+
# @see #loaded_recipe? To determine if a particular recipe has been loaded.
|
390
|
+
#
|
391
|
+
def loaded_recipes
|
392
|
+
loaded_recipes_hash.keys
|
393
|
+
end
|
394
|
+
|
395
|
+
#
|
396
|
+
# A list of all attributes files that have been loaded.
|
397
|
+
#
|
398
|
+
# Stored internally using a Hash, so order is predictable.
|
399
|
+
#
|
400
|
+
# TODO is the above statement true in a 1.9+ ruby world? Is it relevant?
|
401
|
+
#
|
402
|
+
# @return [Array[String]] A list of attribute file names in fully qualified
|
403
|
+
# form, e.g. the "nginx" will be given as "nginx::default".
|
404
|
+
#
|
405
|
+
def loaded_attributes
|
406
|
+
loaded_attributes_hash.keys
|
407
|
+
end
|
408
|
+
|
409
|
+
#
|
410
|
+
# Find out if a given recipe has been loaded.
|
411
|
+
#
|
412
|
+
# @param cookbook [String] Cookbook name.
|
413
|
+
# @param recipe [String] Recipe name.
|
414
|
+
#
|
415
|
+
# @return [Boolean] `true` if the recipe has been loaded, `false` otherwise.
|
416
|
+
#
|
417
|
+
def loaded_fully_qualified_recipe?(cookbook, recipe)
|
418
|
+
loaded_recipes_hash.has_key?("#{cookbook}::#{recipe}")
|
419
|
+
end
|
420
|
+
|
421
|
+
#
|
422
|
+
# Find out if a given recipe has been loaded.
|
423
|
+
#
|
424
|
+
# @param recipe [String] Recipe name. "nginx" and "nginx::default" yield
|
425
|
+
# the same results.
|
426
|
+
#
|
427
|
+
# @return [Boolean] `true` if the recipe has been loaded, `false` otherwise.
|
428
|
+
#
|
429
|
+
def loaded_recipe?(recipe)
|
430
|
+
cookbook, recipe_name = Chef::Recipe.parse_recipe_name(recipe)
|
431
|
+
loaded_fully_qualified_recipe?(cookbook, recipe_name)
|
432
|
+
end
|
433
|
+
|
434
|
+
#
|
435
|
+
# Mark a given recipe as having been loaded.
|
436
|
+
#
|
437
|
+
# @param cookbook [String] Cookbook name.
|
438
|
+
# @param recipe [String] Recipe name.
|
439
|
+
#
|
440
|
+
def loaded_recipe(cookbook, recipe)
|
441
|
+
loaded_recipes_hash["#{cookbook}::#{recipe}"] = true
|
442
|
+
end
|
443
|
+
|
444
|
+
#
|
445
|
+
# Find out if a given attribute file has been loaded.
|
446
|
+
#
|
447
|
+
# @param cookbook [String] Cookbook name.
|
448
|
+
# @param attribute_file [String] Attribute file name.
|
449
|
+
#
|
450
|
+
# @return [Boolean] `true` if the recipe has been loaded, `false` otherwise.
|
451
|
+
#
|
452
|
+
def loaded_fully_qualified_attribute?(cookbook, attribute_file)
|
453
|
+
loaded_attributes_hash.has_key?("#{cookbook}::#{attribute_file}")
|
454
|
+
end
|
455
|
+
|
456
|
+
#
|
457
|
+
# Mark a given attribute file as having been loaded.
|
458
|
+
#
|
459
|
+
# @param cookbook [String] Cookbook name.
|
460
|
+
# @param attribute_file [String] Attribute file name.
|
461
|
+
#
|
462
|
+
def loaded_attribute(cookbook, attribute_file)
|
463
|
+
loaded_attributes_hash["#{cookbook}::#{attribute_file}"] = true
|
464
|
+
end
|
465
|
+
|
466
|
+
##
|
467
|
+
# Cookbook File Introspection
|
468
|
+
|
469
|
+
#
|
470
|
+
# Find out if the cookbook has the given template.
|
471
|
+
#
|
472
|
+
# @param cookbook [String] Cookbook name.
|
473
|
+
# @param template_name [String] Template name.
|
474
|
+
#
|
475
|
+
# @return [Boolean] `true` if the template is in the cookbook, `false`
|
476
|
+
# otherwise.
|
477
|
+
# @see Chef::CookbookVersion#has_template_for_node?
|
478
|
+
#
|
479
|
+
def has_template_in_cookbook?(cookbook, template_name)
|
480
|
+
cookbook = cookbook_collection[cookbook]
|
481
|
+
cookbook.has_template_for_node?(node, template_name)
|
482
|
+
end
|
483
|
+
|
484
|
+
#
|
485
|
+
# Find out if the cookbook has the given file.
|
486
|
+
#
|
487
|
+
# @param cookbook [String] Cookbook name.
|
488
|
+
# @param cb_file_name [String] File name.
|
489
|
+
#
|
490
|
+
# @return [Boolean] `true` if the file is in the cookbook, `false`
|
491
|
+
# otherwise.
|
492
|
+
# @see Chef::CookbookVersion#has_cookbook_file_for_node?
|
493
|
+
#
|
494
|
+
def has_cookbook_file_in_cookbook?(cookbook, cb_file_name)
|
495
|
+
cookbook = cookbook_collection[cookbook]
|
496
|
+
cookbook.has_cookbook_file_for_node?(node, cb_file_name)
|
497
|
+
end
|
498
|
+
|
499
|
+
#
|
500
|
+
# Find out whether the given cookbook is in the cookbook dependency graph.
|
501
|
+
#
|
502
|
+
# @param cookbook_name [String] Cookbook name.
|
503
|
+
#
|
504
|
+
# @return [Boolean] `true` if the cookbook is reachable, `false` otherwise.
|
505
|
+
#
|
506
|
+
# @see Chef::CookbookCompiler#unreachable_cookbook?
|
507
|
+
def unreachable_cookbook?(cookbook_name)
|
508
|
+
cookbook_compiler.unreachable_cookbook?(cookbook_name)
|
509
|
+
end
|
510
|
+
|
511
|
+
#
|
512
|
+
# Open a stream object that can be printed into and will dispatch to events
|
513
|
+
#
|
514
|
+
# @param name [String] The name of the stream.
|
515
|
+
# @param options [Hash] Other options for the stream.
|
516
|
+
#
|
517
|
+
# @return [EventDispatch::EventsOutputStream] The created stream.
|
518
|
+
#
|
519
|
+
# @yield If a block is passed, it will be run and the stream will be closed
|
520
|
+
# afterwards.
|
521
|
+
# @yieldparam stream [EventDispatch::EventsOutputStream] The created stream.
|
522
|
+
#
|
523
|
+
def open_stream(name: nil, **options)
|
524
|
+
stream = EventDispatch::EventsOutputStream.new(events, name: name, **options)
|
525
|
+
if block_given?
|
526
|
+
begin
|
527
|
+
yield stream
|
528
|
+
ensure
|
529
|
+
stream.close
|
530
|
+
end
|
531
|
+
else
|
532
|
+
stream
|
533
|
+
end
|
534
|
+
end
|
535
|
+
|
536
|
+
# there are options for how to handle multiple calls to these functions:
|
537
|
+
# 1. first call always wins (never change reboot_info once set).
|
538
|
+
# 2. last call always wins (happily change reboot_info whenever).
|
539
|
+
# 3. raise an exception on the first conflict.
|
540
|
+
# 4. disable reboot after this run if anyone ever calls :cancel.
|
541
|
+
# 5. raise an exception on any second call.
|
542
|
+
# 6. ?
|
543
|
+
def request_reboot(reboot_info)
|
544
|
+
Chef::Log.info "Changing reboot status from #{self.reboot_info.inspect} to #{reboot_info.inspect}"
|
545
|
+
@reboot_info = reboot_info
|
546
|
+
end
|
547
|
+
|
548
|
+
def cancel_reboot
|
549
|
+
Chef::Log.info "Changing reboot status from #{reboot_info.inspect} to {}"
|
550
|
+
@reboot_info = {}
|
551
|
+
end
|
552
|
+
|
553
|
+
def reboot_requested?
|
554
|
+
reboot_info.size > 0
|
555
|
+
end
|
556
|
+
|
557
|
+
#
|
558
|
+
# Create a child RunContext.
|
559
|
+
#
|
560
|
+
def create_child
|
561
|
+
ChildRunContext.new(self)
|
562
|
+
end
|
563
|
+
|
564
|
+
# @api private
|
565
|
+
attr_writer :resource_collection
|
566
|
+
|
567
|
+
protected
|
568
|
+
|
569
|
+
attr_reader :cookbook_compiler
|
570
|
+
attr_reader :loaded_attributes_hash
|
571
|
+
attr_reader :loaded_recipes_hash
|
572
|
+
|
573
|
+
module Deprecated
|
574
|
+
###
|
575
|
+
# These need to be settable so deploy can run a resource_collection
|
576
|
+
# independent of any cookbooks via +recipe_eval+
|
577
|
+
def audits=(value)
|
578
|
+
Chef.log_deprecation("Setting run_context.audits will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
579
|
+
@audits = value
|
580
|
+
end
|
581
|
+
|
582
|
+
def immediate_notification_collection=(value)
|
583
|
+
Chef.log_deprecation("Setting run_context.immediate_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
584
|
+
@immediate_notification_collection = value
|
585
|
+
end
|
586
|
+
|
587
|
+
def delayed_notification_collection=(value)
|
588
|
+
Chef.log_deprecation("Setting run_context.delayed_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
589
|
+
@delayed_notification_collection = value
|
590
|
+
end
|
591
|
+
end
|
592
|
+
prepend Deprecated
|
593
|
+
|
594
|
+
#
|
595
|
+
# A child run context. Delegates all root context calls to its parent.
|
596
|
+
#
|
597
|
+
# @api private
|
598
|
+
#
|
599
|
+
class ChildRunContext < RunContext
|
600
|
+
extend Forwardable
|
601
|
+
def_delegators :parent_run_context, *%w{
|
602
|
+
cancel_reboot
|
603
|
+
config
|
604
|
+
cookbook_collection
|
605
|
+
cookbook_compiler
|
606
|
+
definitions
|
607
|
+
events
|
608
|
+
has_cookbook_file_in_cookbook?
|
609
|
+
has_template_in_cookbook?
|
610
|
+
load
|
611
|
+
loaded_attribute
|
612
|
+
loaded_attributes
|
613
|
+
loaded_attributes_hash
|
614
|
+
loaded_fully_qualified_attribute?
|
615
|
+
loaded_fully_qualified_recipe?
|
616
|
+
loaded_recipe
|
617
|
+
loaded_recipe?
|
618
|
+
loaded_recipes
|
619
|
+
loaded_recipes_hash
|
620
|
+
node
|
621
|
+
open_stream
|
622
|
+
reboot_info
|
623
|
+
reboot_info=
|
624
|
+
reboot_requested?
|
625
|
+
request_reboot
|
626
|
+
resolve_attribute
|
627
|
+
unreachable_cookbook?
|
628
|
+
}
|
629
|
+
|
630
|
+
def initialize(parent_run_context)
|
631
|
+
@parent_run_context = parent_run_context
|
632
|
+
|
633
|
+
# We don't call super, because we don't bother initializing stuff we're
|
634
|
+
# going to delegate to the parent anyway. Just initialize things that
|
635
|
+
# every instance needs.
|
636
|
+
initialize_child_state
|
637
|
+
end
|
638
|
+
|
639
|
+
CHILD_STATE = %w{
|
640
|
+
audits
|
641
|
+
audits=
|
642
|
+
create_child
|
643
|
+
delayed_notification_collection
|
644
|
+
delayed_notification_collection=
|
645
|
+
delayed_notifications
|
646
|
+
immediate_notification_collection
|
647
|
+
immediate_notification_collection=
|
648
|
+
immediate_notifications
|
649
|
+
before_notification_collection
|
650
|
+
before_notifications
|
651
|
+
include_recipe
|
652
|
+
initialize_child_state
|
653
|
+
load_recipe
|
654
|
+
load_recipe_file
|
655
|
+
notifies_before
|
656
|
+
notifies_immediately
|
657
|
+
notifies_delayed
|
658
|
+
parent_run_context
|
659
|
+
resource_collection
|
660
|
+
resource_collection=
|
661
|
+
}.map { |x| x.to_sym }
|
662
|
+
|
663
|
+
# Verify that we didn't miss any methods
|
664
|
+
missing_methods = superclass.instance_methods(false) - instance_methods(false) - CHILD_STATE
|
665
|
+
if !missing_methods.empty?
|
666
|
+
raise "ERROR: not all methods of RunContext accounted for in ChildRunContext! All methods must be marked as child methods with CHILD_STATE or delegated to the parent_run_context. Missing #{missing_methods.join(", ")}."
|
667
|
+
end
|
668
|
+
end
|
669
|
+
end
|
670
|
+
end
|