chef 14.13.11-universal-mingw32 → 14.14.14-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/Gemfile +72 -72
- data/LICENSE +201 -201
- data/README.md +240 -240
- data/Rakefile +72 -72
- data/bin/chef-apply +24 -24
- data/bin/chef-client +25 -25
- data/bin/chef-resource-inspector +26 -26
- data/bin/chef-service-manager +37 -37
- data/bin/chef-shell +31 -31
- data/bin/chef-solo +24 -24
- data/bin/chef-windows-service +34 -34
- data/bin/knife +24 -24
- data/chef-universal-mingw32.gemspec +24 -24
- data/chef.gemspec +62 -62
- data/distro/powershell/chef/chef.psm1 +459 -459
- data/ext/win32-eventlog/Rakefile +53 -53
- data/ext/win32-eventlog/chef-log.man +56 -56
- data/lib/.DS_Store +0 -0
- data/lib/chef.rb +34 -34
- data/lib/chef/.DS_Store +0 -0
- data/lib/chef/api_client.rb +228 -228
- data/lib/chef/api_client/registration.rb +200 -200
- data/lib/chef/api_client_v1.rb +326 -326
- data/lib/chef/application.rb +398 -398
- data/lib/chef/application/apply.rb +226 -226
- data/lib/chef/application/client.rb +559 -559
- data/lib/chef/application/exit_code.rb +164 -164
- data/lib/chef/application/knife.rb +221 -221
- data/lib/chef/application/solo.rb +381 -381
- data/lib/chef/application/windows_service.rb +337 -337
- data/lib/chef/application/windows_service_manager.rb +204 -204
- data/lib/chef/applications.rb +4 -4
- data/lib/chef/audit/audit_event_proxy.rb +93 -93
- data/lib/chef/audit/audit_reporter.rb +176 -176
- data/lib/chef/audit/control_group_data.rb +145 -145
- 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/blacklist.rb +81 -81
- data/lib/chef/chef_class.rb +248 -248
- data/lib/chef/chef_fs.rb +59 -59
- data/lib/chef/chef_fs/chef_fs_data_store.rb +870 -870
- data/lib/chef/chef_fs/command_line.rb +291 -291
- data/lib/chef/chef_fs/config.rb +284 -284
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
- data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +67 -67
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +207 -207
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
- data/lib/chef/chef_fs/file_pattern.rb +301 -301
- data/lib/chef/chef_fs/file_system.rb +431 -431
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +187 -187
- 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 +67 -67
- 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 +106 -106
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +208 -208
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +78 -78
- 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 +105 -105
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +76 -76
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -19
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +67 -67
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +56 -56
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +51 -51
- data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +35 -35
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +65 -65
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +64 -64
- 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 +158 -158
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +135 -135
- 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 +38 -38
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +176 -176
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +207 -207
- 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 +111 -111
- data/lib/chef/chef_fs/file_system/exceptions.rb +105 -105
- 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 +62 -62
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +32 -32
- data/lib/chef/chef_fs/file_system/repository/acl.rb +45 -45
- data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +50 -50
- data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +155 -155
- 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 +143 -143
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +177 -177
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +232 -232
- 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/client.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/client_key.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/container.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +51 -51
- data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/directory.rb +167 -167
- data/lib/chef/chef_fs/file_system/repository/environment.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +151 -151
- data/lib/chef/chef_fs/file_system/repository/group.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/node.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +59 -59
- data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/policy.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/policy_group.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/role.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/user.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/users_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
- data/lib/chef/chef_fs/file_system_cache.rb +80 -80
- data/lib/chef/chef_fs/knife.rb +161 -161
- data/lib/chef/chef_fs/parallelizer.rb +103 -103
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +277 -277
- data/lib/chef/chef_fs/path_utils.rb +127 -127
- data/lib/chef/client.rb +1037 -1037
- data/lib/chef/config.rb +84 -84
- data/lib/chef/config_fetcher.rb +72 -72
- data/lib/chef/constants.rb +28 -28
- data/lib/chef/cookbook/chefignore.rb +78 -78
- data/lib/chef/cookbook/cookbook_collection.rb +63 -63
- data/lib/chef/cookbook/cookbook_version_loader.rb +267 -267
- data/lib/chef/cookbook/file_system_file_vendor.rb +58 -58
- data/lib/chef/cookbook/file_vendor.rb +71 -71
- data/lib/chef/cookbook/gem_installer.rb +100 -95
- data/lib/chef/cookbook/manifest_v0.rb +73 -73
- data/lib/chef/cookbook/manifest_v2.rb +45 -45
- data/lib/chef/cookbook/metadata.rb +804 -804
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
- data/lib/chef/cookbook/synchronizer.rb +312 -312
- data/lib/chef/cookbook/syntax_check.rb +260 -260
- data/lib/chef/cookbook_loader.rb +208 -208
- data/lib/chef/cookbook_manifest.rb +328 -328
- data/lib/chef/cookbook_site_streaming_uploader.rb +241 -241
- data/lib/chef/cookbook_uploader.rb +156 -156
- data/lib/chef/cookbook_version.rb +544 -544
- data/lib/chef/daemon.rb +131 -131
- data/lib/chef/data_bag.rb +174 -174
- data/lib/chef/data_bag_item.rb +209 -209
- data/lib/chef/data_collector.rb +565 -565
- data/lib/chef/data_collector/messages.rb +100 -100
- data/lib/chef/data_collector/messages/helpers.rb +159 -159
- data/lib/chef/data_collector/resource_report.rb +123 -123
- data/lib/chef/decorator.rb +81 -81
- data/lib/chef/decorator/lazy.rb +60 -60
- data/lib/chef/decorator/lazy_array.rb +59 -59
- data/lib/chef/decorator/unchain.rb +43 -43
- data/lib/chef/delayed_evaluator.rb +21 -21
- data/lib/chef/deprecated.rb +248 -248
- 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/.DS_Store +0 -0
- data/lib/chef/dsl/audit.rb +51 -51
- data/lib/chef/dsl/chef_provisioning.rb +57 -57
- data/lib/chef/dsl/cheffish.rb +65 -65
- data/lib/chef/dsl/core.rb +52 -52
- data/lib/chef/dsl/data_query.rb +103 -103
- data/lib/chef/dsl/declare_resource.rb +319 -319
- data/lib/chef/dsl/definitions.rb +43 -43
- data/lib/chef/dsl/include_attribute.rb +57 -57
- data/lib/chef/dsl/include_recipe.rb +40 -40
- data/lib/chef/dsl/platform_introspection.rb +269 -269
- data/lib/chef/dsl/powershell.rb +29 -29
- data/lib/chef/dsl/reboot_pending.rb +57 -57
- data/lib/chef/dsl/recipe.rb +76 -76
- data/lib/chef/dsl/registry_helper.rb +63 -63
- data/lib/chef/dsl/resources.rb +49 -49
- data/lib/chef/dsl/universal.rb +60 -60
- data/lib/chef/encrypted_data_bag_item.rb +157 -157
- 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 +319 -319
- data/lib/chef/event_dispatch/base.rb +445 -445
- 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 +543 -531
- 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 +337 -337
- data/lib/chef/file_cache.rb +223 -223
- data/lib/chef/file_content_management/content_base.rb +58 -58
- 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 +77 -77
- data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
- data/lib/chef/file_content_management/tempfile.rb +107 -107
- data/lib/chef/formatters/base.rb +246 -246
- data/lib/chef/formatters/doc.rb +443 -443
- data/lib/chef/formatters/error_description.rb +86 -86
- data/lib/chef/formatters/error_inspectors.rb +19 -19
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +183 -183
- 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 +182 -182
- 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 +47 -47
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
- data/lib/chef/handler.rb +266 -266
- data/lib/chef/handler/error_report.rb +33 -33
- data/lib/chef/handler/json_file.rb +62 -62
- data/lib/chef/http.rb +539 -539
- data/lib/chef/http/api_versions.rb +56 -56
- data/lib/chef/http/auth_credentials.rb +59 -59
- data/lib/chef/http/authenticator.rb +118 -118
- data/lib/chef/http/basic_client.rb +157 -157
- 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 +189 -189
- data/lib/chef/http/json_input.rb +73 -73
- data/lib/chef/http/json_output.rb +81 -81
- 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 +209 -209
- data/lib/chef/http/ssl_policies.rb +130 -130
- data/lib/chef/http/validate_content_length.rb +114 -114
- data/lib/chef/json_compat.rb +68 -68
- data/lib/chef/key.rb +269 -269
- data/lib/chef/knife.rb +620 -620
- data/lib/chef/knife/.DS_Store +0 -0
- data/lib/chef/knife/bootstrap.rb +525 -501
- 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 +243 -243
- data/lib/chef/knife/client_bulk_delete.rb +103 -103
- data/lib/chef/knife/client_create.rb +110 -110
- data/lib/chef/knife/client_delete.rb +62 -62
- data/lib/chef/knife/client_edit.rb +52 -52
- data/lib/chef/knife/client_key_create.rb +70 -70
- data/lib/chef/knife/client_key_delete.rb +77 -77
- data/lib/chef/knife/client_key_edit.rb +80 -80
- data/lib/chef/knife/client_key_list.rb +70 -70
- data/lib/chef/knife/client_key_show.rb +77 -77
- data/lib/chef/knife/client_list.rb +41 -41
- data/lib/chef/knife/client_reregister.rb +58 -58
- data/lib/chef/knife/client_show.rb +48 -48
- data/lib/chef/knife/config_get.rb +126 -126
- data/lib/chef/knife/config_get_profile.rb +37 -37
- data/lib/chef/knife/config_list_profiles.rb +121 -121
- data/lib/chef/knife/config_use_profile.rb +50 -50
- data/lib/chef/knife/configure.rb +147 -147
- data/lib/chef/knife/configure_client.rb +48 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_create.rb +29 -29
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +142 -142
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +106 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +43 -43
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_site_download.rb +40 -40
- data/lib/chef/knife/cookbook_site_install.rb +40 -40
- data/lib/chef/knife/cookbook_site_list.rb +40 -40
- data/lib/chef/knife/cookbook_site_search.rb +40 -40
- data/lib/chef/knife/cookbook_site_share.rb +41 -41
- data/lib/chef/knife/cookbook_site_show.rb +40 -40
- data/lib/chef/knife/cookbook_site_unshare.rb +41 -41
- data/lib/chef/knife/cookbook_test.rb +95 -95
- data/lib/chef/knife/cookbook_upload.rb +308 -308
- data/lib/chef/knife/core/bootstrap_context.rb +273 -273
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
- data/lib/chef/knife/core/generic_presenter.rb +231 -231
- data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
- data/lib/chef/knife/core/node_editor.rb +130 -130
- data/lib/chef/knife/core/node_presenter.rb +158 -158
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +172 -172
- data/lib/chef/knife/core/subcommand_loader.rb +183 -183
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +286 -286
- data/lib/chef/knife/data_bag_create.rb +80 -80
- 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 +113 -113
- 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 +125 -125
- data/lib/chef/knife/deps.rb +154 -154
- data/lib/chef/knife/diff.rb +84 -84
- data/lib/chef/knife/download.rb +84 -84
- data/lib/chef/knife/edit.rb +88 -88
- data/lib/chef/knife/environment_compare.rb +127 -127
- data/lib/chef/knife/environment_create.rb +52 -52
- data/lib/chef/knife/environment_delete.rb +44 -44
- data/lib/chef/knife/environment_edit.rb +44 -44
- data/lib/chef/knife/environment_from_file.rb +84 -84
- data/lib/chef/knife/environment_list.rb +41 -41
- data/lib/chef/knife/environment_show.rb +47 -47
- data/lib/chef/knife/exec.rb +87 -87
- data/lib/chef/knife/key_create.rb +112 -112
- data/lib/chef/knife/key_create_base.rb +50 -50
- data/lib/chef/knife/key_delete.rb +55 -55
- data/lib/chef/knife/key_edit.rb +118 -118
- data/lib/chef/knife/key_edit_base.rb +55 -55
- data/lib/chef/knife/key_list.rb +88 -88
- data/lib/chef/knife/key_list_base.rb +45 -45
- data/lib/chef/knife/key_show.rb +53 -53
- data/lib/chef/knife/list.rb +172 -172
- 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_policy_set.rb +79 -79
- 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 +61 -61
- 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 +53 -53
- data/lib/chef/knife/raw.rb +124 -124
- data/lib/chef/knife/recipe_list.rb +32 -32
- data/lib/chef/knife/rehash.rb +65 -65
- data/lib/chef/knife/role_bulk_delete.rb +65 -65
- data/lib/chef/knife/role_create.rb +53 -53
- data/lib/chef/knife/role_delete.rb +46 -46
- data/lib/chef/knife/role_edit.rb +45 -45
- data/lib/chef/knife/role_env_run_list_add.rb +87 -87
- 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 +60 -60
- 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 +87 -87
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +56 -56
- data/lib/chef/knife/role_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_run_list_set.rb +69 -69
- data/lib/chef/knife/role_show.rb +48 -48
- data/lib/chef/knife/search.rb +194 -194
- data/lib/chef/knife/serve.rb +64 -64
- data/lib/chef/knife/show.rb +72 -72
- data/lib/chef/knife/ssh.rb +634 -634
- data/lib/chef/knife/ssl_check.rb +283 -283
- data/lib/chef/knife/ssl_fetch.rb +161 -161
- data/lib/chef/knife/status.rb +110 -110
- data/lib/chef/knife/supermarket_download.rb +122 -122
- data/lib/chef/knife/supermarket_install.rb +193 -193
- data/lib/chef/knife/supermarket_list.rb +65 -65
- data/lib/chef/knife/supermarket_search.rb +53 -53
- data/lib/chef/knife/supermarket_share.rb +166 -166
- data/lib/chef/knife/supermarket_show.rb +67 -67
- data/lib/chef/knife/supermarket_unshare.rb +61 -61
- 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 +86 -86
- data/lib/chef/knife/user_create.rb +151 -151
- data/lib/chef/knife/user_delete.rb +96 -96
- data/lib/chef/knife/user_edit.rb +82 -82
- data/lib/chef/knife/user_key_create.rb +70 -70
- data/lib/chef/knife/user_key_delete.rb +77 -77
- data/lib/chef/knife/user_key_edit.rb +80 -80
- data/lib/chef/knife/user_key_list.rb +70 -70
- data/lib/chef/knife/user_key_show.rb +77 -77
- data/lib/chef/knife/user_list.rb +44 -44
- data/lib/chef/knife/user_reregister.rb +90 -90
- data/lib/chef/knife/user_show.rb +79 -79
- data/lib/chef/knife/xargs.rb +282 -282
- data/lib/chef/local_mode.rb +129 -129
- data/lib/chef/log.rb +70 -70
- data/lib/chef/log/syslog.rb +45 -45
- data/lib/chef/log/winevt.rb +99 -99
- data/lib/chef/mash.rb +232 -232
- data/lib/chef/mixin/.DS_Store +0 -0
- data/lib/chef/mixin/api_version_request_handling.rb +64 -64
- data/lib/chef/mixin/checksum.rb +37 -37
- data/lib/chef/mixin/convert_to_class_name.rb +126 -126
- data/lib/chef/mixin/create_path.rb +71 -71
- data/lib/chef/mixin/deep_merge.rb +140 -140
- data/lib/chef/mixin/deprecation.rb +117 -117
- 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 +55 -55
- data/lib/chef/mixin/get_source_from_package.rb +47 -47
- data/lib/chef/mixin/homebrew_user.rb +79 -79
- data/lib/chef/mixin/lazy_module_include.rb +77 -77
- data/lib/chef/mixin/notifying_block.rb +51 -51
- data/lib/chef/mixin/openssl_helper.rb +402 -402
- data/lib/chef/mixin/params_validate.rb +498 -498
- data/lib/chef/mixin/path_sanity.rb +66 -66
- data/lib/chef/mixin/powershell_exec.rb +105 -105
- 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 +323 -323
- data/lib/chef/mixin/provides.rb +29 -29
- data/lib/chef/mixin/proxified_socket.rb +42 -42
- data/lib/chef/mixin/securable.rb +192 -192
- data/lib/chef/mixin/shell_out.rb +258 -258
- data/lib/chef/mixin/subclass_directive.rb +37 -37
- data/lib/chef/mixin/template.rb +265 -265
- data/lib/chef/mixin/unformatter.rb +32 -32
- data/lib/chef/mixin/uris.rb +42 -42
- data/lib/chef/mixin/user_context.rb +55 -55
- data/lib/chef/mixin/versioned_api.rb +84 -84
- data/lib/chef/mixin/which.rb +52 -52
- data/lib/chef/mixin/why_run.rb +326 -326
- data/lib/chef/mixin/wide_string.rb +54 -54
- data/lib/chef/mixin/windows_architecture_helper.rb +113 -113
- data/lib/chef/mixin/windows_env_helper.rb +67 -67
- data/lib/chef/mixin/xml_escape.rb +138 -138
- data/lib/chef/mixins.rb +12 -12
- data/lib/chef/monkey_patches/net_http.rb +64 -64
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
- data/lib/chef/monkey_patches/win32/registry.rb +86 -86
- data/lib/chef/monologger.rb +4 -4
- data/lib/chef/nil_argument.rb +3 -3
- data/lib/chef/node.rb +688 -688
- data/lib/chef/node/attribute.rb +649 -649
- data/lib/chef/node/attribute_collections.rb +213 -213
- data/lib/chef/node/common_api.rb +121 -121
- data/lib/chef/node/immutable_collections.rb +182 -182
- data/lib/chef/node/mixin/deep_merge_cache.rb +61 -61
- data/lib/chef/node/mixin/immutablize_array.rb +180 -180
- data/lib/chef/node/mixin/immutablize_hash.rb +165 -165
- data/lib/chef/node/mixin/state_tracking.rb +96 -96
- data/lib/chef/node_map.rb +315 -315
- data/lib/chef/null_logger.rb +79 -79
- data/lib/chef/org.rb +144 -144
- data/lib/chef/platform.rb +30 -30
- 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 +55 -55
- data/lib/chef/platform/provider_priority_map.rb +11 -11
- data/lib/chef/platform/query_helpers.rb +100 -100
- data/lib/chef/platform/rebooter.rb +71 -71
- 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 +252 -252
- data/lib/chef/policy_builder/policyfile.rb +569 -569
- data/lib/chef/powershell.rb +57 -57
- data/lib/chef/property.rb +731 -731
- data/lib/chef/provider.rb +410 -408
- data/lib/chef/provider/.DS_Store +0 -0
- data/lib/chef/provider/apt_preference.rb +94 -94
- data/lib/chef/provider/apt_repository.rb +360 -360
- data/lib/chef/provider/apt_update.rb +80 -80
- data/lib/chef/provider/batch.rb +45 -45
- data/lib/chef/provider/cookbook_file.rb +47 -47
- data/lib/chef/provider/cookbook_file/content.rb +49 -49
- data/lib/chef/provider/cron.rb +256 -256
- 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/directory.rb +164 -164
- data/lib/chef/provider/dsc_resource.rb +209 -209
- data/lib/chef/provider/dsc_script.rb +185 -185
- data/lib/chef/provider/execute.rb +130 -130
- data/lib/chef/provider/file.rb +478 -478
- data/lib/chef/provider/file/content.rb +39 -39
- data/lib/chef/provider/git.rb +357 -357
- data/lib/chef/provider/group.rb +179 -179
- data/lib/chef/provider/group/aix.rb +79 -79
- data/lib/chef/provider/group/dscl.rb +177 -177
- data/lib/chef/provider/group/gpasswd.rb +58 -58
- data/lib/chef/provider/group/groupadd.rb +133 -133
- data/lib/chef/provider/group/groupmod.rb +123 -123
- data/lib/chef/provider/group/pw.rb +137 -137
- data/lib/chef/provider/group/suse.rb +83 -83
- data/lib/chef/provider/group/usermod.rb +90 -90
- data/lib/chef/provider/group/windows.rb +110 -110
- data/lib/chef/provider/http_request.rb +132 -132
- data/lib/chef/provider/ifconfig.rb +271 -271
- data/lib/chef/provider/ifconfig/aix.rb +94 -94
- data/lib/chef/provider/ifconfig/debian.rb +88 -88
- data/lib/chef/provider/ifconfig/redhat.rb +54 -54
- data/lib/chef/provider/launchd.rb +231 -231
- data/lib/chef/provider/link.rb +168 -168
- data/lib/chef/provider/log.rb +43 -43
- data/lib/chef/provider/lwrp_base.rb +89 -89
- data/lib/chef/provider/mdadm.rb +85 -85
- data/lib/chef/provider/mount.rb +175 -175
- data/lib/chef/provider/mount/aix.rb +221 -221
- data/lib/chef/provider/mount/mount.rb +283 -283
- data/lib/chef/provider/mount/solaris.rb +275 -275
- data/lib/chef/provider/mount/windows.rb +92 -92
- data/lib/chef/provider/noop.rb +37 -37
- data/lib/chef/provider/ohai.rb +45 -45
- data/lib/chef/provider/osx_profile.rb +251 -251
- data/lib/chef/provider/package.rb +687 -687
- data/lib/chef/provider/package/.DS_Store +0 -0
- data/lib/chef/provider/package/apt.rb +249 -249
- data/lib/chef/provider/package/bff.rb +142 -142
- data/lib/chef/provider/package/cab.rb +187 -187
- data/lib/chef/provider/package/chocolatey.rb +285 -285
- data/lib/chef/provider/package/dnf.rb +196 -196
- data/lib/chef/provider/package/dnf/dnf_helper.py +114 -100
- data/lib/chef/provider/package/dnf/python_helper.rb +173 -173
- data/lib/chef/provider/package/dnf/version.rb +56 -56
- data/lib/chef/provider/package/dpkg.rb +241 -241
- data/lib/chef/provider/package/freebsd/.DS_Store +0 -0
- 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 +76 -76
- data/lib/chef/provider/package/freebsd/port.rb +60 -60
- data/lib/chef/provider/package/homebrew.rb +138 -138
- data/lib/chef/provider/package/ips.rb +85 -85
- data/lib/chef/provider/package/macports.rb +101 -101
- data/lib/chef/provider/package/msu.rb +161 -161
- data/lib/chef/provider/package/openbsd.rb +139 -139
- data/lib/chef/provider/package/pacman.rb +103 -103
- data/lib/chef/provider/package/paludis.rb +85 -85
- data/lib/chef/provider/package/portage.rb +133 -133
- data/lib/chef/provider/package/powershell.rb +133 -133
- data/lib/chef/provider/package/rpm.rb +126 -126
- data/lib/chef/provider/package/rubygems.rb +617 -617
- data/lib/chef/provider/package/smartos.rb +92 -92
- data/lib/chef/provider/package/solaris.rb +137 -137
- data/lib/chef/provider/package/windows.rb +317 -317
- data/lib/chef/provider/package/windows/exe.rb +117 -117
- data/lib/chef/provider/package/windows/msi.rb +96 -96
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +99 -99
- data/lib/chef/provider/package/yum.rb +289 -289
- data/lib/chef/provider/package/yum/python_helper.rb +222 -222
- data/lib/chef/provider/package/yum/rpm_utils.rb +651 -651
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -318
- data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -354
- data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -440
- data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -65
- data/lib/chef/provider/package/yum/simplejson/tool.py +37 -37
- data/lib/chef/provider/package/yum/version.rb +56 -56
- data/lib/chef/provider/package/yum/yum_cache.rb +93 -93
- data/lib/chef/provider/package/yum/yum_helper.py +211 -211
- data/lib/chef/provider/package/zypper.rb +167 -167
- data/lib/chef/provider/powershell_script.rb +223 -223
- data/lib/chef/provider/reboot.rb +78 -78
- data/lib/chef/provider/registry_key.rb +199 -199
- data/lib/chef/provider/remote_directory.rb +269 -269
- data/lib/chef/provider/remote_file.rb +66 -66
- 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 +60 -60
- data/lib/chef/provider/remote_file/ftp.rb +172 -172
- data/lib/chef/provider/remote_file/http.rb +143 -143
- data/lib/chef/provider/remote_file/local_file.rb +60 -60
- data/lib/chef/provider/remote_file/network_file.rb +61 -61
- data/lib/chef/provider/remote_file/sftp.rb +105 -105
- data/lib/chef/provider/resource_update.rb +52 -52
- data/lib/chef/provider/route.rb +248 -248
- data/lib/chef/provider/ruby_block.rb +40 -40
- data/lib/chef/provider/script.rb +121 -121
- data/lib/chef/provider/service.rb +252 -252
- data/lib/chef/provider/service/aix.rb +125 -125
- 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 +193 -193
- data/lib/chef/provider/service/freebsd.rb +194 -194
- data/lib/chef/provider/service/gentoo.rb +70 -70
- data/lib/chef/provider/service/init.rb +93 -93
- data/lib/chef/provider/service/insserv.rb +61 -61
- data/lib/chef/provider/service/invokercd.rb +41 -41
- data/lib/chef/provider/service/macosx.rb +252 -252
- data/lib/chef/provider/service/openbsd.rb +216 -216
- data/lib/chef/provider/service/redhat.rb +126 -126
- data/lib/chef/provider/service/simple.rb +172 -172
- data/lib/chef/provider/service/solaris.rb +127 -127
- data/lib/chef/provider/service/systemd.rb +189 -189
- data/lib/chef/provider/service/upstart.rb +260 -260
- data/lib/chef/provider/service/windows.rb +488 -488
- data/lib/chef/provider/subversion.rb +227 -227
- data/lib/chef/provider/support/yum_repo.erb +138 -138
- data/lib/chef/provider/support/zypper_repo.erb +17 -17
- data/lib/chef/provider/systemd_unit.rb +261 -261
- data/lib/chef/provider/template.rb +59 -59
- data/lib/chef/provider/template/content.rb +93 -93
- data/lib/chef/provider/template_finder.rb +62 -62
- data/lib/chef/provider/user.rb +221 -221
- data/lib/chef/provider/user/aix.rb +131 -131
- data/lib/chef/provider/user/dscl.rb +712 -712
- data/lib/chef/provider/user/linux.rb +116 -116
- data/lib/chef/provider/user/pw.rb +105 -105
- data/lib/chef/provider/user/solaris.rb +160 -160
- data/lib/chef/provider/user/useradd.rb +161 -161
- data/lib/chef/provider/user/windows.rb +126 -126
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
- data/lib/chef/provider/windows_env.rb +207 -207
- data/lib/chef/provider/windows_path.rb +61 -61
- data/lib/chef/provider/windows_script.rb +75 -75
- data/lib/chef/provider/windows_task.rb +631 -631
- data/lib/chef/provider/yum_repository.rb +130 -130
- data/lib/chef/provider/zypper_repository.rb +169 -169
- data/lib/chef/provider_resolver.rb +146 -146
- data/lib/chef/providers.rb +146 -146
- data/lib/chef/recipe.rb +110 -110
- data/lib/chef/request_id.rb +37 -37
- data/lib/chef/reserved_names.rb +9 -9
- data/lib/chef/resource.rb +1593 -1584
- data/lib/chef/resource/.DS_Store +0 -0
- data/lib/chef/resource/action_class.rb +90 -90
- data/lib/chef/resource/apt_package.rb +40 -40
- data/lib/chef/resource/apt_preference.rb +52 -52
- data/lib/chef/resource/apt_repository.rb +86 -86
- data/lib/chef/resource/apt_update.rb +41 -41
- data/lib/chef/resource/bash.rb +34 -34
- data/lib/chef/resource/batch.rb +34 -34
- data/lib/chef/resource/bff_package.rb +31 -31
- data/lib/chef/resource/breakpoint.rb +47 -47
- data/lib/chef/resource/build_essential.rb +142 -142
- data/lib/chef/resource/cab_package.rb +45 -45
- data/lib/chef/resource/chef_gem.rb +59 -59
- data/lib/chef/resource/chef_handler.rb +132 -132
- data/lib/chef/resource/chocolatey_config.rb +83 -83
- data/lib/chef/resource/chocolatey_package.rb +50 -50
- data/lib/chef/resource/chocolatey_source.rb +95 -95
- data/lib/chef/resource/conditional.rb +135 -135
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
- data/lib/chef/resource/cookbook_file.rb +45 -45
- data/lib/chef/resource/cron.rb +174 -174
- data/lib/chef/resource/cron_access.rb +70 -70
- data/lib/chef/resource/cron_d.rb +238 -238
- data/lib/chef/resource/csh.rb +39 -39
- data/lib/chef/resource/directory.rb +51 -51
- data/lib/chef/resource/dmg_package.rb +171 -171
- data/lib/chef/resource/dnf_package.rb +79 -79
- data/lib/chef/resource/dpkg_package.rb +33 -33
- data/lib/chef/resource/dsc_resource.rb +120 -120
- data/lib/chef/resource/dsc_script.rb +124 -124
- data/lib/chef/resource/execute.rb +201 -201
- data/lib/chef/resource/file.rb +105 -105
- data/lib/chef/resource/file/.DS_Store +0 -0
- data/lib/chef/resource/file/verification.rb +139 -139
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -67
- data/lib/chef/resource/freebsd_package.rb +73 -73
- data/lib/chef/resource/gem_package.rb +58 -58
- data/lib/chef/resource/git.rb +35 -35
- data/lib/chef/resource/group.rb +61 -61
- data/lib/chef/resource/homebrew_cask.rb +100 -100
- data/lib/chef/resource/homebrew_package.rb +38 -38
- data/lib/chef/resource/homebrew_tap.rb +87 -87
- data/lib/chef/resource/hostname.rb +265 -265
- data/lib/chef/resource/http_request.rb +55 -55
- data/lib/chef/resource/ifconfig.rb +105 -105
- data/lib/chef/resource/ips_package.rb +38 -38
- data/lib/chef/resource/kernel_module.rb +135 -135
- data/lib/chef/resource/ksh.rb +39 -39
- data/lib/chef/resource/launchd.rb +252 -252
- data/lib/chef/resource/link.rb +93 -93
- data/lib/chef/resource/locale.rb +94 -94
- data/lib/chef/resource/log.rb +52 -52
- data/lib/chef/resource/lwrp_base.rb +123 -123
- data/lib/chef/resource/macos_userdefaults.rb +132 -132
- data/lib/chef/resource/macosx_service.rb +41 -41
- data/lib/chef/resource/macports_package.rb +29 -29
- data/lib/chef/resource/mdadm.rb +67 -67
- data/lib/chef/resource/mount.rb +96 -96
- data/lib/chef/resource/msu_package.rb +49 -49
- data/lib/chef/resource/ohai.rb +41 -41
- data/lib/chef/resource/ohai_hint.rb +95 -95
- data/lib/chef/resource/openbsd_package.rb +38 -38
- data/lib/chef/resource/openssl_dhparam.rb +77 -77
- data/lib/chef/resource/openssl_ec_private_key.rb +93 -93
- data/lib/chef/resource/openssl_ec_public_key.rb +75 -75
- data/lib/chef/resource/openssl_rsa_private_key.rb +91 -91
- data/lib/chef/resource/openssl_rsa_public_key.rb +74 -74
- data/lib/chef/resource/openssl_x509_certificate.rb +221 -221
- data/lib/chef/resource/openssl_x509_crl.rb +132 -132
- data/lib/chef/resource/openssl_x509_request.rb +151 -151
- data/lib/chef/resource/osx_profile.rb +48 -48
- data/lib/chef/resource/package.rb +73 -73
- data/lib/chef/resource/pacman_package.rb +30 -30
- data/lib/chef/resource/paludis_package.rb +38 -38
- data/lib/chef/resource/perl.rb +38 -38
- data/lib/chef/resource/portage_package.rb +33 -33
- data/lib/chef/resource/powershell_package.rb +52 -52
- data/lib/chef/resource/powershell_package_source.rb +169 -169
- data/lib/chef/resource/powershell_script.rb +59 -59
- data/lib/chef/resource/python.rb +36 -36
- data/lib/chef/resource/reboot.rb +46 -46
- data/lib/chef/resource/registry_key.rb +130 -130
- data/lib/chef/resource/remote_directory.rb +87 -87
- data/lib/chef/resource/remote_file.rb +181 -181
- data/lib/chef/resource/resource_notification.rb +143 -139
- data/lib/chef/resource/rhsm_errata.rb +46 -46
- data/lib/chef/resource/rhsm_errata_level.rb +51 -51
- data/lib/chef/resource/rhsm_register.rb +168 -168
- data/lib/chef/resource/rhsm_repo.rb +65 -65
- data/lib/chef/resource/rhsm_subscription.rb +98 -98
- data/lib/chef/resource/route.rb +46 -46
- data/lib/chef/resource/rpm_package.rb +33 -33
- data/lib/chef/resource/ruby.rb +37 -37
- data/lib/chef/resource/ruby_block.rb +45 -45
- data/lib/chef/resource/scm.rb +75 -75
- data/lib/chef/resource/script.rb +54 -54
- data/lib/chef/resource/service.rb +221 -221
- data/lib/chef/resource/smartos_package.rb +31 -31
- data/lib/chef/resource/solaris_package.rb +33 -33
- data/lib/chef/resource/ssh_known_hosts_entry.rb +146 -146
- data/lib/chef/resource/subversion.rb +55 -55
- data/lib/chef/resource/sudo.rb +230 -230
- data/lib/chef/resource/support/cron.d.erb +28 -28
- data/lib/chef/resource/support/cron_access.erb +4 -4
- data/lib/chef/resource/support/ssh_known_hosts.erb +3 -3
- data/lib/chef/resource/support/sudoer.erb +18 -18
- data/lib/chef/resource/swap_file.rb +209 -209
- data/lib/chef/resource/sysctl.rb +151 -151
- data/lib/chef/resource/systemd_unit.rb +86 -86
- data/lib/chef/resource/template.rb +211 -211
- data/lib/chef/resource/timezone.rb +135 -135
- data/lib/chef/resource/user.rb +159 -159
- data/lib/chef/resource/user/aix_user.rb +31 -31
- data/lib/chef/resource/user/dscl_user.rb +31 -31
- data/lib/chef/resource/user/linux_user.rb +32 -32
- data/lib/chef/resource/user/pw_user.rb +31 -31
- data/lib/chef/resource/user/solaris_user.rb +31 -31
- data/lib/chef/resource/user/windows_user.rb +35 -35
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
- data/lib/chef/resource/windows_ad_join.rb +120 -120
- data/lib/chef/resource/windows_auto_run.rb +87 -87
- data/lib/chef/resource/windows_certificate.rb +332 -332
- data/lib/chef/resource/windows_env.rb +49 -49
- data/lib/chef/resource/windows_feature.rb +90 -90
- data/lib/chef/resource/windows_feature_dism.rb +222 -222
- data/lib/chef/resource/windows_feature_powershell.rb +262 -262
- data/lib/chef/resource/windows_firewall_rule.rb +205 -205
- data/lib/chef/resource/windows_font.rb +125 -125
- data/lib/chef/resource/windows_package.rb +61 -61
- data/lib/chef/resource/windows_pagefile.rb +206 -206
- data/lib/chef/resource/windows_path.rb +38 -38
- data/lib/chef/resource/windows_printer.rb +146 -146
- data/lib/chef/resource/windows_printer_port.rb +136 -136
- data/lib/chef/resource/windows_script.rb +65 -65
- data/lib/chef/resource/windows_service.rb +121 -121
- data/lib/chef/resource/windows_share.rb +324 -324
- data/lib/chef/resource/windows_shortcut.rb +79 -79
- data/lib/chef/resource/windows_task.rb +349 -349
- data/lib/chef/resource/windows_workgroup.rb +112 -112
- data/lib/chef/resource/yum_package.rb +77 -77
- data/lib/chef/resource/yum_repository.rb +187 -187
- data/lib/chef/resource/zypper_package.rb +44 -44
- data/lib/chef/resource/zypper_repository.rb +103 -103
- data/lib/chef/resource_builder.rb +92 -92
- data/lib/chef/resource_collection.rb +153 -147
- data/lib/chef/resource_collection/resource_collection_serialization.rb +68 -68
- data/lib/chef/resource_collection/resource_list.rb +106 -106
- data/lib/chef/resource_collection/resource_set.rb +200 -200
- data/lib/chef/resource_collection/stepable_iterator.rb +122 -122
- data/lib/chef/resource_definition.rb +68 -68
- data/lib/chef/resource_definition_list.rb +38 -38
- data/lib/chef/resource_inspector.rb +108 -108
- data/lib/chef/resource_reporter.rb +337 -337
- data/lib/chef/resource_resolver.rb +160 -160
- data/lib/chef/resources.rb +147 -147
- data/lib/chef/role.rb +274 -274
- data/lib/chef/run_context.rb +708 -682
- data/lib/chef/run_context/cookbook_compiler.rb +344 -344
- data/lib/chef/run_list.rb +168 -168
- data/lib/chef/run_list/run_list_expansion.rb +236 -236
- data/lib/chef/run_list/run_list_item.rb +98 -98
- data/lib/chef/run_list/versioned_recipe_list.rb +104 -104
- data/lib/chef/run_lock.rb +197 -197
- data/lib/chef/run_status.rb +127 -127
- data/lib/chef/runner.rb +184 -144
- data/lib/chef/sandbox.rb +20 -20
- data/lib/chef/scan_access_control.rb +138 -138
- data/lib/chef/search/query.rb +182 -182
- data/lib/chef/server_api.rb +83 -83
- data/lib/chef/server_api_versions.rb +59 -59
- data/lib/chef/shell.rb +353 -353
- data/lib/chef/shell/ext.rb +593 -593
- data/lib/chef/shell/model_wrapper.rb +120 -120
- data/lib/chef/shell/shell_session.rb +310 -310
- data/lib/chef/user.rb +194 -194
- data/lib/chef/user_v1.rb +325 -325
- 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 +192 -192
- data/lib/chef/util/dsc/local_configuration_manager.rb +151 -151
- 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 +173 -173
- 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 +93 -93
- data/lib/chef/util/threaded_job_queue.rb +61 -61
- data/lib/chef/util/windows.rb +24 -24
- data/lib/chef/util/windows/logon_session.rb +129 -129
- data/lib/chef/util/windows/net_group.rb +78 -78
- data/lib/chef/util/windows/net_use.rb +81 -81
- data/lib/chef/util/windows/net_user.rb +172 -172
- data/lib/chef/util/windows/volume.rb +49 -49
- data/lib/chef/version.rb +36 -36
- data/lib/chef/version/platform.rb +62 -62
- data/lib/chef/version_class.rb +75 -75
- data/lib/chef/version_constraint.rb +118 -118
- data/lib/chef/version_constraint/platform.rb +28 -28
- data/lib/chef/version_string.rb +143 -143
- data/lib/chef/whitelist.rb +86 -86
- data/lib/chef/win32/api.rb +372 -372
- data/lib/chef/win32/api/crypto.rb +63 -63
- data/lib/chef/win32/api/error.rb +953 -953
- data/lib/chef/win32/api/file.rb +620 -620
- 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 +328 -328
- 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 +476 -476
- data/lib/chef/win32/api/synchronization.rb +89 -89
- data/lib/chef/win32/api/system.rb +238 -238
- data/lib/chef/win32/api/unicode.rb +135 -135
- data/lib/chef/win32/crypto.rb +50 -50
- data/lib/chef/win32/error.rb +86 -86
- data/lib/chef/win32/eventlog.rb +31 -31
- data/lib/chef/win32/file.rb +226 -226
- 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 +326 -326
- data/lib/chef/win32/process.rb +97 -97
- data/lib/chef/win32/registry.rb +374 -374
- data/lib/chef/win32/security.rb +698 -698
- 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 +347 -347
- data/lib/chef/win32/security/token.rb +72 -72
- data/lib/chef/win32/system.rb +62 -62
- data/lib/chef/win32/unicode.rb +66 -66
- data/lib/chef/win32/version.rb +151 -151
- data/lib/chef/win32_service_constants.rb +143 -143
- data/lib/chef/workstation_config_loader.rb +23 -23
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
- data/spec/data/apt/var/www/apt/conf/distributions +7 -7
- data/spec/data/apt/var/www/apt/conf/incoming +4 -4
- data/spec/data/apt/var/www/apt/conf/pulls +3 -3
- data/spec/data/apt/var/www/apt/db/version +4 -4
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
- data/spec/data/bootstrap/no_proxy.erb +2 -2
- data/spec/data/bootstrap/secret.erb +9 -9
- data/spec/data/bootstrap/test-hints.erb +12 -12
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
- data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
- data/spec/data/client.d_00/00-foo.rb +2 -2
- data/spec/data/client.d_00/01-bar.rb +1 -1
- data/spec/data/client.d_00/02-strings.rb +2 -2
- data/spec/data/client.d_00/bar +1 -1
- data/spec/data/client.d_01/foo/bar.rb +1 -1
- data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
- data/spec/data/config.rb +6 -6
- data/spec/data/cookbooks/.DS_Store +0 -0
- 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/.DS_Store +0 -0
- data/spec/data/cookbooks/java/files/.DS_Store +0 -0
- data/spec/data/cookbooks/java/files/default/java.response +1 -1
- data/spec/data/cookbooks/java/metadata.rb +2 -2
- data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
- data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
- data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
- data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
- data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
- data/spec/data/cookbooks/openldap/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
- data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
- data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
- data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
- 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 +24 -24
- 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/buck_passer.rb +5 -5
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -3
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -3
- data/spec/data/lwrp/resources/foo.rb +4 -4
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -3
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -3
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -3
- 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/.DS_Store +0 -0
- 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/mixin/invalid_data.rb +3 -3
- data/spec/data/mixin/real_data.rb +2 -2
- data/spec/data/nested.json +2 -2
- data/spec/data/nodes/Tim.local.json +3 -0
- data/spec/data/nodes/Tims-MBP.local.json +3 -0
- 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/prefer_metadata_json/metadata.json +51 -51
- data/spec/data/prefer_metadata_json/metadata.rb +6 -6
- data/spec/data/recipes/test.rb +7 -7
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
- data/spec/data/run_context/.DS_Store +0 -0
- data/spec/data/run_context/cookbooks/.DS_Store +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/sample_msu1.xml +10 -10
- data/spec/data/sample_msu2.xml +14 -14
- data/spec/data/sample_msu3.xml +16 -16
- data/spec/data/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +11 -11
- 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/templates/failed.erb +5 -5
- data/spec/data/trusted_certs/example.crt +22 -22
- data/spec/data/trusted_certs/example_no_cn.crt +36 -36
- 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/data/windows_certificates/base64_test.cer +22 -22
- data/spec/data/windows_certificates/test.pem +21 -21
- data/spec/functional/.DS_Store +0 -0
- data/spec/functional/application_spec.rb +58 -58
- data/spec/functional/assets/chefinittest +36 -36
- data/spec/functional/assets/inittest +36 -36
- data/spec/functional/assets/testchefsubsys +10 -10
- data/spec/functional/assets/yumrepo/repodata/repomd.xml +21 -21
- 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 +104 -104
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
- data/spec/functional/http/simple_spec.rb +146 -146
- data/spec/functional/knife/configure_spec.rb +33 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +156 -156
- data/spec/functional/knife/exec_spec.rb +55 -55
- data/spec/functional/knife/rehash_spec.rb +39 -39
- data/spec/functional/knife/smoke_test.rb +42 -42
- data/spec/functional/knife/ssh_spec.rb +359 -359
- data/spec/functional/mixin/from_file_spec.rb +82 -82
- data/spec/functional/mixin/powershell_out_spec.rb +43 -43
- data/spec/functional/mixin/shell_out_spec.rb +78 -78
- data/spec/functional/mixin/user_context_spec.rb +117 -117
- 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 +117 -117
- data/spec/functional/resource/.DS_Store +0 -0
- data/spec/functional/resource/aix_service_spec.rb +138 -138
- data/spec/functional/resource/aixinit_service_spec.rb +211 -211
- data/spec/functional/resource/apt_package_spec.rb +386 -386
- data/spec/functional/resource/base.rb +28 -28
- data/spec/functional/resource/bash_spec.rb +54 -54
- data/spec/functional/resource/batch_spec.rb +34 -34
- data/spec/functional/resource/bff_spec.rb +120 -120
- data/spec/functional/resource/chocolatey_package_spec.rb +118 -118
- data/spec/functional/resource/cookbook_file_spec.rb +81 -81
- data/spec/functional/resource/cron_spec.rb +179 -179
- data/spec/functional/resource/directory_spec.rb +43 -43
- data/spec/functional/resource/dnf_package_spec.rb +686 -686
- 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 +484 -484
- data/spec/functional/resource/execute_spec.rb +171 -171
- data/spec/functional/resource/file_spec.rb +167 -167
- data/spec/functional/resource/git_spec.rb +257 -257
- data/spec/functional/resource/group_spec.rb +497 -497
- data/spec/functional/resource/ifconfig_spec.rb +172 -172
- data/spec/functional/resource/insserv_spec.rb +206 -205
- data/spec/functional/resource/link_spec.rb +699 -699
- data/spec/functional/resource/mount_spec.rb +207 -207
- data/spec/functional/resource/msu_package_spec.rb +98 -98
- data/spec/functional/resource/ohai_spec.rb +62 -62
- data/spec/functional/resource/powershell_script_spec.rb +599 -599
- data/spec/functional/resource/reboot_spec.rb +103 -103
- data/spec/functional/resource/registry_spec.rb +676 -676
- data/spec/functional/resource/remote_directory_spec.rb +220 -220
- data/spec/functional/resource/remote_file_spec.rb +424 -424
- data/spec/functional/resource/rpm_spec.rb +120 -120
- data/spec/functional/resource/template_spec.rb +245 -245
- data/spec/functional/resource/timezone_spec.rb +39 -39
- data/spec/functional/resource/user/dscl_spec.rb +195 -195
- data/spec/functional/resource/user/windows_spec.rb +245 -245
- data/spec/functional/resource/windows_certificate_spec.rb +492 -492
- data/spec/functional/resource/windows_env_spec.rb +285 -285
- data/spec/functional/resource/windows_package_spec.rb +168 -168
- data/spec/functional/resource/windows_path_spec.rb +64 -64
- data/spec/functional/resource/windows_service_spec.rb +102 -102
- data/spec/functional/resource/windows_task_spec.rb +1917 -1917
- data/spec/functional/resource/yum_package_spec.rb +959 -959
- data/spec/functional/resource/zypper_package_spec.rb +233 -233
- data/spec/functional/root_alias_spec.rb +78 -78
- data/spec/functional/run_lock_spec.rb +473 -473
- data/spec/functional/shell_spec.rb +146 -146
- data/spec/functional/tiny_server_spec.rb +79 -79
- data/spec/functional/util/.DS_Store +0 -0
- 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 +624 -624
- data/spec/functional/win32/security_spec.rb +206 -206
- 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 +115 -115
- data/spec/integration/.DS_Store +0 -0
- data/spec/integration/client/client_spec.rb +732 -732
- data/spec/integration/client/exit_code_spec.rb +142 -142
- 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 +961 -959
- data/spec/integration/knife/chef_repository_file_system_spec.rb +199 -199
- data/spec/integration/knife/chefignore_spec.rb +300 -300
- data/spec/integration/knife/client_bulk_delete_spec.rb +130 -130
- data/spec/integration/knife/client_create_spec.rb +69 -69
- data/spec/integration/knife/client_delete_spec.rb +63 -63
- data/spec/integration/knife/client_key_create_spec.rb +65 -65
- data/spec/integration/knife/client_key_delete_spec.rb +42 -42
- data/spec/integration/knife/client_key_list_spec.rb +60 -60
- data/spec/integration/knife/client_key_show_spec.rb +44 -44
- data/spec/integration/knife/client_list_spec.rb +48 -48
- data/spec/integration/knife/client_show_spec.rb +36 -36
- data/spec/integration/knife/common_options_spec.rb +173 -173
- data/spec/integration/knife/config_get_profile_spec.rb +112 -112
- data/spec/integration/knife/config_get_spec.rb +183 -183
- data/spec/integration/knife/config_list_profiles_spec.rb +188 -188
- data/spec/integration/knife/config_use_profile_spec.rb +100 -100
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -64
- data/spec/integration/knife/cookbook_download_spec.rb +71 -71
- data/spec/integration/knife/cookbook_list_spec.rb +54 -54
- data/spec/integration/knife/cookbook_show_spec.rb +148 -148
- data/spec/integration/knife/cookbook_upload_spec.rb +90 -90
- data/spec/integration/knife/data_bag_create_spec.rb +124 -124
- data/spec/integration/knife/data_bag_delete_spec.rb +58 -58
- data/spec/integration/knife/data_bag_edit_spec.rb +104 -104
- data/spec/integration/knife/data_bag_from_file_spec.rb +115 -115
- data/spec/integration/knife/data_bag_list_spec.rb +43 -43
- data/spec/integration/knife/data_bag_show_spec.rb +94 -94
- data/spec/integration/knife/delete_spec.rb +1017 -1017
- data/spec/integration/knife/deps_spec.rb +702 -702
- data/spec/integration/knife/diff_spec.rb +602 -602
- data/spec/integration/knife/download_spec.rb +1333 -1333
- data/spec/integration/knife/environment_compare_spec.rb +74 -74
- data/spec/integration/knife/environment_create_spec.rb +40 -40
- data/spec/integration/knife/environment_delete_spec.rb +36 -36
- data/spec/integration/knife/environment_from_file_spec.rb +115 -115
- data/spec/integration/knife/environment_list_spec.rb +41 -41
- data/spec/integration/knife/environment_show_spec.rb +76 -76
- data/spec/integration/knife/list_spec.rb +1059 -1059
- data/spec/integration/knife/node_bulk_delete_spec.rb +51 -51
- data/spec/integration/knife/node_create_spec.rb +46 -46
- data/spec/integration/knife/node_delete_spec.rb +47 -47
- data/spec/integration/knife/node_environment_set_spec.rb +45 -45
- data/spec/integration/knife/node_from_file_spec.rb +58 -58
- data/spec/integration/knife/node_list_spec.rb +44 -44
- data/spec/integration/knife/node_run_list_add_spec.rb +53 -53
- data/spec/integration/knife/node_run_list_remove_spec.rb +35 -35
- data/spec/integration/knife/node_run_list_set_spec.rb +40 -40
- data/spec/integration/knife/node_show_spec.rb +35 -35
- data/spec/integration/knife/raw_spec.rb +248 -248
- data/spec/integration/knife/redirection_spec.rb +54 -54
- data/spec/integration/knife/role_bulk_delete_spec.rb +51 -51
- data/spec/integration/knife/role_create_spec.rb +40 -40
- data/spec/integration/knife/role_delete_spec.rb +47 -47
- data/spec/integration/knife/role_from_file_spec.rb +95 -95
- data/spec/integration/knife/role_list_spec.rb +44 -44
- data/spec/integration/knife/role_show_spec.rb +50 -50
- data/spec/integration/knife/search_node_spec.rb +39 -39
- data/spec/integration/knife/serve_spec.rb +93 -93
- data/spec/integration/knife/show_spec.rb +167 -167
- data/spec/integration/knife/upload_spec.rb +1540 -1540
- data/spec/integration/recipes/accumulator_spec.rb +232 -232
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +171 -171
- data/spec/integration/recipes/lwrp_spec.rb +53 -53
- data/spec/integration/recipes/noop_resource_spec.rb +24 -24
- data/spec/integration/recipes/notifies_spec.rb +394 -394
- data/spec/integration/recipes/notifying_block_spec.rb +111 -111
- data/spec/integration/recipes/provider_choice.rb +37 -37
- data/spec/integration/recipes/recipe_dsl_spec.rb +1373 -1373
- data/spec/integration/recipes/remote_directory.rb +74 -74
- data/spec/integration/recipes/resource_action_spec.rb +504 -504
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +552 -552
- data/spec/integration/recipes/resource_load_spec.rb +192 -192
- data/spec/integration/recipes/unified_mode_spec.rb +876 -0
- data/spec/integration/solo/solo_spec.rb +217 -217
- data/spec/rcov.opts +2 -2
- data/spec/scripts/ssl-serve.rb +47 -47
- data/spec/spec_helper.rb +332 -328
- data/spec/stress/.DS_Store +0 -0
- 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/.DS_Store +0 -0
- data/spec/support/chef_helpers.rb +115 -115
- 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 +42 -42
- data/spec/support/lib/chef/resource/cat.rb +39 -39
- data/spec/support/lib/chef/resource/one_two_three_four.rb +36 -36
- data/spec/support/lib/chef/resource/openldap_includer.rb +28 -28
- data/spec/support/lib/chef/resource/with_state.rb +30 -30
- data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
- data/spec/support/lib/chef/resource/zen_master.rb +40 -40
- 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 +276 -268
- data/spec/support/platforms/prof/gc.rb +51 -51
- 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 +305 -305
- 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 +104 -104
- data/spec/support/shared/functional/diff_disabled.rb +10 -10
- data/spec/support/shared/functional/directory_resource.rb +178 -178
- data/spec/support/shared/functional/execute_resource.rb +150 -150
- data/spec/support/shared/functional/file_resource.rb +1050 -1050
- 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 +578 -578
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
- data/spec/support/shared/functional/win32_service.rb +57 -57
- data/spec/support/shared/functional/windows_script.rb +272 -272
- data/spec/support/shared/integration/app_server_support.rb +40 -40
- data/spec/support/shared/integration/integration_helper.rb +154 -154
- data/spec/support/shared/integration/knife_support.rb +196 -196
- 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 +75 -75
- data/spec/support/shared/unit/execute_resource.rb +168 -168
- 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 +854 -854
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +402 -402
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
- data/spec/support/shared/unit/script_resource.rb +90 -90
- 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 +191 -191
- data/spec/unit/.DS_Store +0 -0
- 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 +113 -113
- data/spec/unit/application/client_spec.rb +559 -559
- data/spec/unit/application/exit_code_spec.rb +144 -144
- data/spec/unit/application/knife_spec.rb +229 -229
- data/spec/unit/application/solo_spec.rb +225 -225
- data/spec/unit/application_spec.rb +486 -486
- data/spec/unit/audit/audit_event_proxy_spec.rb +318 -318
- data/spec/unit/audit/audit_reporter_spec.rb +435 -435
- data/spec/unit/audit/control_group_data_spec.rb +482 -482
- 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 +240 -240
- data/spec/unit/chef_fs/config_spec.rb +235 -235
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -82
- data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -65
- 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/repository/base_file_spec.rb +126 -126
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +175 -175
- data/spec/unit/chef_fs/file_system_spec.rb +148 -148
- data/spec/unit/chef_fs/parallelizer.rb +477 -477
- 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 +595 -595
- 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 +210 -210
- data/spec/unit/cookbook/file_vendor_spec.rb +123 -123
- data/spec/unit/cookbook/gem_installer_spec.rb +113 -92
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -133
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -70
- data/spec/unit/cookbook/metadata_spec.rb +892 -892
- data/spec/unit/cookbook/synchronizer_spec.rb +557 -557
- data/spec/unit/cookbook/syntax_check_spec.rb +226 -226
- data/spec/unit/cookbook_loader_spec.rb +302 -302
- data/spec/unit/cookbook_manifest_spec.rb +228 -228
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_spec.rb +62 -62
- data/spec/unit/cookbook_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_version_file_specificity_spec.rb +623 -623
- data/spec/unit/cookbook_version_spec.rb +250 -250
- data/spec/unit/daemon_spec.rb +183 -183
- data/spec/unit/data_bag_item_spec.rb +392 -392
- data/spec/unit/data_bag_spec.rb +260 -260
- data/spec/unit/data_collector/messages/helpers_spec.rb +202 -202
- data/spec/unit/data_collector/messages_spec.rb +329 -329
- data/spec/unit/data_collector/resource_report_spec.rb +145 -145
- data/spec/unit/data_collector_spec.rb +876 -876
- data/spec/unit/decorator/lazy_array_spec.rb +58 -58
- data/spec/unit/decorator/lazy_spec.rb +39 -39
- data/spec/unit/decorator_spec.rb +142 -142
- data/spec/unit/deprecated_spec.rb +65 -65
- data/spec/unit/deprecation_spec.rb +129 -129
- 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 +107 -107
- data/spec/unit/dsl/declare_resource_spec.rb +374 -374
- data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
- data/spec/unit/dsl/reboot_pending_spec.rb +87 -87
- data/spec/unit/dsl/recipe_spec.rb +76 -76
- data/spec/unit/dsl/registry_helper_spec.rb +52 -52
- data/spec/unit/dsl/resources_spec.rb +85 -85
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +96 -96
- data/spec/unit/encrypted_data_bag_item_spec.rb +438 -438
- 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 +132 -132
- 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 +113 -113
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
- data/spec/unit/file_content_management/tempfile_spec.rb +115 -115
- data/spec/unit/formatters/base_spec.rb +100 -100
- data/spec/unit/formatters/doc_spec.rb +110 -92
- data/spec/unit/formatters/error_description_spec.rb +141 -141
- 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 +302 -302
- data/spec/unit/http/api_versions_spec.rb +82 -82
- data/spec/unit/http/authenticator_spec.rb +125 -125
- data/spec/unit/http/basic_client_spec.rb +72 -72
- data/spec/unit/http/http_request_spec.rb +97 -97
- 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 +174 -174
- data/spec/unit/http/ssl_policies_spec.rb +169 -169
- data/spec/unit/http/validate_content_length_spec.rb +207 -207
- data/spec/unit/http_spec.rb +229 -229
- data/spec/unit/json_compat_spec.rb +73 -73
- 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 +972 -886
- 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 +99 -99
- 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 +81 -81
- data/spec/unit/knife/configure_spec.rb +190 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_create_spec.rb +42 -42
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +255 -255
- 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 +182 -182
- data/spec/unit/knife/cookbook_show_spec.rb +254 -254
- data/spec/unit/knife/cookbook_test_spec.rb +84 -84
- data/spec/unit/knife/cookbook_upload_spec.rb +331 -331
- data/spec/unit/knife/core/bootstrap_context_spec.rb +324 -324
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +110 -110
- 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 +64 -64
- data/spec/unit/knife/core/ui_spec.rb +639 -639
- data/spec/unit/knife/data_bag_create_spec.rb +175 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +173 -173
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
- data/spec/unit/knife/data_bag_show_spec.rb +138 -138
- 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/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/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +77 -77
- data/spec/unit/knife/node_edit_spec.rb +116 -116
- data/spec/unit/knife/node_environment_set_spec.rb +56 -56
- 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_policy_set_spec.rb +122 -122
- 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 +115 -115
- 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 +496 -496
- data/spec/unit/knife/ssl_check_spec.rb +256 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
- data/spec/unit/knife/status_spec.rb +111 -111
- data/spec/unit/knife/supermarket_download_spec.rb +152 -152
- data/spec/unit/knife/supermarket_install_spec.rb +201 -201
- data/spec/unit/knife/supermarket_share_spec.rb +209 -209
- data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
- 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 +588 -588
- data/spec/unit/log/syslog_spec.rb +51 -51
- data/spec/unit/log/winevt_spec.rb +54 -54
- data/spec/unit/log_spec.rb +24 -24
- data/spec/unit/lwrp_spec.rb +690 -690
- 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 +54 -54
- 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 +96 -96
- data/spec/unit/mixin/lazy_module_include.rb +71 -71
- data/spec/unit/mixin/openssl_helper_spec.rb +857 -857
- data/spec/unit/mixin/params_validate_spec.rb +421 -421
- data/spec/unit/mixin/path_sanity_spec.rb +92 -92
- data/spec/unit/mixin/powershell_exec_spec.rb +43 -43
- data/spec/unit/mixin/powershell_out_spec.rb +94 -94
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +84 -84
- data/spec/unit/mixin/properties_spec.rb +107 -107
- data/spec/unit/mixin/proxified_socket_spec.rb +97 -97
- data/spec/unit/mixin/securable_spec.rb +314 -314
- data/spec/unit/mixin/shell_out_spec.rb +450 -450
- data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
- data/spec/unit/mixin/template_spec.rb +321 -321
- data/spec/unit/mixin/unformatter_spec.rb +61 -61
- data/spec/unit/mixin/uris_spec.rb +57 -57
- data/spec/unit/mixin/user_context_spec.rb +108 -108
- data/spec/unit/mixin/versioned_api_spec.rb +128 -128
- data/spec/unit/mixin/which.rb +160 -160
- 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 +1276 -1276
- data/spec/unit/node/immutable_collections_spec.rb +327 -327
- data/spec/unit/node/vivid_mash_spec.rb +353 -353
- data/spec/unit/node_map_spec.rb +242 -242
- data/spec/unit/node_spec.rb +1851 -1851
- data/spec/unit/org_spec.rb +196 -196
- data/spec/unit/platform/query_helpers_spec.rb +207 -207
- data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
- data/spec/unit/policy_builder/expand_node_object_spec.rb +311 -311
- data/spec/unit/policy_builder/policyfile_spec.rb +872 -872
- 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 +758 -758
- data/spec/unit/property_spec.rb +1231 -1231
- data/spec/unit/provider/apt_preference_spec.rb +87 -87
- data/spec/unit/provider/apt_repository_spec.rb +254 -254
- data/spec/unit/provider/apt_update_spec.rb +116 -116
- data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
- data/spec/unit/provider/cookbook_file_spec.rb +59 -59
- data/spec/unit/provider/cron/unix_spec.rb +144 -144
- data/spec/unit/provider/cron_spec.rb +1084 -1084
- data/spec/unit/provider/directory_spec.rb +300 -300
- data/spec/unit/provider/dsc_resource_spec.rb +343 -343
- data/spec/unit/provider/dsc_script_spec.rb +173 -173
- data/spec/unit/provider/execute_spec.rb +251 -251
- data/spec/unit/provider/file/content_spec.rb +114 -114
- data/spec/unit/provider/file_spec.rb +57 -57
- data/spec/unit/provider/git_spec.rb +782 -782
- data/spec/unit/provider/group/dscl_spec.rb +339 -339
- data/spec/unit/provider/group/gpasswd_spec.rb +119 -119
- data/spec/unit/provider/group/groupadd_spec.rb +194 -194
- data/spec/unit/provider/group/groupmod_spec.rb +136 -136
- data/spec/unit/provider/group/pw_spec.rb +141 -141
- data/spec/unit/provider/group/suse_spec.rb +90 -90
- data/spec/unit/provider/group/usermod_spec.rb +115 -115
- data/spec/unit/provider/group/windows_spec.rb +124 -124
- 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 +332 -332
- data/spec/unit/provider/ifconfig/redhat_spec.rb +83 -83
- data/spec/unit/provider/ifconfig_spec.rb +206 -206
- data/spec/unit/provider/launchd_spec.rb +268 -268
- data/spec/unit/provider/link_spec.rb +409 -409
- data/spec/unit/provider/log_spec.rb +94 -94
- data/spec/unit/provider/mdadm_spec.rb +140 -140
- data/spec/unit/provider/mount/aix_spec.rb +277 -277
- data/spec/unit/provider/mount/mount_spec.rb +527 -527
- data/spec/unit/provider/mount/solaris_spec.rb +822 -822
- data/spec/unit/provider/mount/windows_spec.rb +149 -149
- data/spec/unit/provider/mount_spec.rb +191 -191
- data/spec/unit/provider/ohai_spec.rb +84 -84
- data/spec/unit/provider/osx_profile_spec.rb +257 -257
- data/spec/unit/provider/package/apt_spec.rb +610 -610
- data/spec/unit/provider/package/bff_spec.rb +187 -187
- data/spec/unit/provider/package/cab_spec.rb +272 -272
- data/spec/unit/provider/package/chocolatey_spec.rb +507 -507
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -29
- data/spec/unit/provider/package/dpkg_spec.rb +287 -287
- 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 +293 -293
- data/spec/unit/provider/package/ips_spec.rb +233 -233
- data/spec/unit/provider/package/macports_spec.rb +203 -203
- data/spec/unit/provider/package/msu_spec.rb +283 -283
- 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 +179 -179
- data/spec/unit/provider/package/powershell_spec.rb +501 -501
- data/spec/unit/provider/package/rpm_spec.rb +429 -429
- data/spec/unit/provider/package/rubygems_spec.rb +981 -981
- 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 +201 -201
- data/spec/unit/provider/package/windows/msi_spec.rb +168 -168
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -78
- data/spec/unit/provider/package/windows_spec.rb +463 -463
- data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -29
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +109 -109
- data/spec/unit/provider/package/zypper_spec.rb +487 -478
- data/spec/unit/provider/package_spec.rb +1013 -1013
- data/spec/unit/provider/powershell_script_spec.rb +116 -116
- data/spec/unit/provider/registry_key_spec.rb +487 -487
- data/spec/unit/provider/remote_directory_spec.rb +236 -236
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
- data/spec/unit/provider/remote_file/content_spec.rb +253 -253
- data/spec/unit/provider/remote_file/fetcher_spec.rb +95 -95
- data/spec/unit/provider/remote_file/ftp_spec.rb +217 -217
- data/spec/unit/provider/remote_file/http_spec.rb +324 -324
- data/spec/unit/provider/remote_file/local_file_spec.rb +105 -105
- data/spec/unit/provider/remote_file/network_file_spec.rb +50 -50
- data/spec/unit/provider/remote_file/sftp_spec.rb +150 -150
- data/spec/unit/provider/remote_file_spec.rb +62 -62
- data/spec/unit/provider/route_spec.rb +270 -270
- data/spec/unit/provider/ruby_block_spec.rb +45 -45
- data/spec/unit/provider/script_spec.rb +157 -157
- 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 +249 -249
- data/spec/unit/provider/service/freebsd_service_spec.rb +617 -617
- 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 +340 -340
- data/spec/unit/provider/service/openbsd_service_spec.rb +549 -549
- data/spec/unit/provider/service/redhat_spec.rb +250 -250
- data/spec/unit/provider/service/simple_service_spec.rb +169 -169
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +292 -292
- data/spec/unit/provider/service/systemd_service_spec.rb +364 -364
- data/spec/unit/provider/service/upstart_service_spec.rb +351 -351
- data/spec/unit/provider/service/windows_spec.rb +910 -910
- data/spec/unit/provider/service_spec.rb +168 -168
- data/spec/unit/provider/subversion_spec.rb +361 -361
- data/spec/unit/provider/systemd_unit_spec.rb +967 -967
- data/spec/unit/provider/template/content_spec.rb +169 -169
- data/spec/unit/provider/template_spec.rb +87 -87
- data/spec/unit/provider/user/aix_spec.rb +96 -96
- data/spec/unit/provider/user/dscl_spec.rb +920 -920
- data/spec/unit/provider/user/linux_spec.rb +74 -74
- data/spec/unit/provider/user/pw_spec.rb +235 -235
- data/spec/unit/provider/user/solaris_spec.rb +177 -177
- data/spec/unit/provider/user/windows_spec.rb +197 -197
- data/spec/unit/provider/user_spec.rb +478 -478
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
- data/spec/unit/provider/windows_env_spec.rb +400 -400
- data/spec/unit/provider/windows_path_spec.rb +65 -65
- data/spec/unit/provider/windows_task_spec.rb +430 -430
- data/spec/unit/provider/yum_repository_spec.rb +35 -35
- data/spec/unit/provider/zypper_repository_spec.rb +126 -126
- data/spec/unit/provider_resolver_spec.rb +923 -923
- data/spec/unit/provider_spec.rb +201 -201
- data/spec/unit/pure_application_spec.rb +32 -32
- data/spec/unit/recipe_spec.rb +589 -589
- data/spec/unit/resource/apt_package_spec.rb +56 -56
- data/spec/unit/resource/apt_preference_spec.rb +57 -57
- data/spec/unit/resource/apt_repository_spec.rb +92 -92
- data/spec/unit/resource/apt_update_spec.rb +62 -62
- data/spec/unit/resource/bash_spec.rb +45 -45
- data/spec/unit/resource/batch_spec.rb +46 -46
- data/spec/unit/resource/bff_package_spec.rb +51 -51
- data/spec/unit/resource/breakpoint_spec.rb +64 -64
- data/spec/unit/resource/build_essential_spec.rb +43 -43
- data/spec/unit/resource/cab_package_spec.rb +64 -64
- data/spec/unit/resource/chef_gem_spec.rb +125 -125
- data/spec/unit/resource/chef_handler_spec.rb +40 -40
- data/spec/unit/resource/chocolatey_config_spec.rb +98 -98
- data/spec/unit/resource/chocolatey_package_spec.rb +91 -91
- data/spec/unit/resource/chocolatey_source_spec.rb +102 -102
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
- data/spec/unit/resource/conditional_spec.rb +254 -254
- data/spec/unit/resource/cookbook_file_spec.rb +93 -93
- data/spec/unit/resource/cron_access_spec.rb +36 -36
- data/spec/unit/resource/cron_d_spec.rb +90 -90
- data/spec/unit/resource/cron_spec.rb +173 -173
- data/spec/unit/resource/csh_spec.rb +45 -45
- data/spec/unit/resource/directory_spec.rb +69 -69
- data/spec/unit/resource/dmg_package_spec.rb +39 -39
- data/spec/unit/resource/dnf_package_spec.rb +108 -108
- data/spec/unit/resource/dpkg_package_spec.rb +50 -50
- data/spec/unit/resource/dsc_resource_spec.rb +102 -102
- data/spec/unit/resource/dsc_script_spec.rb +134 -134
- data/spec/unit/resource/execute_spec.rb +277 -277
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -103
- data/spec/unit/resource/file/verification_spec.rb +147 -147
- data/spec/unit/resource/file_spec.rb +127 -127
- data/spec/unit/resource/freebsd_package_spec.rb +103 -103
- data/spec/unit/resource/gem_package_spec.rb +67 -67
- data/spec/unit/resource/git_spec.rb +62 -62
- data/spec/unit/resource/group_spec.rb +165 -165
- data/spec/unit/resource/homebrew_cask_spec.rb +40 -40
- data/spec/unit/resource/homebrew_package_spec.rb +68 -68
- data/spec/unit/resource/homebrew_tap_spec.rb +44 -44
- data/spec/unit/resource/hostname_spec.rb +47 -47
- data/spec/unit/resource/http_request_spec.rb +65 -65
- data/spec/unit/resource/ifconfig_spec.rb +109 -109
- data/spec/unit/resource/ips_package_spec.rb +54 -54
- data/spec/unit/resource/kernel_module_spec.rb +48 -48
- data/spec/unit/resource/ksh_spec.rb +45 -45
- data/spec/unit/resource/launchd_spec.rb +40 -40
- data/spec/unit/resource/link_spec.rb +124 -124
- data/spec/unit/resource/locale_spec.rb +60 -60
- data/spec/unit/resource/log_spec.rb +64 -64
- data/spec/unit/resource/macos_user_defaults_spec.rb +35 -35
- data/spec/unit/resource/macports_package_spec.rb +51 -51
- data/spec/unit/resource/mdadm_spec.rb +104 -104
- data/spec/unit/resource/mount_spec.rb +178 -178
- data/spec/unit/resource/msu_package_spec.rb +63 -63
- data/spec/unit/resource/ohai_hint_spec.rb +44 -44
- data/spec/unit/resource/ohai_spec.rb +62 -62
- data/spec/unit/resource/openbsd_package_spec.rb +58 -58
- data/spec/unit/resource/openssl_dhparam.rb +61 -61
- data/spec/unit/resource/openssl_ec_private_key_spec.rb +64 -64
- data/spec/unit/resource/openssl_ec_public_key_spec.rb +43 -43
- data/spec/unit/resource/openssl_rsa_private_key_spec.rb +64 -64
- data/spec/unit/resource/openssl_rsa_public_key_spec.rb +43 -43
- data/spec/unit/resource/openssl_x509_certificate_spec.rb +72 -72
- data/spec/unit/resource/openssl_x509_crl_spec.rb +61 -61
- data/spec/unit/resource/openssl_x509_request.rb +68 -68
- data/spec/unit/resource/osx_profile_spec.rb +60 -60
- data/spec/unit/resource/package_spec.rb +108 -108
- data/spec/unit/resource/pacman_package_spec.rb +46 -46
- data/spec/unit/resource/paludis_package_spec.rb +36 -36
- data/spec/unit/resource/perl_spec.rb +44 -44
- data/spec/unit/resource/portage_package_spec.rb +46 -46
- data/spec/unit/resource/powershell_package_source_spec.rb +219 -219
- data/spec/unit/resource/powershell_package_spec.rb +98 -98
- data/spec/unit/resource/powershell_script_spec.rb +136 -136
- data/spec/unit/resource/python_spec.rb +40 -40
- data/spec/unit/resource/reboot_spec.rb +47 -47
- data/spec/unit/resource/registry_key_spec.rb +215 -215
- data/spec/unit/resource/remote_directory_spec.rb +105 -105
- data/spec/unit/resource/remote_file_spec.rb +220 -220
- data/spec/unit/resource/resource_notification_spec.rb +169 -169
- data/spec/unit/resource/rhsm_errata_level_spec.rb +50 -50
- data/spec/unit/resource/rhsm_errata_spec.rb +39 -39
- data/spec/unit/resource/rhsm_register_spec.rb +204 -204
- data/spec/unit/resource/rhsm_repo_spec.rb +64 -64
- data/spec/unit/resource/rhsm_subscription_spec.rb +98 -98
- data/spec/unit/resource/route_spec.rb +95 -95
- data/spec/unit/resource/rpm_package_spec.rb +62 -62
- data/spec/unit/resource/ruby_block_spec.rb +58 -58
- data/spec/unit/resource/ruby_spec.rb +39 -39
- data/spec/unit/resource/scm_spec.rb +173 -173
- data/spec/unit/resource/script_spec.rb +52 -52
- data/spec/unit/resource/service_spec.rb +206 -206
- data/spec/unit/resource/smartos_package_spec.rb +52 -52
- data/spec/unit/resource/solaris_package_spec.rb +54 -54
- data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +55 -55
- data/spec/unit/resource/subversion_spec.rb +91 -91
- data/spec/unit/resource/sudo_spec.rb +99 -99
- data/spec/unit/resource/swap_file_spec.rb +39 -39
- data/spec/unit/resource/sysctl_spec.rb +54 -54
- data/spec/unit/resource/systemd_unit_spec.rb +130 -130
- data/spec/unit/resource/template_spec.rb +222 -222
- data/spec/unit/resource/timezone.rb +39 -39
- data/spec/unit/resource/user_spec.rb +122 -122
- data/spec/unit/resource/windows_ad_join_spec.rb +51 -51
- data/spec/unit/resource/windows_auto_run_spec.rb +50 -50
- data/spec/unit/resource/windows_certificate.rb +83 -83
- data/spec/unit/resource/windows_env_spec.rb +75 -75
- data/spec/unit/resource/windows_feature.rb +64 -64
- data/spec/unit/resource/windows_feature_dism.rb +72 -72
- data/spec/unit/resource/windows_feature_powershell.rb +72 -72
- data/spec/unit/resource/windows_firewall_rule_spec.rb +401 -401
- data/spec/unit/resource/windows_font_spec.rb +43 -43
- data/spec/unit/resource/windows_package_spec.rb +105 -105
- data/spec/unit/resource/windows_pagefile_spec.rb +49 -49
- data/spec/unit/resource/windows_path_spec.rb +40 -40
- data/spec/unit/resource/windows_printer_port_spec.rb +62 -62
- data/spec/unit/resource/windows_printer_spec.rb +52 -52
- data/spec/unit/resource/windows_service_spec.rb +93 -93
- data/spec/unit/resource/windows_share.rb +39 -39
- data/spec/unit/resource/windows_shortcut_spec.rb +38 -38
- data/spec/unit/resource/windows_task_spec.rb +399 -399
- data/spec/unit/resource/windows_workgroup_spec.rb +74 -74
- data/spec/unit/resource/yum_package_spec.rb +150 -150
- data/spec/unit/resource/yum_repository_spec.rb +152 -152
- data/spec/unit/resource/zypper_package_spec.rb +51 -51
- data/spec/unit/resource/zypper_repository_spec.rb +115 -115
- 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 +244 -244
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
- data/spec/unit/resource_collection_spec.rb +408 -408
- data/spec/unit/resource_definition_spec.rb +117 -117
- data/spec/unit/resource_inspector_spec.rb +60 -60
- data/spec/unit/resource_reporter_spec.rb +782 -782
- data/spec/unit/resource_resolver_spec.rb +52 -52
- data/spec/unit/resource_spec.rb +1195 -1195
- 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 +224 -224
- 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 +197 -197
- 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 +398 -398
- data/spec/unit/scan_access_control_spec.rb +183 -183
- data/spec/unit/search/query_spec.rb +283 -283
- data/spec/unit/server_api_spec.rb +124 -124
- data/spec/unit/server_api_versions_spec.rb +66 -66
- 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 +250 -250
- 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 +248 -248
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +200 -200
- data/spec/unit/util/dsc/resource_store.rb +78 -78
- 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 +157 -157
- data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
- data/spec/unit/util/windows/logon_session_spec.rb +285 -285
- 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/version_string_spec.rb +79 -79
- data/spec/unit/win32/error_spec.rb +77 -77
- data/spec/unit/win32/link_spec.rb +73 -73
- data/spec/unit/win32/registry_spec.rb +394 -394
- data/spec/unit/win32/security_spec.rb +134 -134
- data/spec/unit/windows_service_spec.rb +118 -118
- data/tasks/.DS_Store +0 -0
- data/tasks/announce.rb +58 -58
- data/tasks/bin/run_external_test +29 -29
- data/tasks/dependencies.rb +58 -58
- data/tasks/maintainers.rb +211 -211
- data/tasks/rspec.rb +90 -90
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- metadata +34 -6
@@ -1,130 +1,130 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Copyright:: Copyright 2008-2018, Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "chef/log"
|
20
|
-
require "chef/provider"
|
21
|
-
require "forwardable"
|
22
|
-
|
23
|
-
class Chef
|
24
|
-
class Provider
|
25
|
-
class Execute < Chef::Provider
|
26
|
-
extend Forwardable
|
27
|
-
|
28
|
-
provides :execute
|
29
|
-
|
30
|
-
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env
|
31
|
-
|
32
|
-
def load_current_resource
|
33
|
-
current_resource = Chef::Resource::Execute.new(new_resource.name)
|
34
|
-
current_resource
|
35
|
-
end
|
36
|
-
|
37
|
-
def define_resource_requirements
|
38
|
-
if creates && creates_relative? && !cwd
|
39
|
-
# FIXME? move this onto the resource?
|
40
|
-
raise Chef::Exceptions::Execute, "Please either specify a full path for the creates property, or specify a cwd property to the #{new_resource} resource"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def timeout
|
45
|
-
# original implementation did not specify a timeout, but ShellOut
|
46
|
-
# *always* times out. So, set a very long default timeout
|
47
|
-
new_resource.timeout || 3600
|
48
|
-
end
|
49
|
-
|
50
|
-
def action_run
|
51
|
-
if creates && sentinel_file.exist?
|
52
|
-
logger.debug("#{new_resource} sentinel file #{sentinel_file} exists - nothing to do")
|
53
|
-
return false
|
54
|
-
end
|
55
|
-
|
56
|
-
converge_by("execute #{description}") do
|
57
|
-
begin
|
58
|
-
shell_out!(command, opts)
|
59
|
-
rescue Mixlib::ShellOut::ShellCommandFailed
|
60
|
-
if sensitive?
|
61
|
-
ex = Mixlib::ShellOut::ShellCommandFailed.new("Command execution failed. STDOUT/STDERR suppressed for sensitive resource")
|
62
|
-
# Forcibly hide the exception cause chain here so we don't log the unredacted version
|
63
|
-
def ex.cause
|
64
|
-
nil
|
65
|
-
end
|
66
|
-
raise ex
|
67
|
-
else
|
68
|
-
raise
|
69
|
-
end
|
70
|
-
end
|
71
|
-
logger.info("#{new_resource} ran successfully")
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
|
77
|
-
def sensitive?
|
78
|
-
!!new_resource.sensitive
|
79
|
-
end
|
80
|
-
|
81
|
-
def live_stream?
|
82
|
-
Chef::Config[:stream_execute_output] || !!new_resource.live_stream
|
83
|
-
end
|
84
|
-
|
85
|
-
def stream_to_stdout?
|
86
|
-
STDOUT.tty? && !Chef::Config[:daemon]
|
87
|
-
end
|
88
|
-
|
89
|
-
def opts
|
90
|
-
opts = {}
|
91
|
-
opts[:timeout] = timeout
|
92
|
-
opts[:returns] = returns if returns
|
93
|
-
opts[:environment] = environment if environment
|
94
|
-
opts[:user] = user if user
|
95
|
-
opts[:domain] = domain if domain
|
96
|
-
opts[:password] = password if password
|
97
|
-
opts[:group] = group if group
|
98
|
-
opts[:cwd] = cwd if cwd
|
99
|
-
opts[:umask] = umask if umask
|
100
|
-
opts[:default_env] = default_env
|
101
|
-
opts[:log_level] = :info
|
102
|
-
opts[:log_tag] = new_resource.to_s
|
103
|
-
if (logger.info? || live_stream?) && !sensitive?
|
104
|
-
if run_context.events.formatter?
|
105
|
-
opts[:live_stream] = Chef::EventDispatch::EventsOutputStream.new(run_context.events, name: :execute)
|
106
|
-
elsif stream_to_stdout?
|
107
|
-
opts[:live_stream] = STDOUT
|
108
|
-
end
|
109
|
-
end
|
110
|
-
opts[:elevated] = elevated if elevated
|
111
|
-
opts
|
112
|
-
end
|
113
|
-
|
114
|
-
def description
|
115
|
-
sensitive? ? "sensitive resource" : command
|
116
|
-
end
|
117
|
-
|
118
|
-
def creates_relative?
|
119
|
-
Pathname(creates).relative?
|
120
|
-
end
|
121
|
-
|
122
|
-
def sentinel_file
|
123
|
-
Pathname.new(Chef::Util::PathHelper.cleanpath(
|
124
|
-
( cwd && creates_relative? ) ? ::File.join(cwd, creates) : creates
|
125
|
-
))
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
+
# Copyright:: Copyright 2008-2018, Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require "chef/log"
|
20
|
+
require "chef/provider"
|
21
|
+
require "forwardable"
|
22
|
+
|
23
|
+
class Chef
|
24
|
+
class Provider
|
25
|
+
class Execute < Chef::Provider
|
26
|
+
extend Forwardable
|
27
|
+
|
28
|
+
provides :execute
|
29
|
+
|
30
|
+
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env
|
31
|
+
|
32
|
+
def load_current_resource
|
33
|
+
current_resource = Chef::Resource::Execute.new(new_resource.name)
|
34
|
+
current_resource
|
35
|
+
end
|
36
|
+
|
37
|
+
def define_resource_requirements
|
38
|
+
if creates && creates_relative? && !cwd
|
39
|
+
# FIXME? move this onto the resource?
|
40
|
+
raise Chef::Exceptions::Execute, "Please either specify a full path for the creates property, or specify a cwd property to the #{new_resource} resource"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def timeout
|
45
|
+
# original implementation did not specify a timeout, but ShellOut
|
46
|
+
# *always* times out. So, set a very long default timeout
|
47
|
+
new_resource.timeout || 3600
|
48
|
+
end
|
49
|
+
|
50
|
+
def action_run
|
51
|
+
if creates && sentinel_file.exist?
|
52
|
+
logger.debug("#{new_resource} sentinel file #{sentinel_file} exists - nothing to do")
|
53
|
+
return false
|
54
|
+
end
|
55
|
+
|
56
|
+
converge_by("execute #{description}") do
|
57
|
+
begin
|
58
|
+
shell_out!(command, opts)
|
59
|
+
rescue Mixlib::ShellOut::ShellCommandFailed
|
60
|
+
if sensitive?
|
61
|
+
ex = Mixlib::ShellOut::ShellCommandFailed.new("Command execution failed. STDOUT/STDERR suppressed for sensitive resource")
|
62
|
+
# Forcibly hide the exception cause chain here so we don't log the unredacted version
|
63
|
+
def ex.cause
|
64
|
+
nil
|
65
|
+
end
|
66
|
+
raise ex
|
67
|
+
else
|
68
|
+
raise
|
69
|
+
end
|
70
|
+
end
|
71
|
+
logger.info("#{new_resource} ran successfully")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def sensitive?
|
78
|
+
!!new_resource.sensitive
|
79
|
+
end
|
80
|
+
|
81
|
+
def live_stream?
|
82
|
+
Chef::Config[:stream_execute_output] || !!new_resource.live_stream
|
83
|
+
end
|
84
|
+
|
85
|
+
def stream_to_stdout?
|
86
|
+
STDOUT.tty? && !Chef::Config[:daemon]
|
87
|
+
end
|
88
|
+
|
89
|
+
def opts
|
90
|
+
opts = {}
|
91
|
+
opts[:timeout] = timeout
|
92
|
+
opts[:returns] = returns if returns
|
93
|
+
opts[:environment] = environment if environment
|
94
|
+
opts[:user] = user if user
|
95
|
+
opts[:domain] = domain if domain
|
96
|
+
opts[:password] = password if password
|
97
|
+
opts[:group] = group if group
|
98
|
+
opts[:cwd] = cwd if cwd
|
99
|
+
opts[:umask] = umask if umask
|
100
|
+
opts[:default_env] = default_env
|
101
|
+
opts[:log_level] = :info
|
102
|
+
opts[:log_tag] = new_resource.to_s
|
103
|
+
if (logger.info? || live_stream?) && !sensitive?
|
104
|
+
if run_context.events.formatter?
|
105
|
+
opts[:live_stream] = Chef::EventDispatch::EventsOutputStream.new(run_context.events, name: :execute)
|
106
|
+
elsif stream_to_stdout?
|
107
|
+
opts[:live_stream] = STDOUT
|
108
|
+
end
|
109
|
+
end
|
110
|
+
opts[:elevated] = elevated if elevated
|
111
|
+
opts
|
112
|
+
end
|
113
|
+
|
114
|
+
def description
|
115
|
+
sensitive? ? "sensitive resource" : command
|
116
|
+
end
|
117
|
+
|
118
|
+
def creates_relative?
|
119
|
+
Pathname(creates).relative?
|
120
|
+
end
|
121
|
+
|
122
|
+
def sentinel_file
|
123
|
+
Pathname.new(Chef::Util::PathHelper.cleanpath(
|
124
|
+
( cwd && creates_relative? ) ? ::File.join(cwd, creates) : creates
|
125
|
+
))
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/lib/chef/provider/file.rb
CHANGED
@@ -1,478 +1,478 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Author:: Lamont Granquist (<lamont@chef.io>)
|
4
|
-
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
5
|
-
# License:: Apache License, Version 2.0
|
6
|
-
#
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
-
# you may not use this file except in compliance with the License.
|
9
|
-
# You may obtain a copy of the License at
|
10
|
-
#
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
#
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
# See the License for the specific language governing permissions and
|
17
|
-
# limitations under the License.
|
18
|
-
#
|
19
|
-
|
20
|
-
require "chef/config"
|
21
|
-
require "chef/log"
|
22
|
-
require "chef/resource/file"
|
23
|
-
require "chef/provider"
|
24
|
-
require "etc"
|
25
|
-
require "fileutils"
|
26
|
-
require "chef/scan_access_control"
|
27
|
-
require "chef/mixin/checksum"
|
28
|
-
require "chef/mixin/file_class"
|
29
|
-
require "chef/mixin/enforce_ownership_and_permissions"
|
30
|
-
require "chef/util/backup"
|
31
|
-
require "chef/util/diff"
|
32
|
-
require "chef/util/selinux"
|
33
|
-
require "chef/file_content_management/deploy"
|
34
|
-
|
35
|
-
# The Tao of File Providers:
|
36
|
-
# - the content provider must always return a tempfile that we can delete/mv
|
37
|
-
# - do_create_file shall always create the file first and obey umask when perms are not specified
|
38
|
-
# - do_contents_changes may assume the destination file exists (simplifies exception checking,
|
39
|
-
# and always gives us something to diff against)
|
40
|
-
# - do_contents_changes must restore the perms to the dest file and not obliterate them with
|
41
|
-
# random tempfile permissions
|
42
|
-
# - do_acl_changes may assume perms were not modified between lcr and when it runs (although the
|
43
|
-
# file may have been created)
|
44
|
-
|
45
|
-
class Chef
|
46
|
-
class Provider
|
47
|
-
class File < Chef::Provider
|
48
|
-
include Chef::Mixin::EnforceOwnershipAndPermissions
|
49
|
-
include Chef::Mixin::Checksum
|
50
|
-
include Chef::Util::Selinux
|
51
|
-
include Chef::Mixin::FileClass
|
52
|
-
|
53
|
-
provides :file
|
54
|
-
|
55
|
-
attr_reader :deployment_strategy
|
56
|
-
|
57
|
-
attr_accessor :needs_creating
|
58
|
-
attr_accessor :needs_unlinking
|
59
|
-
attr_accessor :managing_symlink
|
60
|
-
|
61
|
-
def initialize(new_resource, run_context)
|
62
|
-
@content_class ||= Chef::Provider::File::Content
|
63
|
-
if new_resource.respond_to?(:atomic_update)
|
64
|
-
@deployment_strategy = Chef::FileContentManagement::Deploy.strategy(new_resource.atomic_update)
|
65
|
-
end
|
66
|
-
super
|
67
|
-
end
|
68
|
-
|
69
|
-
def load_current_resource
|
70
|
-
# true if there is a symlink and we need to manage what it points at
|
71
|
-
@managing_symlink = file_class.symlink?(new_resource.path) && ( new_resource.manage_symlink_source || new_resource.manage_symlink_source.nil? )
|
72
|
-
|
73
|
-
# true if there is a non-file thing in the way that we need to unlink first
|
74
|
-
@needs_unlinking =
|
75
|
-
if ::File.exist?(new_resource.path)
|
76
|
-
if managing_symlink?
|
77
|
-
!symlink_to_real_file?(new_resource.path)
|
78
|
-
else
|
79
|
-
!real_file?(new_resource.path)
|
80
|
-
end
|
81
|
-
else
|
82
|
-
false
|
83
|
-
end
|
84
|
-
|
85
|
-
# true if we are going to be creating a new file
|
86
|
-
@needs_creating = !::File.exist?(new_resource.path) || needs_unlinking?
|
87
|
-
|
88
|
-
# Let children resources override constructing the current_resource
|
89
|
-
@current_resource ||= Chef::Resource::File.new(new_resource.name)
|
90
|
-
current_resource.path(new_resource.path)
|
91
|
-
|
92
|
-
if !needs_creating?
|
93
|
-
# we are updating an existing file
|
94
|
-
if managing_content?
|
95
|
-
logger.trace("#{new_resource} checksumming file at #{new_resource.path}.")
|
96
|
-
current_resource.checksum(checksum(current_resource.path))
|
97
|
-
else
|
98
|
-
# if the file does not exist or is not a file, then the checksum is invalid/pointless
|
99
|
-
current_resource.checksum(nil)
|
100
|
-
end
|
101
|
-
load_resource_attributes_from_file(current_resource)
|
102
|
-
end
|
103
|
-
|
104
|
-
current_resource
|
105
|
-
end
|
106
|
-
|
107
|
-
def define_resource_requirements
|
108
|
-
# deep inside FAC we have to assert requirements, so call FACs hook to set that up
|
109
|
-
access_controls.define_resource_requirements
|
110
|
-
|
111
|
-
# Make sure the parent directory exists, otherwise fail. For why-run assume it would have been created.
|
112
|
-
requirements.assert(:create, :create_if_missing, :touch) do |a|
|
113
|
-
parent_directory = ::File.dirname(new_resource.path)
|
114
|
-
a.assertion { ::File.directory?(parent_directory) }
|
115
|
-
a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist.")
|
116
|
-
a.whyrun("Assuming directory #{parent_directory} would have been created")
|
117
|
-
end
|
118
|
-
|
119
|
-
# Make sure the file is deletable if it exists, otherwise fail.
|
120
|
-
if ::File.exist?(new_resource.path)
|
121
|
-
requirements.assert(:delete) do |a|
|
122
|
-
a.assertion { ::File.writable?(new_resource.path) }
|
123
|
-
a.failure_message(Chef::Exceptions::InsufficientPermissions, "File #{new_resource.path} exists but is not writable so it cannot be deleted")
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
error, reason, whyrun_message = inspect_existing_fs_entry
|
128
|
-
requirements.assert(:create) do |a|
|
129
|
-
a.assertion { error.nil? }
|
130
|
-
a.failure_message(error, reason)
|
131
|
-
a.whyrun(whyrun_message)
|
132
|
-
# Subsequent attempts to read the fs entry at the path (e.g., for
|
133
|
-
# calculating checksums) could blow up, so give up trying to continue
|
134
|
-
# why-running.
|
135
|
-
a.block_action!
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
def action_create
|
140
|
-
do_generate_content
|
141
|
-
do_validate_content
|
142
|
-
do_unlink
|
143
|
-
do_create_file
|
144
|
-
do_contents_changes
|
145
|
-
do_acl_changes
|
146
|
-
do_selinux
|
147
|
-
load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
|
148
|
-
end
|
149
|
-
|
150
|
-
def action_create_if_missing
|
151
|
-
unless ::File.exist?(new_resource.path)
|
152
|
-
action_create
|
153
|
-
else
|
154
|
-
logger.trace("#{new_resource} exists at #{new_resource.path} taking no action.")
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
def action_delete
|
159
|
-
if ::File.exists?(new_resource.path)
|
160
|
-
converge_by("delete file #{new_resource.path}") do
|
161
|
-
do_backup unless file_class.symlink?(new_resource.path)
|
162
|
-
::File.delete(new_resource.path)
|
163
|
-
logger.info("#{new_resource} deleted file at #{new_resource.path}")
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
def action_touch
|
169
|
-
action_create
|
170
|
-
converge_by("update utime on file #{new_resource.path}") do
|
171
|
-
time = Time.now
|
172
|
-
::File.utime(time, time, new_resource.path)
|
173
|
-
logger.info("#{new_resource} updated atime and mtime to #{time}")
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
# Implementation components *should* follow symlinks when managing access
|
178
|
-
# control (e.g., use chmod instead of lchmod even if the path we're
|
179
|
-
# managing is a symlink).
|
180
|
-
def manage_symlink_access?
|
181
|
-
false
|
182
|
-
end
|
183
|
-
|
184
|
-
private
|
185
|
-
|
186
|
-
# What to check in this resource to see if we're going to be actively managing
|
187
|
-
# content (for things like doing checksums in load_current_resource). Expected to
|
188
|
-
# be overridden in subclasses.
|
189
|
-
def managing_content?
|
190
|
-
return true if new_resource.checksum
|
191
|
-
return true if !new_resource.content.nil? && @action != :create_if_missing
|
192
|
-
false
|
193
|
-
end
|
194
|
-
|
195
|
-
# Handles resource requirements for action :create when some fs entry
|
196
|
-
# already exists at the destination path. For actions other than create,
|
197
|
-
# we don't care what kind of thing is at the destination path because:
|
198
|
-
# * for :create_if_missing, we're assuming the user wanted to avoid blowing away the non-file here
|
199
|
-
# * for :touch, we can modify perms of whatever is at this path, regardless of its type
|
200
|
-
# * for :delete, we can blow away whatever is here, regardless of its type
|
201
|
-
#
|
202
|
-
# For the action :create case, we need to deal with user-selectable
|
203
|
-
# behavior to see if we're in an error condition.
|
204
|
-
# * If there's no file at the destination path currently, we're cool to
|
205
|
-
# create it.
|
206
|
-
# * If the fs entry that currently exists at the destination is a regular
|
207
|
-
# file, we're cool to update it with new content.
|
208
|
-
# * If the fs entry is a symlink AND the resource has
|
209
|
-
# `manage_symlink_source` enabled, we need to verify that the symlink is
|
210
|
-
# a valid pointer to a real file. If it is, we can manage content and
|
211
|
-
# permissions on the symlink source, otherwise, error.
|
212
|
-
# * If `manage_symlink_source` is not enabled, fall through.
|
213
|
-
# * If force_unlink is true, action :create will unlink whatever is in the way.
|
214
|
-
# * If force_unlink is false, we're in an exceptional situation, so we
|
215
|
-
# want to error.
|
216
|
-
#
|
217
|
-
# Note that this method returns values to be used with requirement
|
218
|
-
# assertions, which then decide whether or not to raise or issue a
|
219
|
-
# warning for whyrun mode.
|
220
|
-
def inspect_existing_fs_entry
|
221
|
-
path = new_resource.path
|
222
|
-
|
223
|
-
if !l_exist?(path)
|
224
|
-
[nil, nil, nil]
|
225
|
-
elsif real_file?(path)
|
226
|
-
[nil, nil, nil]
|
227
|
-
elsif file_class.symlink?(path) && new_resource.manage_symlink_source
|
228
|
-
verify_symlink_sanity(path)
|
229
|
-
elsif file_class.symlink?(new_resource.path) && new_resource.manage_symlink_source.nil?
|
230
|
-
logger.warn("File #{path} managed by #{new_resource} is really a symlink (to #{file_class.realpath(new_resource.path)}). Managing the source file instead.")
|
231
|
-
logger.warn("Disable this warning by setting `manage_symlink_source true` on the resource")
|
232
|
-
logger.warn("In a future Chef release, 'manage_symlink_source' will not be enabled by default")
|
233
|
-
verify_symlink_sanity(path)
|
234
|
-
elsif new_resource.force_unlink
|
235
|
-
[nil, nil, nil]
|
236
|
-
else
|
237
|
-
[ Chef::Exceptions::FileTypeMismatch,
|
238
|
-
"File #{path} exists, but is a #{file_type_string(new_resource.path)}, set force_unlink to true to remove",
|
239
|
-
"Assuming #{file_type_string(new_resource.path)} at #{new_resource.path} would have been removed by a previous resource",
|
240
|
-
]
|
241
|
-
end
|
242
|
-
end
|
243
|
-
|
244
|
-
# Returns values suitable for use in a requirements assertion statement
|
245
|
-
# when managing symlink source. If we're managing symlink source we can
|
246
|
-
# hit 3 error cases:
|
247
|
-
# 1. Symlink to nowhere: File.realpath(symlink) -> raise Errno::ENOENT
|
248
|
-
# 2. Symlink loop: File.realpath(symlink) -> raise Errno::ELOOP
|
249
|
-
# 3. Symlink to not-a-real-file: File.realpath(symlink) -> (directory|blockdev|etc.)
|
250
|
-
# If any of the above apply, returns a 3-tuple of Exception class,
|
251
|
-
# exception message, whyrun message; otherwise returns a 3-tuple of nil.
|
252
|
-
def verify_symlink_sanity(path)
|
253
|
-
real_path = ::File.realpath(path)
|
254
|
-
if real_file?(real_path)
|
255
|
-
[nil, nil, nil]
|
256
|
-
else
|
257
|
-
[ Chef::Exceptions::FileTypeMismatch,
|
258
|
-
"File #{path} exists, but is a symlink to #{real_path} which is a #{file_type_string(real_path)}. " +
|
259
|
-
"Disable manage_symlink_source and set force_unlink to remove it.",
|
260
|
-
"Assuming symlink #{path} or source file #{real_path} would have been fixed by a previous resource",
|
261
|
-
]
|
262
|
-
end
|
263
|
-
rescue Errno::ELOOP
|
264
|
-
[ Chef::Exceptions::InvalidSymlink,
|
265
|
-
"Symlink at #{path} (pointing to #{::File.readlink(path)}) exists but attempting to resolve it creates a loop",
|
266
|
-
"Assuming symlink loop would be fixed by a previous resource" ]
|
267
|
-
rescue Errno::ENOENT
|
268
|
-
[ Chef::Exceptions::InvalidSymlink,
|
269
|
-
"Symlink at #{path} (pointing to #{::File.readlink(path)}) exists but attempting to resolve it leads to a nonexistent file",
|
270
|
-
"Assuming symlink source would be created by a previous resource" ]
|
271
|
-
end
|
272
|
-
|
273
|
-
def content
|
274
|
-
@content ||= begin
|
275
|
-
load_current_resource if current_resource.nil?
|
276
|
-
@content_class.new(new_resource, current_resource, @run_context, logger)
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
def file_type_string(path)
|
281
|
-
case
|
282
|
-
when ::File.blockdev?(path)
|
283
|
-
"block device"
|
284
|
-
when ::File.chardev?(path)
|
285
|
-
"char device"
|
286
|
-
when ::File.directory?(path)
|
287
|
-
"directory"
|
288
|
-
when ::File.pipe?(path)
|
289
|
-
"pipe"
|
290
|
-
when ::File.socket?(path)
|
291
|
-
"socket"
|
292
|
-
when file_class.symlink?(path)
|
293
|
-
"symlink"
|
294
|
-
else
|
295
|
-
"unknown filetype"
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
def real_file?(path)
|
300
|
-
!file_class.symlink?(path) && ::File.file?(path)
|
301
|
-
end
|
302
|
-
|
303
|
-
# like real_file? that follows (sane) symlinks
|
304
|
-
def symlink_to_real_file?(path)
|
305
|
-
real_file?(::File.realpath(path))
|
306
|
-
rescue Errno::ELOOP, Errno::ENOENT
|
307
|
-
false
|
308
|
-
end
|
309
|
-
|
310
|
-
# Similar to File.exist?, but also returns true in the case that the
|
311
|
-
# named file is a broken symlink.
|
312
|
-
def l_exist?(path)
|
313
|
-
::File.exist?(path) || file_class.symlink?(path)
|
314
|
-
end
|
315
|
-
|
316
|
-
def unlink(path)
|
317
|
-
# Directories can not be unlinked. Remove them using FileUtils.
|
318
|
-
if ::File.directory?(path)
|
319
|
-
FileUtils.rm_rf(path)
|
320
|
-
else
|
321
|
-
::File.unlink(path)
|
322
|
-
end
|
323
|
-
end
|
324
|
-
|
325
|
-
def do_generate_content
|
326
|
-
# referencing the tempfile magically causes content to be generated
|
327
|
-
tempfile
|
328
|
-
end
|
329
|
-
|
330
|
-
def tempfile_checksum
|
331
|
-
@tempfile_checksum ||= checksum(tempfile.path)
|
332
|
-
end
|
333
|
-
|
334
|
-
def do_validate_content
|
335
|
-
if new_resource.checksum && tempfile && ( new_resource.checksum.downcase != tempfile_checksum )
|
336
|
-
raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(tempfile_checksum))
|
337
|
-
end
|
338
|
-
|
339
|
-
if tempfile
|
340
|
-
new_resource.verify.each do |v|
|
341
|
-
if ! v.verify(tempfile.path)
|
342
|
-
raise Chef::Exceptions::ValidationFailed.new "Proposed content for #{new_resource.path} failed verification #{new_resource.sensitive ? '[sensitive]' : v}"
|
343
|
-
end
|
344
|
-
end
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
def do_unlink
|
349
|
-
if new_resource.force_unlink
|
350
|
-
if needs_unlinking?
|
351
|
-
# unlink things that aren't normal files
|
352
|
-
description = "unlink #{file_type_string(new_resource.path)} at #{new_resource.path}"
|
353
|
-
converge_by(description) do
|
354
|
-
unlink(new_resource.path)
|
355
|
-
end
|
356
|
-
end
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
|
-
def do_create_file
|
361
|
-
if needs_creating?
|
362
|
-
converge_by("create new file #{new_resource.path}") do
|
363
|
-
deployment_strategy.create(new_resource.path)
|
364
|
-
logger.info("#{new_resource} created file #{new_resource.path}")
|
365
|
-
end
|
366
|
-
end
|
367
|
-
end
|
368
|
-
|
369
|
-
def do_backup(file = nil)
|
370
|
-
Chef::Util::Backup.new(new_resource, file).backup!
|
371
|
-
end
|
372
|
-
|
373
|
-
def diff
|
374
|
-
@diff ||= Chef::Util::Diff.new
|
375
|
-
end
|
376
|
-
|
377
|
-
def update_file_contents
|
378
|
-
do_backup unless needs_creating?
|
379
|
-
deployment_strategy.deploy(tempfile.path, ::File.realpath(new_resource.path))
|
380
|
-
logger.info("#{new_resource} updated file contents #{new_resource.path}")
|
381
|
-
if managing_content?
|
382
|
-
# save final checksum for reporting.
|
383
|
-
new_resource.final_checksum = checksum(new_resource.path)
|
384
|
-
end
|
385
|
-
end
|
386
|
-
|
387
|
-
def do_contents_changes
|
388
|
-
# a nil tempfile is okay, means the resource has no content or no new content
|
389
|
-
return if tempfile.nil?
|
390
|
-
# but a tempfile that has no path or doesn't exist should not happen
|
391
|
-
if tempfile.path.nil? || !::File.exists?(tempfile.path)
|
392
|
-
raise "chef-client is confused, trying to deploy a file that has no path or does not exist..."
|
393
|
-
end
|
394
|
-
|
395
|
-
# the file? on the next line suppresses the case in why-run when we have a not-file here that would have otherwise been removed
|
396
|
-
if ::File.file?(new_resource.path) && contents_changed?
|
397
|
-
description = [ "update content in file #{new_resource.path} from \
|
398
|
-
#{short_cksum(current_resource.checksum)} to #{short_cksum(tempfile_checksum)}" ]
|
399
|
-
|
400
|
-
# Hide the diff output if the resource is marked as a sensitive resource
|
401
|
-
if new_resource.sensitive
|
402
|
-
new_resource.diff("suppressed sensitive resource")
|
403
|
-
description << "suppressed sensitive resource"
|
404
|
-
else
|
405
|
-
diff.diff(current_resource.path, tempfile.path)
|
406
|
-
new_resource.diff( diff.for_reporting ) unless needs_creating?
|
407
|
-
description << diff.for_output
|
408
|
-
end
|
409
|
-
|
410
|
-
converge_by(description) do
|
411
|
-
update_file_contents
|
412
|
-
end
|
413
|
-
end
|
414
|
-
|
415
|
-
# unlink necessary to clean up in why-run mode
|
416
|
-
tempfile.close
|
417
|
-
tempfile.unlink
|
418
|
-
end
|
419
|
-
|
420
|
-
# This logic ideally will be made into some kind of generic
|
421
|
-
# platform-dependent post-converge hook for file-like
|
422
|
-
# resources, but for now we only have the single selinux use
|
423
|
-
# case.
|
424
|
-
def do_selinux(recursive = false)
|
425
|
-
if resource_updated? && Chef::Config[:enable_selinux_file_permission_fixup]
|
426
|
-
if selinux_enabled?
|
427
|
-
converge_by("restore selinux security context") do
|
428
|
-
restore_security_context(::File.realpath(new_resource.path), recursive)
|
429
|
-
end
|
430
|
-
else
|
431
|
-
logger.trace "selinux utilities can not be found. Skipping selinux permission fixup."
|
432
|
-
end
|
433
|
-
end
|
434
|
-
end
|
435
|
-
|
436
|
-
def do_acl_changes
|
437
|
-
if access_controls.requires_changes?
|
438
|
-
converge_by(access_controls.describe_changes) do
|
439
|
-
access_controls.set_all
|
440
|
-
end
|
441
|
-
end
|
442
|
-
end
|
443
|
-
|
444
|
-
def contents_changed?
|
445
|
-
logger.trace "calculating checksum of #{tempfile.path} to compare with #{current_resource.checksum}"
|
446
|
-
tempfile_checksum != current_resource.checksum
|
447
|
-
end
|
448
|
-
|
449
|
-
def tempfile
|
450
|
-
@tempfile ||= content.tempfile
|
451
|
-
end
|
452
|
-
|
453
|
-
def load_resource_attributes_from_file(resource)
|
454
|
-
if Chef::Platform.windows?
|
455
|
-
# This is a work around for CHEF-3554.
|
456
|
-
# OC-6534: is tracking the real fix for this workaround.
|
457
|
-
# Add support for Windows equivalent, or implicit resource
|
458
|
-
# reporting won't work for Windows.
|
459
|
-
return
|
460
|
-
end
|
461
|
-
acl_scanner = ScanAccessControl.new(new_resource, resource)
|
462
|
-
acl_scanner.set_all!
|
463
|
-
end
|
464
|
-
|
465
|
-
def managing_symlink?
|
466
|
-
!!@managing_symlink
|
467
|
-
end
|
468
|
-
|
469
|
-
def needs_creating?
|
470
|
-
!!@needs_creating
|
471
|
-
end
|
472
|
-
|
473
|
-
def needs_unlinking?
|
474
|
-
!!@needs_unlinking
|
475
|
-
end
|
476
|
-
end
|
477
|
-
end
|
478
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
+
# Author:: Lamont Granquist (<lamont@chef.io>)
|
4
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
5
|
+
# License:: Apache License, Version 2.0
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
require "chef/config"
|
21
|
+
require "chef/log"
|
22
|
+
require "chef/resource/file"
|
23
|
+
require "chef/provider"
|
24
|
+
require "etc"
|
25
|
+
require "fileutils"
|
26
|
+
require "chef/scan_access_control"
|
27
|
+
require "chef/mixin/checksum"
|
28
|
+
require "chef/mixin/file_class"
|
29
|
+
require "chef/mixin/enforce_ownership_and_permissions"
|
30
|
+
require "chef/util/backup"
|
31
|
+
require "chef/util/diff"
|
32
|
+
require "chef/util/selinux"
|
33
|
+
require "chef/file_content_management/deploy"
|
34
|
+
|
35
|
+
# The Tao of File Providers:
|
36
|
+
# - the content provider must always return a tempfile that we can delete/mv
|
37
|
+
# - do_create_file shall always create the file first and obey umask when perms are not specified
|
38
|
+
# - do_contents_changes may assume the destination file exists (simplifies exception checking,
|
39
|
+
# and always gives us something to diff against)
|
40
|
+
# - do_contents_changes must restore the perms to the dest file and not obliterate them with
|
41
|
+
# random tempfile permissions
|
42
|
+
# - do_acl_changes may assume perms were not modified between lcr and when it runs (although the
|
43
|
+
# file may have been created)
|
44
|
+
|
45
|
+
class Chef
|
46
|
+
class Provider
|
47
|
+
class File < Chef::Provider
|
48
|
+
include Chef::Mixin::EnforceOwnershipAndPermissions
|
49
|
+
include Chef::Mixin::Checksum
|
50
|
+
include Chef::Util::Selinux
|
51
|
+
include Chef::Mixin::FileClass
|
52
|
+
|
53
|
+
provides :file
|
54
|
+
|
55
|
+
attr_reader :deployment_strategy
|
56
|
+
|
57
|
+
attr_accessor :needs_creating
|
58
|
+
attr_accessor :needs_unlinking
|
59
|
+
attr_accessor :managing_symlink
|
60
|
+
|
61
|
+
def initialize(new_resource, run_context)
|
62
|
+
@content_class ||= Chef::Provider::File::Content
|
63
|
+
if new_resource.respond_to?(:atomic_update)
|
64
|
+
@deployment_strategy = Chef::FileContentManagement::Deploy.strategy(new_resource.atomic_update)
|
65
|
+
end
|
66
|
+
super
|
67
|
+
end
|
68
|
+
|
69
|
+
def load_current_resource
|
70
|
+
# true if there is a symlink and we need to manage what it points at
|
71
|
+
@managing_symlink = file_class.symlink?(new_resource.path) && ( new_resource.manage_symlink_source || new_resource.manage_symlink_source.nil? )
|
72
|
+
|
73
|
+
# true if there is a non-file thing in the way that we need to unlink first
|
74
|
+
@needs_unlinking =
|
75
|
+
if ::File.exist?(new_resource.path)
|
76
|
+
if managing_symlink?
|
77
|
+
!symlink_to_real_file?(new_resource.path)
|
78
|
+
else
|
79
|
+
!real_file?(new_resource.path)
|
80
|
+
end
|
81
|
+
else
|
82
|
+
false
|
83
|
+
end
|
84
|
+
|
85
|
+
# true if we are going to be creating a new file
|
86
|
+
@needs_creating = !::File.exist?(new_resource.path) || needs_unlinking?
|
87
|
+
|
88
|
+
# Let children resources override constructing the current_resource
|
89
|
+
@current_resource ||= Chef::Resource::File.new(new_resource.name)
|
90
|
+
current_resource.path(new_resource.path)
|
91
|
+
|
92
|
+
if !needs_creating?
|
93
|
+
# we are updating an existing file
|
94
|
+
if managing_content?
|
95
|
+
logger.trace("#{new_resource} checksumming file at #{new_resource.path}.")
|
96
|
+
current_resource.checksum(checksum(current_resource.path))
|
97
|
+
else
|
98
|
+
# if the file does not exist or is not a file, then the checksum is invalid/pointless
|
99
|
+
current_resource.checksum(nil)
|
100
|
+
end
|
101
|
+
load_resource_attributes_from_file(current_resource)
|
102
|
+
end
|
103
|
+
|
104
|
+
current_resource
|
105
|
+
end
|
106
|
+
|
107
|
+
def define_resource_requirements
|
108
|
+
# deep inside FAC we have to assert requirements, so call FACs hook to set that up
|
109
|
+
access_controls.define_resource_requirements
|
110
|
+
|
111
|
+
# Make sure the parent directory exists, otherwise fail. For why-run assume it would have been created.
|
112
|
+
requirements.assert(:create, :create_if_missing, :touch) do |a|
|
113
|
+
parent_directory = ::File.dirname(new_resource.path)
|
114
|
+
a.assertion { ::File.directory?(parent_directory) }
|
115
|
+
a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist.")
|
116
|
+
a.whyrun("Assuming directory #{parent_directory} would have been created")
|
117
|
+
end
|
118
|
+
|
119
|
+
# Make sure the file is deletable if it exists, otherwise fail.
|
120
|
+
if ::File.exist?(new_resource.path)
|
121
|
+
requirements.assert(:delete) do |a|
|
122
|
+
a.assertion { ::File.writable?(new_resource.path) }
|
123
|
+
a.failure_message(Chef::Exceptions::InsufficientPermissions, "File #{new_resource.path} exists but is not writable so it cannot be deleted")
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
error, reason, whyrun_message = inspect_existing_fs_entry
|
128
|
+
requirements.assert(:create) do |a|
|
129
|
+
a.assertion { error.nil? }
|
130
|
+
a.failure_message(error, reason)
|
131
|
+
a.whyrun(whyrun_message)
|
132
|
+
# Subsequent attempts to read the fs entry at the path (e.g., for
|
133
|
+
# calculating checksums) could blow up, so give up trying to continue
|
134
|
+
# why-running.
|
135
|
+
a.block_action!
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def action_create
|
140
|
+
do_generate_content
|
141
|
+
do_validate_content
|
142
|
+
do_unlink
|
143
|
+
do_create_file
|
144
|
+
do_contents_changes
|
145
|
+
do_acl_changes
|
146
|
+
do_selinux
|
147
|
+
load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
|
148
|
+
end
|
149
|
+
|
150
|
+
def action_create_if_missing
|
151
|
+
unless ::File.exist?(new_resource.path)
|
152
|
+
action_create
|
153
|
+
else
|
154
|
+
logger.trace("#{new_resource} exists at #{new_resource.path} taking no action.")
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def action_delete
|
159
|
+
if ::File.exists?(new_resource.path)
|
160
|
+
converge_by("delete file #{new_resource.path}") do
|
161
|
+
do_backup unless file_class.symlink?(new_resource.path)
|
162
|
+
::File.delete(new_resource.path)
|
163
|
+
logger.info("#{new_resource} deleted file at #{new_resource.path}")
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def action_touch
|
169
|
+
action_create
|
170
|
+
converge_by("update utime on file #{new_resource.path}") do
|
171
|
+
time = Time.now
|
172
|
+
::File.utime(time, time, new_resource.path)
|
173
|
+
logger.info("#{new_resource} updated atime and mtime to #{time}")
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
# Implementation components *should* follow symlinks when managing access
|
178
|
+
# control (e.g., use chmod instead of lchmod even if the path we're
|
179
|
+
# managing is a symlink).
|
180
|
+
def manage_symlink_access?
|
181
|
+
false
|
182
|
+
end
|
183
|
+
|
184
|
+
private
|
185
|
+
|
186
|
+
# What to check in this resource to see if we're going to be actively managing
|
187
|
+
# content (for things like doing checksums in load_current_resource). Expected to
|
188
|
+
# be overridden in subclasses.
|
189
|
+
def managing_content?
|
190
|
+
return true if new_resource.checksum
|
191
|
+
return true if !new_resource.content.nil? && @action != :create_if_missing
|
192
|
+
false
|
193
|
+
end
|
194
|
+
|
195
|
+
# Handles resource requirements for action :create when some fs entry
|
196
|
+
# already exists at the destination path. For actions other than create,
|
197
|
+
# we don't care what kind of thing is at the destination path because:
|
198
|
+
# * for :create_if_missing, we're assuming the user wanted to avoid blowing away the non-file here
|
199
|
+
# * for :touch, we can modify perms of whatever is at this path, regardless of its type
|
200
|
+
# * for :delete, we can blow away whatever is here, regardless of its type
|
201
|
+
#
|
202
|
+
# For the action :create case, we need to deal with user-selectable
|
203
|
+
# behavior to see if we're in an error condition.
|
204
|
+
# * If there's no file at the destination path currently, we're cool to
|
205
|
+
# create it.
|
206
|
+
# * If the fs entry that currently exists at the destination is a regular
|
207
|
+
# file, we're cool to update it with new content.
|
208
|
+
# * If the fs entry is a symlink AND the resource has
|
209
|
+
# `manage_symlink_source` enabled, we need to verify that the symlink is
|
210
|
+
# a valid pointer to a real file. If it is, we can manage content and
|
211
|
+
# permissions on the symlink source, otherwise, error.
|
212
|
+
# * If `manage_symlink_source` is not enabled, fall through.
|
213
|
+
# * If force_unlink is true, action :create will unlink whatever is in the way.
|
214
|
+
# * If force_unlink is false, we're in an exceptional situation, so we
|
215
|
+
# want to error.
|
216
|
+
#
|
217
|
+
# Note that this method returns values to be used with requirement
|
218
|
+
# assertions, which then decide whether or not to raise or issue a
|
219
|
+
# warning for whyrun mode.
|
220
|
+
def inspect_existing_fs_entry
|
221
|
+
path = new_resource.path
|
222
|
+
|
223
|
+
if !l_exist?(path)
|
224
|
+
[nil, nil, nil]
|
225
|
+
elsif real_file?(path)
|
226
|
+
[nil, nil, nil]
|
227
|
+
elsif file_class.symlink?(path) && new_resource.manage_symlink_source
|
228
|
+
verify_symlink_sanity(path)
|
229
|
+
elsif file_class.symlink?(new_resource.path) && new_resource.manage_symlink_source.nil?
|
230
|
+
logger.warn("File #{path} managed by #{new_resource} is really a symlink (to #{file_class.realpath(new_resource.path)}). Managing the source file instead.")
|
231
|
+
logger.warn("Disable this warning by setting `manage_symlink_source true` on the resource")
|
232
|
+
logger.warn("In a future Chef release, 'manage_symlink_source' will not be enabled by default")
|
233
|
+
verify_symlink_sanity(path)
|
234
|
+
elsif new_resource.force_unlink
|
235
|
+
[nil, nil, nil]
|
236
|
+
else
|
237
|
+
[ Chef::Exceptions::FileTypeMismatch,
|
238
|
+
"File #{path} exists, but is a #{file_type_string(new_resource.path)}, set force_unlink to true to remove",
|
239
|
+
"Assuming #{file_type_string(new_resource.path)} at #{new_resource.path} would have been removed by a previous resource",
|
240
|
+
]
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
# Returns values suitable for use in a requirements assertion statement
|
245
|
+
# when managing symlink source. If we're managing symlink source we can
|
246
|
+
# hit 3 error cases:
|
247
|
+
# 1. Symlink to nowhere: File.realpath(symlink) -> raise Errno::ENOENT
|
248
|
+
# 2. Symlink loop: File.realpath(symlink) -> raise Errno::ELOOP
|
249
|
+
# 3. Symlink to not-a-real-file: File.realpath(symlink) -> (directory|blockdev|etc.)
|
250
|
+
# If any of the above apply, returns a 3-tuple of Exception class,
|
251
|
+
# exception message, whyrun message; otherwise returns a 3-tuple of nil.
|
252
|
+
def verify_symlink_sanity(path)
|
253
|
+
real_path = ::File.realpath(path)
|
254
|
+
if real_file?(real_path)
|
255
|
+
[nil, nil, nil]
|
256
|
+
else
|
257
|
+
[ Chef::Exceptions::FileTypeMismatch,
|
258
|
+
"File #{path} exists, but is a symlink to #{real_path} which is a #{file_type_string(real_path)}. " +
|
259
|
+
"Disable manage_symlink_source and set force_unlink to remove it.",
|
260
|
+
"Assuming symlink #{path} or source file #{real_path} would have been fixed by a previous resource",
|
261
|
+
]
|
262
|
+
end
|
263
|
+
rescue Errno::ELOOP
|
264
|
+
[ Chef::Exceptions::InvalidSymlink,
|
265
|
+
"Symlink at #{path} (pointing to #{::File.readlink(path)}) exists but attempting to resolve it creates a loop",
|
266
|
+
"Assuming symlink loop would be fixed by a previous resource" ]
|
267
|
+
rescue Errno::ENOENT
|
268
|
+
[ Chef::Exceptions::InvalidSymlink,
|
269
|
+
"Symlink at #{path} (pointing to #{::File.readlink(path)}) exists but attempting to resolve it leads to a nonexistent file",
|
270
|
+
"Assuming symlink source would be created by a previous resource" ]
|
271
|
+
end
|
272
|
+
|
273
|
+
def content
|
274
|
+
@content ||= begin
|
275
|
+
load_current_resource if current_resource.nil?
|
276
|
+
@content_class.new(new_resource, current_resource, @run_context, logger)
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
def file_type_string(path)
|
281
|
+
case
|
282
|
+
when ::File.blockdev?(path)
|
283
|
+
"block device"
|
284
|
+
when ::File.chardev?(path)
|
285
|
+
"char device"
|
286
|
+
when ::File.directory?(path)
|
287
|
+
"directory"
|
288
|
+
when ::File.pipe?(path)
|
289
|
+
"pipe"
|
290
|
+
when ::File.socket?(path)
|
291
|
+
"socket"
|
292
|
+
when file_class.symlink?(path)
|
293
|
+
"symlink"
|
294
|
+
else
|
295
|
+
"unknown filetype"
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
def real_file?(path)
|
300
|
+
!file_class.symlink?(path) && ::File.file?(path)
|
301
|
+
end
|
302
|
+
|
303
|
+
# like real_file? that follows (sane) symlinks
|
304
|
+
def symlink_to_real_file?(path)
|
305
|
+
real_file?(::File.realpath(path))
|
306
|
+
rescue Errno::ELOOP, Errno::ENOENT
|
307
|
+
false
|
308
|
+
end
|
309
|
+
|
310
|
+
# Similar to File.exist?, but also returns true in the case that the
|
311
|
+
# named file is a broken symlink.
|
312
|
+
def l_exist?(path)
|
313
|
+
::File.exist?(path) || file_class.symlink?(path)
|
314
|
+
end
|
315
|
+
|
316
|
+
def unlink(path)
|
317
|
+
# Directories can not be unlinked. Remove them using FileUtils.
|
318
|
+
if ::File.directory?(path)
|
319
|
+
FileUtils.rm_rf(path)
|
320
|
+
else
|
321
|
+
::File.unlink(path)
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
def do_generate_content
|
326
|
+
# referencing the tempfile magically causes content to be generated
|
327
|
+
tempfile
|
328
|
+
end
|
329
|
+
|
330
|
+
def tempfile_checksum
|
331
|
+
@tempfile_checksum ||= checksum(tempfile.path)
|
332
|
+
end
|
333
|
+
|
334
|
+
def do_validate_content
|
335
|
+
if new_resource.checksum && tempfile && ( new_resource.checksum.downcase != tempfile_checksum )
|
336
|
+
raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(tempfile_checksum))
|
337
|
+
end
|
338
|
+
|
339
|
+
if tempfile
|
340
|
+
new_resource.verify.each do |v|
|
341
|
+
if ! v.verify(tempfile.path)
|
342
|
+
raise Chef::Exceptions::ValidationFailed.new "Proposed content for #{new_resource.path} failed verification #{new_resource.sensitive ? '[sensitive]' : v}"
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
def do_unlink
|
349
|
+
if new_resource.force_unlink
|
350
|
+
if needs_unlinking?
|
351
|
+
# unlink things that aren't normal files
|
352
|
+
description = "unlink #{file_type_string(new_resource.path)} at #{new_resource.path}"
|
353
|
+
converge_by(description) do
|
354
|
+
unlink(new_resource.path)
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
def do_create_file
|
361
|
+
if needs_creating?
|
362
|
+
converge_by("create new file #{new_resource.path}") do
|
363
|
+
deployment_strategy.create(new_resource.path)
|
364
|
+
logger.info("#{new_resource} created file #{new_resource.path}")
|
365
|
+
end
|
366
|
+
end
|
367
|
+
end
|
368
|
+
|
369
|
+
def do_backup(file = nil)
|
370
|
+
Chef::Util::Backup.new(new_resource, file).backup!
|
371
|
+
end
|
372
|
+
|
373
|
+
def diff
|
374
|
+
@diff ||= Chef::Util::Diff.new
|
375
|
+
end
|
376
|
+
|
377
|
+
def update_file_contents
|
378
|
+
do_backup unless needs_creating?
|
379
|
+
deployment_strategy.deploy(tempfile.path, ::File.realpath(new_resource.path))
|
380
|
+
logger.info("#{new_resource} updated file contents #{new_resource.path}")
|
381
|
+
if managing_content?
|
382
|
+
# save final checksum for reporting.
|
383
|
+
new_resource.final_checksum = checksum(new_resource.path)
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
def do_contents_changes
|
388
|
+
# a nil tempfile is okay, means the resource has no content or no new content
|
389
|
+
return if tempfile.nil?
|
390
|
+
# but a tempfile that has no path or doesn't exist should not happen
|
391
|
+
if tempfile.path.nil? || !::File.exists?(tempfile.path)
|
392
|
+
raise "chef-client is confused, trying to deploy a file that has no path or does not exist..."
|
393
|
+
end
|
394
|
+
|
395
|
+
# the file? on the next line suppresses the case in why-run when we have a not-file here that would have otherwise been removed
|
396
|
+
if ::File.file?(new_resource.path) && contents_changed?
|
397
|
+
description = [ "update content in file #{new_resource.path} from \
|
398
|
+
#{short_cksum(current_resource.checksum)} to #{short_cksum(tempfile_checksum)}" ]
|
399
|
+
|
400
|
+
# Hide the diff output if the resource is marked as a sensitive resource
|
401
|
+
if new_resource.sensitive
|
402
|
+
new_resource.diff("suppressed sensitive resource")
|
403
|
+
description << "suppressed sensitive resource"
|
404
|
+
else
|
405
|
+
diff.diff(current_resource.path, tempfile.path)
|
406
|
+
new_resource.diff( diff.for_reporting ) unless needs_creating?
|
407
|
+
description << diff.for_output
|
408
|
+
end
|
409
|
+
|
410
|
+
converge_by(description) do
|
411
|
+
update_file_contents
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
415
|
+
# unlink necessary to clean up in why-run mode
|
416
|
+
tempfile.close
|
417
|
+
tempfile.unlink
|
418
|
+
end
|
419
|
+
|
420
|
+
# This logic ideally will be made into some kind of generic
|
421
|
+
# platform-dependent post-converge hook for file-like
|
422
|
+
# resources, but for now we only have the single selinux use
|
423
|
+
# case.
|
424
|
+
def do_selinux(recursive = false)
|
425
|
+
if resource_updated? && Chef::Config[:enable_selinux_file_permission_fixup]
|
426
|
+
if selinux_enabled?
|
427
|
+
converge_by("restore selinux security context") do
|
428
|
+
restore_security_context(::File.realpath(new_resource.path), recursive)
|
429
|
+
end
|
430
|
+
else
|
431
|
+
logger.trace "selinux utilities can not be found. Skipping selinux permission fixup."
|
432
|
+
end
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
def do_acl_changes
|
437
|
+
if access_controls.requires_changes?
|
438
|
+
converge_by(access_controls.describe_changes) do
|
439
|
+
access_controls.set_all
|
440
|
+
end
|
441
|
+
end
|
442
|
+
end
|
443
|
+
|
444
|
+
def contents_changed?
|
445
|
+
logger.trace "calculating checksum of #{tempfile.path} to compare with #{current_resource.checksum}"
|
446
|
+
tempfile_checksum != current_resource.checksum
|
447
|
+
end
|
448
|
+
|
449
|
+
def tempfile
|
450
|
+
@tempfile ||= content.tempfile
|
451
|
+
end
|
452
|
+
|
453
|
+
def load_resource_attributes_from_file(resource)
|
454
|
+
if Chef::Platform.windows?
|
455
|
+
# This is a work around for CHEF-3554.
|
456
|
+
# OC-6534: is tracking the real fix for this workaround.
|
457
|
+
# Add support for Windows equivalent, or implicit resource
|
458
|
+
# reporting won't work for Windows.
|
459
|
+
return
|
460
|
+
end
|
461
|
+
acl_scanner = ScanAccessControl.new(new_resource, resource)
|
462
|
+
acl_scanner.set_all!
|
463
|
+
end
|
464
|
+
|
465
|
+
def managing_symlink?
|
466
|
+
!!@managing_symlink
|
467
|
+
end
|
468
|
+
|
469
|
+
def needs_creating?
|
470
|
+
!!@needs_creating
|
471
|
+
end
|
472
|
+
|
473
|
+
def needs_unlinking?
|
474
|
+
!!@needs_unlinking
|
475
|
+
end
|
476
|
+
end
|
477
|
+
end
|
478
|
+
end
|