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,73 +1,73 @@
|
|
1
|
-
# Author:: Daniel DeLeo (<dan@chef.io>)
|
2
|
-
# Copyright:: Copyright 2015-2018, Chef Software Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
require "chef/json_compat"
|
18
|
-
require "chef/mixin/versioned_api"
|
19
|
-
|
20
|
-
class Chef
|
21
|
-
class Cookbook
|
22
|
-
class ManifestV0
|
23
|
-
extend Chef::Mixin::VersionedAPI
|
24
|
-
|
25
|
-
minimum_api_version 0
|
26
|
-
|
27
|
-
COOKBOOK_SEGMENTS = %w{ resources providers recipes definitions libraries attributes files templates root_files }.freeze
|
28
|
-
|
29
|
-
class << self
|
30
|
-
|
31
|
-
def from_hash(hash)
|
32
|
-
response = Mash.new(hash)
|
33
|
-
response[:all_files] = COOKBOOK_SEGMENTS.inject([]) do |memo, segment|
|
34
|
-
next memo if hash[segment].nil? || hash[segment].empty?
|
35
|
-
hash[segment].each do |file|
|
36
|
-
file["name"] = "#{segment}/#{file["name"]}"
|
37
|
-
memo << file
|
38
|
-
end
|
39
|
-
response.delete(segment)
|
40
|
-
memo
|
41
|
-
end
|
42
|
-
response
|
43
|
-
end
|
44
|
-
|
45
|
-
def to_h(manifest)
|
46
|
-
result = manifest.manifest.dup
|
47
|
-
result.delete("all_files")
|
48
|
-
|
49
|
-
files = manifest.by_parent_directory
|
50
|
-
files.keys.each_with_object(result) do |parent, memo|
|
51
|
-
if COOKBOOK_SEGMENTS.include?(parent)
|
52
|
-
memo[parent] ||= []
|
53
|
-
files[parent].each do |file|
|
54
|
-
file["name"] = file["name"].split("/")[1]
|
55
|
-
file.delete("full_path")
|
56
|
-
memo[parent] << file
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
# Ensure all segments are set to [] if they don't exist.
|
61
|
-
# See https://github.com/chef/chef/issues/6044
|
62
|
-
COOKBOOK_SEGMENTS.each do |segment|
|
63
|
-
result[segment] ||= []
|
64
|
-
end
|
65
|
-
|
66
|
-
result.merge({ "frozen?" => manifest.frozen_version?, "chef_type" => "cookbook_version" })
|
67
|
-
end
|
68
|
-
|
69
|
-
alias_method :to_hash, :to_h
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
1
|
+
# Author:: Daniel DeLeo (<dan@chef.io>)
|
2
|
+
# Copyright:: Copyright 2015-2018, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "chef/json_compat"
|
18
|
+
require "chef/mixin/versioned_api"
|
19
|
+
|
20
|
+
class Chef
|
21
|
+
class Cookbook
|
22
|
+
class ManifestV0
|
23
|
+
extend Chef::Mixin::VersionedAPI
|
24
|
+
|
25
|
+
minimum_api_version 0
|
26
|
+
|
27
|
+
COOKBOOK_SEGMENTS = %w{ resources providers recipes definitions libraries attributes files templates root_files }.freeze
|
28
|
+
|
29
|
+
class << self
|
30
|
+
|
31
|
+
def from_hash(hash)
|
32
|
+
response = Mash.new(hash)
|
33
|
+
response[:all_files] = COOKBOOK_SEGMENTS.inject([]) do |memo, segment|
|
34
|
+
next memo if hash[segment].nil? || hash[segment].empty?
|
35
|
+
hash[segment].each do |file|
|
36
|
+
file["name"] = "#{segment}/#{file["name"]}"
|
37
|
+
memo << file
|
38
|
+
end
|
39
|
+
response.delete(segment)
|
40
|
+
memo
|
41
|
+
end
|
42
|
+
response
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_h(manifest)
|
46
|
+
result = manifest.manifest.dup
|
47
|
+
result.delete("all_files")
|
48
|
+
|
49
|
+
files = manifest.by_parent_directory
|
50
|
+
files.keys.each_with_object(result) do |parent, memo|
|
51
|
+
if COOKBOOK_SEGMENTS.include?(parent)
|
52
|
+
memo[parent] ||= []
|
53
|
+
files[parent].each do |file|
|
54
|
+
file["name"] = file["name"].split("/")[1]
|
55
|
+
file.delete("full_path")
|
56
|
+
memo[parent] << file
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
# Ensure all segments are set to [] if they don't exist.
|
61
|
+
# See https://github.com/chef/chef/issues/6044
|
62
|
+
COOKBOOK_SEGMENTS.each do |segment|
|
63
|
+
result[segment] ||= []
|
64
|
+
end
|
65
|
+
|
66
|
+
result.merge({ "frozen?" => manifest.frozen_version?, "chef_type" => "cookbook_version" })
|
67
|
+
end
|
68
|
+
|
69
|
+
alias_method :to_hash, :to_h
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -1,45 +1,45 @@
|
|
1
|
-
# Copyright:: Copyright 2015-2018, Chef Software Inc.
|
2
|
-
# License:: Apache License, Version 2.0
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
|
16
|
-
require "chef/json_compat"
|
17
|
-
require "chef/mixin/versioned_api"
|
18
|
-
|
19
|
-
class Chef
|
20
|
-
class Cookbook
|
21
|
-
class ManifestV2
|
22
|
-
extend Chef::Mixin::VersionedAPI
|
23
|
-
|
24
|
-
minimum_api_version 2
|
25
|
-
|
26
|
-
class << self
|
27
|
-
def from_hash(hash)
|
28
|
-
Chef::Log.trace "processing manifest: #{hash}"
|
29
|
-
Mash.new hash
|
30
|
-
end
|
31
|
-
|
32
|
-
def to_h(manifest)
|
33
|
-
result = manifest.manifest.dup
|
34
|
-
result["all_files"].map! { |file| file.delete("full_path"); file }
|
35
|
-
result["frozen?"] = manifest.frozen_version?
|
36
|
-
result["chef_type"] = "cookbook_version"
|
37
|
-
result.to_hash
|
38
|
-
end
|
39
|
-
|
40
|
-
alias_method :to_hash, :to_h
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
1
|
+
# Copyright:: Copyright 2015-2018, Chef Software Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
require "chef/json_compat"
|
17
|
+
require "chef/mixin/versioned_api"
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
class Cookbook
|
21
|
+
class ManifestV2
|
22
|
+
extend Chef::Mixin::VersionedAPI
|
23
|
+
|
24
|
+
minimum_api_version 2
|
25
|
+
|
26
|
+
class << self
|
27
|
+
def from_hash(hash)
|
28
|
+
Chef::Log.trace "processing manifest: #{hash}"
|
29
|
+
Mash.new hash
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_h(manifest)
|
33
|
+
result = manifest.manifest.dup
|
34
|
+
result["all_files"].map! { |file| file.delete("full_path"); file }
|
35
|
+
result["frozen?"] = manifest.frozen_version?
|
36
|
+
result["chef_type"] = "cookbook_version"
|
37
|
+
result.to_hash
|
38
|
+
end
|
39
|
+
|
40
|
+
alias_method :to_hash, :to_h
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,804 +1,804 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Author:: AJ Christensen (<aj@chef.io>)
|
4
|
-
# Author:: Seth Falcon (<seth@chef.io>)
|
5
|
-
# Copyright:: Copyright 2008-2018, Chef Software Inc.
|
6
|
-
# License:: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
|
21
|
-
require "chef/exceptions"
|
22
|
-
require "chef/mash"
|
23
|
-
require "chef/mixin/from_file"
|
24
|
-
require "chef/mixin/params_validate"
|
25
|
-
require "chef/log"
|
26
|
-
require "chef/version_class"
|
27
|
-
require "chef/version_constraint"
|
28
|
-
require "chef/version_constraint/platform"
|
29
|
-
require "chef/json_compat"
|
30
|
-
|
31
|
-
class Chef
|
32
|
-
class Cookbook
|
33
|
-
|
34
|
-
# == Chef::Cookbook::Metadata
|
35
|
-
# Chef::Cookbook::Metadata provides a convenient DSL for declaring metadata
|
36
|
-
# about Chef Cookbooks.
|
37
|
-
class Metadata
|
38
|
-
|
39
|
-
NAME = "name".freeze
|
40
|
-
DESCRIPTION = "description".freeze
|
41
|
-
LONG_DESCRIPTION = "long_description".freeze
|
42
|
-
MAINTAINER = "maintainer".freeze
|
43
|
-
MAINTAINER_EMAIL = "maintainer_email".freeze
|
44
|
-
LICENSE = "license".freeze
|
45
|
-
PLATFORMS = "platforms".freeze
|
46
|
-
DEPENDENCIES = "dependencies".freeze
|
47
|
-
PROVIDING = "providing".freeze
|
48
|
-
ATTRIBUTES = "attributes".freeze
|
49
|
-
RECIPES = "recipes".freeze
|
50
|
-
VERSION = "version".freeze
|
51
|
-
SOURCE_URL = "source_url".freeze
|
52
|
-
ISSUES_URL = "issues_url".freeze
|
53
|
-
PRIVACY = "privacy".freeze
|
54
|
-
CHEF_VERSIONS = "chef_versions".freeze
|
55
|
-
OHAI_VERSIONS = "ohai_versions".freeze
|
56
|
-
GEMS = "gems".freeze
|
57
|
-
|
58
|
-
COMPARISON_FIELDS = [ :name, :description, :long_description, :maintainer,
|
59
|
-
:maintainer_email, :license, :platforms, :dependencies,
|
60
|
-
:providing, :attributes, :recipes, :version,
|
61
|
-
:source_url, :issues_url, :privacy, :chef_versions, :ohai_versions,
|
62
|
-
:gems ].freeze
|
63
|
-
|
64
|
-
VERSION_CONSTRAINTS = { depends: DEPENDENCIES,
|
65
|
-
provides: PROVIDING,
|
66
|
-
chef_version: CHEF_VERSIONS,
|
67
|
-
ohai_version: OHAI_VERSIONS }.freeze
|
68
|
-
|
69
|
-
include Chef::Mixin::ParamsValidate
|
70
|
-
include Chef::Mixin::FromFile
|
71
|
-
|
72
|
-
attr_reader :platforms
|
73
|
-
attr_reader :dependencies
|
74
|
-
attr_reader :providing
|
75
|
-
attr_reader :attributes
|
76
|
-
attr_reader :recipes
|
77
|
-
|
78
|
-
# @return [Array<Gem::Dependency>] Array of supported Chef versions
|
79
|
-
attr_reader :chef_versions
|
80
|
-
# @return [Array<Gem::Dependency>] Array of supported Ohai versions
|
81
|
-
attr_reader :ohai_versions
|
82
|
-
# @return [Array<Array>] Array of gems to install with *args as an Array
|
83
|
-
attr_reader :gems
|
84
|
-
|
85
|
-
# Builds a new Chef::Cookbook::Metadata object.
|
86
|
-
#
|
87
|
-
# === Parameters
|
88
|
-
# cookbook<String>:: An optional cookbook object
|
89
|
-
# maintainer<String>:: An optional maintainer
|
90
|
-
# maintainer_email<String>:: An optional maintainer email
|
91
|
-
# license<String>::An optional license. Default is Apache v2.0
|
92
|
-
#
|
93
|
-
# === Returns
|
94
|
-
# metadata<Chef::Cookbook::Metadata>
|
95
|
-
def initialize
|
96
|
-
@name = nil
|
97
|
-
|
98
|
-
@description = ""
|
99
|
-
@long_description = ""
|
100
|
-
@license = "All rights reserved"
|
101
|
-
|
102
|
-
@maintainer = ""
|
103
|
-
@maintainer_email = ""
|
104
|
-
|
105
|
-
@platforms = Mash.new
|
106
|
-
@dependencies = Mash.new
|
107
|
-
@providing = Mash.new
|
108
|
-
@attributes = Mash.new
|
109
|
-
@recipes = Mash.new
|
110
|
-
@version = Version.new("0.0.0")
|
111
|
-
@source_url = ""
|
112
|
-
@issues_url = ""
|
113
|
-
@privacy = false
|
114
|
-
@chef_versions = []
|
115
|
-
@ohai_versions = []
|
116
|
-
@gems = []
|
117
|
-
|
118
|
-
@errors = []
|
119
|
-
end
|
120
|
-
|
121
|
-
def ==(other)
|
122
|
-
COMPARISON_FIELDS.inject(true) do |equal_so_far, field|
|
123
|
-
equal_so_far && other.respond_to?(field) && (other.send(field) == send(field))
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
# Whether this metadata is valid. In order to be valid, all required
|
128
|
-
# fields must be set. Chef's validation implementation checks the content
|
129
|
-
# of a given field when setting (and raises an error if the content does
|
130
|
-
# not meet the criteria), so the content of the fields is not considered
|
131
|
-
# when checking validity.
|
132
|
-
#
|
133
|
-
# === Returns
|
134
|
-
# valid<Boolean>:: Whether this metadata object is valid
|
135
|
-
def valid?
|
136
|
-
run_validation
|
137
|
-
@errors.empty?
|
138
|
-
end
|
139
|
-
|
140
|
-
# A list of validation errors for this metadata object. See #valid? for
|
141
|
-
# comments about the validation criteria.
|
142
|
-
#
|
143
|
-
# If there are any validation errors, one or more error strings will be
|
144
|
-
# returned. Otherwise an empty array is returned.
|
145
|
-
#
|
146
|
-
# === Returns
|
147
|
-
# error messages<Array>:: Whether this metadata object is valid
|
148
|
-
def errors
|
149
|
-
run_validation
|
150
|
-
@errors
|
151
|
-
end
|
152
|
-
|
153
|
-
# Sets the cookbooks maintainer, or returns it.
|
154
|
-
#
|
155
|
-
# === Parameters
|
156
|
-
# maintainer<String>:: The maintainers name
|
157
|
-
#
|
158
|
-
# === Returns
|
159
|
-
# maintainer<String>:: Returns the current maintainer.
|
160
|
-
def maintainer(arg = nil)
|
161
|
-
set_or_return(
|
162
|
-
:maintainer,
|
163
|
-
arg,
|
164
|
-
kind_of: [ String ]
|
165
|
-
)
|
166
|
-
end
|
167
|
-
|
168
|
-
# Sets the maintainers email address, or returns it.
|
169
|
-
#
|
170
|
-
# === Parameters
|
171
|
-
# maintainer_email<String>:: The maintainers email address
|
172
|
-
#
|
173
|
-
# === Returns
|
174
|
-
# maintainer_email<String>:: Returns the current maintainer email.
|
175
|
-
def maintainer_email(arg = nil)
|
176
|
-
set_or_return(
|
177
|
-
:maintainer_email,
|
178
|
-
arg,
|
179
|
-
kind_of: [ String ]
|
180
|
-
)
|
181
|
-
end
|
182
|
-
|
183
|
-
# Sets the current license, or returns it.
|
184
|
-
#
|
185
|
-
# === Parameters
|
186
|
-
# license<String>:: The current license.
|
187
|
-
#
|
188
|
-
# === Returns
|
189
|
-
# license<String>:: Returns the current license
|
190
|
-
def license(arg = nil)
|
191
|
-
set_or_return(
|
192
|
-
:license,
|
193
|
-
arg,
|
194
|
-
kind_of: [ String ]
|
195
|
-
)
|
196
|
-
end
|
197
|
-
|
198
|
-
# Sets the current description, or returns it. Should be short - one line only!
|
199
|
-
#
|
200
|
-
# === Parameters
|
201
|
-
# description<String>:: The new description
|
202
|
-
#
|
203
|
-
# === Returns
|
204
|
-
# description<String>:: Returns the description
|
205
|
-
def description(arg = nil)
|
206
|
-
set_or_return(
|
207
|
-
:description,
|
208
|
-
arg,
|
209
|
-
kind_of: [ String ]
|
210
|
-
)
|
211
|
-
end
|
212
|
-
|
213
|
-
# Sets the current long description, or returns it. Might come from a README, say.
|
214
|
-
#
|
215
|
-
# === Parameters
|
216
|
-
# long_description<String>:: The new long description
|
217
|
-
#
|
218
|
-
# === Returns
|
219
|
-
# long_description<String>:: Returns the long description
|
220
|
-
def long_description(arg = nil)
|
221
|
-
set_or_return(
|
222
|
-
:long_description,
|
223
|
-
arg,
|
224
|
-
kind_of: [ String ]
|
225
|
-
)
|
226
|
-
end
|
227
|
-
|
228
|
-
# Sets the current cookbook version, or returns it. Can be two or three digits, separated
|
229
|
-
# by dots. ie: '2.1', '1.5.4' or '0.9'.
|
230
|
-
#
|
231
|
-
# === Parameters
|
232
|
-
# version<String>:: The current version, as a string
|
233
|
-
#
|
234
|
-
# === Returns
|
235
|
-
# version<String>:: Returns the current version
|
236
|
-
def version(arg = nil)
|
237
|
-
if arg
|
238
|
-
@version = Chef::Version.new(arg)
|
239
|
-
end
|
240
|
-
|
241
|
-
@version.to_s
|
242
|
-
end
|
243
|
-
|
244
|
-
# Sets the name of the cookbook, or returns it.
|
245
|
-
#
|
246
|
-
# === Parameters
|
247
|
-
# name<String>:: The current cookbook name.
|
248
|
-
#
|
249
|
-
# === Returns
|
250
|
-
# name<String>:: Returns the current cookbook name.
|
251
|
-
def name(arg = nil)
|
252
|
-
set_or_return(
|
253
|
-
:name,
|
254
|
-
arg,
|
255
|
-
kind_of: [ String ]
|
256
|
-
)
|
257
|
-
end
|
258
|
-
|
259
|
-
# Adds a supported platform, with version checking strings.
|
260
|
-
#
|
261
|
-
# === Parameters
|
262
|
-
# platform<String>,<Symbol>:: The platform (like :ubuntu or :mac_os_x)
|
263
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
264
|
-
# where OP is one of < <= = > >= ~> and VERSION has
|
265
|
-
# the form x.y.z or x.y.
|
266
|
-
#
|
267
|
-
# === Returns
|
268
|
-
# versions<Array>:: Returns the list of versions for the platform
|
269
|
-
def supports(platform, *version_args)
|
270
|
-
version = new_args_format(:supports, platform, version_args)
|
271
|
-
constraint = validate_version_constraint(:supports, platform, version)
|
272
|
-
@platforms[platform] = constraint.to_s
|
273
|
-
@platforms[platform]
|
274
|
-
end
|
275
|
-
|
276
|
-
# Adds a dependency on another cookbook, with version checking strings.
|
277
|
-
#
|
278
|
-
# === Parameters
|
279
|
-
# cookbook<String>:: The cookbook
|
280
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
281
|
-
# where OP is one of < <= = > >= ~> and VERSION has
|
282
|
-
# the form x.y.z or x.y.
|
283
|
-
#
|
284
|
-
# === Returns
|
285
|
-
# versions<Array>:: Returns the list of versions for the platform
|
286
|
-
def depends(cookbook, *version_args)
|
287
|
-
if cookbook == name
|
288
|
-
raise "Cookbook depends on itself in cookbook #{name}, please remove the this unnecessary self-dependency"
|
289
|
-
else
|
290
|
-
version = new_args_format(:depends, cookbook, version_args)
|
291
|
-
constraint = validate_version_constraint(:depends, cookbook, version)
|
292
|
-
@dependencies[cookbook] = constraint.to_s
|
293
|
-
end
|
294
|
-
@dependencies[cookbook]
|
295
|
-
end
|
296
|
-
|
297
|
-
# Adds a recipe, definition, or resource provided by this cookbook.
|
298
|
-
#
|
299
|
-
# Recipes are specified as normal
|
300
|
-
# Definitions are followed by (), and can include :params for prototyping
|
301
|
-
# Resources are the stringified version (service[apache2])
|
302
|
-
#
|
303
|
-
# === Parameters
|
304
|
-
# recipe, definition, resource<String>:: The thing we provide
|
305
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
306
|
-
# where OP is one of < <= = > >= ~> and VERSION has
|
307
|
-
# the form x.y.z or x.y.
|
308
|
-
#
|
309
|
-
# === Returns
|
310
|
-
# versions<Array>:: Returns the list of versions for the platform
|
311
|
-
def provides(cookbook, *version_args)
|
312
|
-
version = new_args_format(:provides, cookbook, version_args)
|
313
|
-
constraint = validate_version_constraint(:provides, cookbook, version)
|
314
|
-
@providing[cookbook] = constraint.to_s
|
315
|
-
@providing[cookbook]
|
316
|
-
end
|
317
|
-
|
318
|
-
# Metadata DSL to set a valid chef_version. May be declared multiple times
|
319
|
-
# with the result being 'OR'd such that if any statements match, the version
|
320
|
-
# is considered supported. Uses Gem::Requirement for its implementation.
|
321
|
-
#
|
322
|
-
# @param version_args [Array<String>] Version constraint in String form
|
323
|
-
# @return [Array<Gem::Dependency>] Current chef_versions array
|
324
|
-
def chef_version(*version_args)
|
325
|
-
@chef_versions << Gem::Dependency.new("chef", *version_args) unless version_args.empty?
|
326
|
-
@chef_versions
|
327
|
-
end
|
328
|
-
|
329
|
-
# Metadata DSL to set a valid ohai_version. May be declared multiple times
|
330
|
-
# with the result being 'OR'd such that if any statements match, the version
|
331
|
-
# is considered supported. Uses Gem::Requirement for its implementation.
|
332
|
-
#
|
333
|
-
# @param version_args [Array<String>] Version constraint in String form
|
334
|
-
# @return [Array<Gem::Dependency>] Current ohai_versions array
|
335
|
-
def ohai_version(*version_args)
|
336
|
-
@ohai_versions << Gem::Dependency.new("ohai", *version_args) unless version_args.empty?
|
337
|
-
@ohai_versions
|
338
|
-
end
|
339
|
-
|
340
|
-
# Metadata DSL to set a gem to install from the cookbook metadata. May be declared
|
341
|
-
# multiple times. All the gems from all the cookbooks are combined into one Gemfile
|
342
|
-
# and depsolved together. Uses Bundler's DSL for its implementation.
|
343
|
-
#
|
344
|
-
# @param args [Array<String>] Gem name and options to pass to Bundler's DSL
|
345
|
-
# @return [Array<Array>] Array of gem statements as args
|
346
|
-
def gem(*args)
|
347
|
-
@gems << args unless args.empty?
|
348
|
-
@gems
|
349
|
-
end
|
350
|
-
|
351
|
-
# Adds a description for a recipe.
|
352
|
-
#
|
353
|
-
# === Parameters
|
354
|
-
# recipe<String>:: The recipe
|
355
|
-
# description<String>:: The description of the recipe
|
356
|
-
#
|
357
|
-
# === Returns
|
358
|
-
# description<String>:: Returns the current description
|
359
|
-
def recipe(name, description)
|
360
|
-
@recipes[name] = description
|
361
|
-
end
|
362
|
-
|
363
|
-
# Sets the cookbook's recipes to the list of recipes in the given
|
364
|
-
# +cookbook+. Any recipe that already has a description (if set by the
|
365
|
-
# #recipe method) will not be updated.
|
366
|
-
#
|
367
|
-
# === Parameters
|
368
|
-
# cookbook<CookbookVersion>:: CookbookVersion object representing the cookbook
|
369
|
-
# description<String>:: The description of the recipe
|
370
|
-
#
|
371
|
-
# === Returns
|
372
|
-
# recipe_unqualified_names<Array>:: An array of the recipe names given by the cookbook
|
373
|
-
def recipes_from_cookbook_version(cookbook)
|
374
|
-
cookbook.fully_qualified_recipe_names.map do |recipe_name|
|
375
|
-
unqualified_name =
|
376
|
-
if recipe_name =~ /::default$/
|
377
|
-
name.to_s
|
378
|
-
else
|
379
|
-
recipe_name
|
380
|
-
end
|
381
|
-
|
382
|
-
@recipes[unqualified_name] ||= ""
|
383
|
-
provides(unqualified_name)
|
384
|
-
|
385
|
-
unqualified_name
|
386
|
-
end
|
387
|
-
end
|
388
|
-
|
389
|
-
# Adds an attribute that a user needs to configure for this cookbook. Takes
|
390
|
-
# a name (with the / notation for a nested attribute), followed by any of
|
391
|
-
# these options
|
392
|
-
#
|
393
|
-
# display_name<String>:: What a UI should show for this attribute
|
394
|
-
# description<String>:: A hint as to what this attr is for
|
395
|
-
# choice<Array>:: An array of choices to present to the user.
|
396
|
-
# calculated<Boolean>:: If true, the default value is calculated by the recipe and cannot be displayed.
|
397
|
-
# type<String>:: "string" or "array" - default is "string" ("hash" is supported for backwards compatibility)
|
398
|
-
# required<String>:: Whether this attr is 'required', 'recommended' or 'optional' - default 'optional' (true/false values also supported for backwards compatibility)
|
399
|
-
# recipes<Array>:: An array of recipes which need this attr set.
|
400
|
-
# default<String>,<Array>,<Hash>:: The default value
|
401
|
-
#
|
402
|
-
# === Parameters
|
403
|
-
# name<String>:: The name of the attribute ('foo', or 'apache2/log_dir')
|
404
|
-
# options<Hash>:: The description of the options
|
405
|
-
#
|
406
|
-
# === Returns
|
407
|
-
# options<Hash>:: Returns the current options hash
|
408
|
-
def attribute(name, options)
|
409
|
-
validate(
|
410
|
-
options,
|
411
|
-
{
|
412
|
-
display_name: { kind_of: String },
|
413
|
-
description: { kind_of: String },
|
414
|
-
choice: { kind_of: [ Array ], default: [] },
|
415
|
-
calculated: { equal_to: [ true, false ], default: false },
|
416
|
-
type: { equal_to: %w{string array hash symbol boolean numeric}, default: "string" },
|
417
|
-
required: { equal_to: [ "required", "recommended", "optional", true, false ], default: "optional" },
|
418
|
-
recipes: { kind_of: [ Array ], default: [] },
|
419
|
-
default: { kind_of: [ String, Array, Hash, Symbol, Numeric, TrueClass, FalseClass ] },
|
420
|
-
source_url: { kind_of: String },
|
421
|
-
issues_url: { kind_of: String },
|
422
|
-
privacy: { kind_of: [ TrueClass, FalseClass ] },
|
423
|
-
}
|
424
|
-
)
|
425
|
-
options[:required] = remap_required_attribute(options[:required]) unless options[:required].nil?
|
426
|
-
validate_choice_array(options)
|
427
|
-
validate_calculated_default_rule(options)
|
428
|
-
validate_choice_default_rule(options)
|
429
|
-
|
430
|
-
@attributes[name] = options
|
431
|
-
@attributes[name]
|
432
|
-
end
|
433
|
-
|
434
|
-
# Convert an Array of Gem::Dependency objects (chef_version/ohai_version) to an Array.
|
435
|
-
#
|
436
|
-
# Gem::Dependencey#to_s is not useful, and there is no #to_json defined on it or its component
|
437
|
-
# objets, so we have to write our own rendering method.
|
438
|
-
#
|
439
|
-
# [ Gem::Dependency.new(">= 12.5"), Gem::Dependency.new(">= 11.18.0", "< 12.0") ]
|
440
|
-
#
|
441
|
-
# results in:
|
442
|
-
#
|
443
|
-
# [ [ ">= 12.5" ], [ ">= 11.18.0", "< 12.0" ] ]
|
444
|
-
#
|
445
|
-
# @param deps [Array<Gem::Dependency>] Multiple Gem-style version constraints
|
446
|
-
# @return [Array<Array<String>]] Simple object representation of version constraints (for json)
|
447
|
-
def gem_requirements_to_array(*deps)
|
448
|
-
deps.map do |dep|
|
449
|
-
dep.requirement.requirements.map do |op, version|
|
450
|
-
"#{op} #{version}"
|
451
|
-
end.sort
|
452
|
-
end
|
453
|
-
end
|
454
|
-
|
455
|
-
# Convert an Array of Gem::Dependency objects (chef_version/ohai_version) to a hash.
|
456
|
-
#
|
457
|
-
# This is the inverse of #gem_requirements_to_array
|
458
|
-
#
|
459
|
-
# @param what [String] What version constraint we are constructing ('chef' or 'ohai' presently)
|
460
|
-
# @param array [Array<Array<String>]] Simple object representation of version constraints (from json)
|
461
|
-
# @return [Array<Gem::Dependency>] Multiple Gem-style version constraints
|
462
|
-
def gem_requirements_from_array(what, array)
|
463
|
-
array.map do |dep|
|
464
|
-
Gem::Dependency.new(what, *dep)
|
465
|
-
end
|
466
|
-
end
|
467
|
-
|
468
|
-
def to_h
|
469
|
-
{
|
470
|
-
NAME => name,
|
471
|
-
DESCRIPTION => description,
|
472
|
-
LONG_DESCRIPTION => long_description,
|
473
|
-
MAINTAINER => maintainer,
|
474
|
-
MAINTAINER_EMAIL => maintainer_email,
|
475
|
-
LICENSE => license,
|
476
|
-
PLATFORMS => platforms,
|
477
|
-
DEPENDENCIES => dependencies,
|
478
|
-
PROVIDING => providing,
|
479
|
-
ATTRIBUTES => attributes,
|
480
|
-
RECIPES => recipes,
|
481
|
-
VERSION => version,
|
482
|
-
SOURCE_URL => source_url,
|
483
|
-
ISSUES_URL => issues_url,
|
484
|
-
PRIVACY => privacy,
|
485
|
-
CHEF_VERSIONS => gem_requirements_to_array(*chef_versions),
|
486
|
-
OHAI_VERSIONS => gem_requirements_to_array(*ohai_versions),
|
487
|
-
GEMS => gems,
|
488
|
-
}
|
489
|
-
end
|
490
|
-
|
491
|
-
alias_method :to_hash, :to_h
|
492
|
-
|
493
|
-
def to_json(*a)
|
494
|
-
Chef::JSONCompat.to_json(to_h, *a)
|
495
|
-
end
|
496
|
-
|
497
|
-
def self.from_hash(o)
|
498
|
-
cm = new()
|
499
|
-
cm.from_hash(o)
|
500
|
-
cm
|
501
|
-
end
|
502
|
-
|
503
|
-
def from_hash(o)
|
504
|
-
@name = o[NAME] if o.key?(NAME)
|
505
|
-
@description = o[DESCRIPTION] if o.key?(DESCRIPTION)
|
506
|
-
@long_description = o[LONG_DESCRIPTION] if o.key?(LONG_DESCRIPTION)
|
507
|
-
@maintainer = o[MAINTAINER] if o.key?(MAINTAINER)
|
508
|
-
@maintainer_email = o[MAINTAINER_EMAIL] if o.key?(MAINTAINER_EMAIL)
|
509
|
-
@license = o[LICENSE] if o.key?(LICENSE)
|
510
|
-
@platforms = o[PLATFORMS] if o.key?(PLATFORMS)
|
511
|
-
@dependencies = handle_deprecated_constraints(o[DEPENDENCIES]) if o.key?(DEPENDENCIES)
|
512
|
-
@providing = o[PROVIDING] if o.key?(PROVIDING)
|
513
|
-
@attributes = o[ATTRIBUTES] if o.key?(ATTRIBUTES)
|
514
|
-
@recipes = o[RECIPES] if o.key?(RECIPES)
|
515
|
-
@version = o[VERSION] if o.key?(VERSION)
|
516
|
-
@source_url = o[SOURCE_URL] if o.key?(SOURCE_URL)
|
517
|
-
@issues_url = o[ISSUES_URL] if o.key?(ISSUES_URL)
|
518
|
-
@privacy = o[PRIVACY] if o.key?(PRIVACY)
|
519
|
-
@chef_versions = gem_requirements_from_array("chef", o[CHEF_VERSIONS]) if o.key?(CHEF_VERSIONS)
|
520
|
-
@ohai_versions = gem_requirements_from_array("ohai", o[OHAI_VERSIONS]) if o.key?(OHAI_VERSIONS)
|
521
|
-
@gems = o[GEMS] if o.key?(GEMS)
|
522
|
-
self
|
523
|
-
end
|
524
|
-
|
525
|
-
def self.from_json(string)
|
526
|
-
o = Chef::JSONCompat.from_json(string)
|
527
|
-
from_hash(o)
|
528
|
-
end
|
529
|
-
|
530
|
-
def self.validate_json(json_str)
|
531
|
-
o = Chef::JSONCompat.from_json(json_str)
|
532
|
-
metadata = new()
|
533
|
-
VERSION_CONSTRAINTS.each do |dependency_type, hash_key|
|
534
|
-
if dependency_group = o[hash_key]
|
535
|
-
dependency_group.each do |cb_name, constraints|
|
536
|
-
if metadata.respond_to?(dependency_type)
|
537
|
-
metadata.public_send(dependency_type, cb_name, *Array(constraints))
|
538
|
-
end
|
539
|
-
end
|
540
|
-
end
|
541
|
-
end
|
542
|
-
true
|
543
|
-
end
|
544
|
-
|
545
|
-
def from_json(string)
|
546
|
-
o = Chef::JSONCompat.from_json(string)
|
547
|
-
from_hash(o)
|
548
|
-
end
|
549
|
-
|
550
|
-
# Sets the cookbook's source URL, or returns it.
|
551
|
-
#
|
552
|
-
# === Parameters
|
553
|
-
# maintainer<String>:: The source URL
|
554
|
-
#
|
555
|
-
# === Returns
|
556
|
-
# source_url<String>:: Returns the current source URL.
|
557
|
-
def source_url(arg = nil)
|
558
|
-
set_or_return(
|
559
|
-
:source_url,
|
560
|
-
arg,
|
561
|
-
kind_of: [ String ]
|
562
|
-
)
|
563
|
-
end
|
564
|
-
|
565
|
-
# Sets the cookbook's issues URL, or returns it.
|
566
|
-
#
|
567
|
-
# === Parameters
|
568
|
-
# issues_url<String>:: The issues URL
|
569
|
-
#
|
570
|
-
# === Returns
|
571
|
-
# issues_url<String>:: Returns the current issues URL.
|
572
|
-
def issues_url(arg = nil)
|
573
|
-
set_or_return(
|
574
|
-
:issues_url,
|
575
|
-
arg,
|
576
|
-
kind_of: [ String ]
|
577
|
-
)
|
578
|
-
end
|
579
|
-
|
580
|
-
#
|
581
|
-
# Sets the cookbook's privacy flag, or returns it.
|
582
|
-
#
|
583
|
-
# === Parameters
|
584
|
-
# privacy<TrueClass,FalseClass>:: Whether this cookbook is private or not
|
585
|
-
#
|
586
|
-
# === Returns
|
587
|
-
# privacy<TrueClass,FalseClass>:: Whether this cookbook is private or not
|
588
|
-
#
|
589
|
-
def privacy(arg = nil)
|
590
|
-
set_or_return(
|
591
|
-
:privacy,
|
592
|
-
arg,
|
593
|
-
kind_of: [ TrueClass, FalseClass ]
|
594
|
-
)
|
595
|
-
end
|
596
|
-
|
597
|
-
# Validates that the Ohai::VERSION of the running chef-client matches one of the
|
598
|
-
# configured ohai_version statements in this cookbooks metadata.
|
599
|
-
#
|
600
|
-
# @raise [Chef::Exceptions::CookbookOhaiVersionMismatch] if the cookbook fails validation
|
601
|
-
def validate_ohai_version!
|
602
|
-
unless gem_dep_matches?("ohai", Gem::Version.new(Ohai::VERSION), *ohai_versions)
|
603
|
-
raise Exceptions::CookbookOhaiVersionMismatch.new(Ohai::VERSION, name, version, *ohai_versions)
|
604
|
-
end
|
605
|
-
end
|
606
|
-
|
607
|
-
# Validates that the Chef::VERSION of the running chef-client matches one of the
|
608
|
-
# configured chef_version statements in this cookbooks metadata.
|
609
|
-
#
|
610
|
-
# @raise [Chef::Exceptions::CookbookChefVersionMismatch] if the cookbook fails validation
|
611
|
-
def validate_chef_version!
|
612
|
-
unless gem_dep_matches?("chef", Gem::Version.new(Chef::VERSION), *chef_versions)
|
613
|
-
raise Exceptions::CookbookChefVersionMismatch.new(Chef::VERSION, name, version, *chef_versions)
|
614
|
-
end
|
615
|
-
end
|
616
|
-
|
617
|
-
def method_missing(method, *args, &block)
|
618
|
-
if block_given?
|
619
|
-
super
|
620
|
-
else
|
621
|
-
Chef::Log.trace "ignoring method #{method} on cookbook with name #{name}, possible typo or the ghosts of metadata past or future?"
|
622
|
-
end
|
623
|
-
end
|
624
|
-
|
625
|
-
private
|
626
|
-
|
627
|
-
# Helper to match a gem style version (ohai_version/chef_version) against a set of
|
628
|
-
# Gem::Dependency version constraints. If none are present, it always matches. if
|
629
|
-
# multiple are present, one must match. Returns false if none matches.
|
630
|
-
#
|
631
|
-
# @param what [String] the name of the constraint (e.g. 'chef' or 'ohai')
|
632
|
-
# @param version [String] the version to compare against the constraints
|
633
|
-
# @param deps [Array<Gem::Dependency>] Multiple Gem-style version constraints
|
634
|
-
# @return [Boolean] true if no constraints or a match, false if no match
|
635
|
-
def gem_dep_matches?(what, version, *deps)
|
636
|
-
# always match if we have no chef_version at all
|
637
|
-
return true unless deps.length > 0
|
638
|
-
# match if we match any of the chef_version lines
|
639
|
-
deps.any? { |dep| dep.match?(what, version) }
|
640
|
-
end
|
641
|
-
|
642
|
-
def run_validation
|
643
|
-
if name.nil?
|
644
|
-
@errors = ["The `name' attribute is required in cookbook metadata"]
|
645
|
-
end
|
646
|
-
end
|
647
|
-
|
648
|
-
def new_args_format(caller_name, dep_name, version_constraints)
|
649
|
-
if version_constraints.empty?
|
650
|
-
">= 0.0.0"
|
651
|
-
elsif version_constraints.size == 1
|
652
|
-
version_constraints.first
|
653
|
-
else
|
654
|
-
msg = <<~OBSOLETED
|
655
|
-
The dependency specification syntax you are using is no longer valid. You may not
|
656
|
-
specify more than one version constraint for a particular cookbook.
|
657
|
-
Consult https://docs.chef.io/config_rb_metadata.html for the updated syntax.
|
658
|
-
|
659
|
-
Called by: #{caller_name} '#{dep_name}', #{version_constraints.map { |vc| vc.inspect }.join(", ")}
|
660
|
-
Called from:
|
661
|
-
#{caller[0...5].map { |line| " " + line }.join("\n")}
|
662
|
-
OBSOLETED
|
663
|
-
raise Exceptions::ObsoleteDependencySyntax, msg
|
664
|
-
end
|
665
|
-
end
|
666
|
-
|
667
|
-
def validate_version_constraint(caller_name, dep_name, constraint_str)
|
668
|
-
Chef::VersionConstraint::Platform.new(constraint_str)
|
669
|
-
rescue Chef::Exceptions::InvalidVersionConstraint => e
|
670
|
-
Log.debug(e)
|
671
|
-
|
672
|
-
msg = <<~INVALID
|
673
|
-
The version constraint syntax you are using is not valid. If you recently
|
674
|
-
upgraded to Chef 0.10.0, be aware that you no may longer use "<<" and ">>" for
|
675
|
-
'less than' and 'greater than'; use '<' and '>' instead.
|
676
|
-
Consult https://docs.chef.io/config_rb_metadata.html for more information.
|
677
|
-
|
678
|
-
Called by: #{caller_name} '#{dep_name}', '#{constraint_str}'
|
679
|
-
Called from:
|
680
|
-
#{caller[0...5].map { |line| " " + line }.join("\n")}
|
681
|
-
INVALID
|
682
|
-
raise Exceptions::InvalidVersionConstraint, msg
|
683
|
-
end
|
684
|
-
|
685
|
-
# Verify that the given array is an array of strings
|
686
|
-
#
|
687
|
-
# Raise an exception if the members of the array are not Strings
|
688
|
-
#
|
689
|
-
# === Parameters
|
690
|
-
# arry<Array>:: An array to be validated
|
691
|
-
def validate_string_array(arry)
|
692
|
-
if arry.kind_of?(Array)
|
693
|
-
arry.each do |choice|
|
694
|
-
validate( { choice: choice }, { choice: { kind_of: String } } )
|
695
|
-
end
|
696
|
-
end
|
697
|
-
end
|
698
|
-
|
699
|
-
# Validate the choice of the options hash
|
700
|
-
#
|
701
|
-
# Raise an exception if the members of the array do not match the defaults
|
702
|
-
# === Parameters
|
703
|
-
# opts<Hash>:: The options hash
|
704
|
-
def validate_choice_array(opts)
|
705
|
-
if opts[:choice].kind_of?(Array)
|
706
|
-
case opts[:type]
|
707
|
-
when "string"
|
708
|
-
validator = [ String ]
|
709
|
-
when "array"
|
710
|
-
validator = [ Array ]
|
711
|
-
when "hash"
|
712
|
-
validator = [ Hash ]
|
713
|
-
when "symbol"
|
714
|
-
validator = [ Symbol ]
|
715
|
-
when "boolean"
|
716
|
-
validator = [ TrueClass, FalseClass ]
|
717
|
-
when "numeric"
|
718
|
-
validator = [ Numeric ]
|
719
|
-
end
|
720
|
-
|
721
|
-
opts[:choice].each do |choice|
|
722
|
-
validate( { choice: choice }, { choice: { kind_of: validator } } )
|
723
|
-
end
|
724
|
-
end
|
725
|
-
end
|
726
|
-
|
727
|
-
# For backwards compatibility, remap Boolean values to String
|
728
|
-
# true is mapped to "required"
|
729
|
-
# false is mapped to "optional"
|
730
|
-
#
|
731
|
-
# === Parameters
|
732
|
-
# required_attr<String><Boolean>:: The value of options[:required]
|
733
|
-
#
|
734
|
-
# === Returns
|
735
|
-
# required_attr<String>:: "required", "recommended", or "optional"
|
736
|
-
def remap_required_attribute(value)
|
737
|
-
case value
|
738
|
-
when true
|
739
|
-
value = "required"
|
740
|
-
when false
|
741
|
-
value = "optional"
|
742
|
-
end
|
743
|
-
value
|
744
|
-
end
|
745
|
-
|
746
|
-
def validate_calculated_default_rule(options)
|
747
|
-
calculated_conflict = ((options[:default].is_a?(Array) && !options[:default].empty?) ||
|
748
|
-
(options[:default].is_a?(String) && !options[:default] != "")) &&
|
749
|
-
options[:calculated] == true
|
750
|
-
raise ArgumentError, "Default cannot be specified if calculated is true!" if calculated_conflict
|
751
|
-
end
|
752
|
-
|
753
|
-
def validate_choice_default_rule(options)
|
754
|
-
return if !options[:choice].is_a?(Array) || options[:choice].empty?
|
755
|
-
|
756
|
-
if options[:default].is_a?(String) && options[:default] != ""
|
757
|
-
raise ArgumentError, "Default must be one of your choice values!" if options[:choice].index(options[:default]).nil?
|
758
|
-
end
|
759
|
-
|
760
|
-
if options[:default].is_a?(Array) && !options[:default].empty?
|
761
|
-
options[:default].each do |val|
|
762
|
-
raise ArgumentError, "Default values must be a subset of your choice values!" if options[:choice].index(val).nil?
|
763
|
-
end
|
764
|
-
end
|
765
|
-
end
|
766
|
-
|
767
|
-
# This method translates version constraint strings from
|
768
|
-
# cookbooks with the old format.
|
769
|
-
#
|
770
|
-
# Before we began respecting version constraints, we allowed
|
771
|
-
# multiple constraints to be placed on cookbooks, as well as the
|
772
|
-
# << and >> operators, which are now just < and >. For
|
773
|
-
# specifications with more than one constraint, we return an
|
774
|
-
# empty array (otherwise, we're silently abiding only part of
|
775
|
-
# the contract they have specified to us). If there is only one
|
776
|
-
# constraint, we are replacing the old << and >> with the new <
|
777
|
-
# and >.
|
778
|
-
def handle_deprecated_constraints(specification)
|
779
|
-
specification.inject(Mash.new) do |acc, (cb, constraints)|
|
780
|
-
constraints = Array(constraints)
|
781
|
-
acc[cb] = (constraints.empty? || constraints.size > 1) ? [] : constraints.first.gsub(/>>/, ">").gsub(/<</, "<")
|
782
|
-
acc
|
783
|
-
end
|
784
|
-
end
|
785
|
-
|
786
|
-
end
|
787
|
-
|
788
|
-
#== Chef::Cookbook::MinimalMetadata
|
789
|
-
# MinimalMetadata is a duck type of Cookbook::Metadata, used
|
790
|
-
# internally by Chef Server when determining the optimal set of
|
791
|
-
# cookbooks for a node.
|
792
|
-
#
|
793
|
-
# MinimalMetadata objects typically contain only enough information
|
794
|
-
# to solve the cookbook collection for a run list, but not enough to
|
795
|
-
# generate the proper response
|
796
|
-
class MinimalMetadata < Metadata
|
797
|
-
def initialize(name, params)
|
798
|
-
@name = name
|
799
|
-
from_hash(params)
|
800
|
-
end
|
801
|
-
end
|
802
|
-
|
803
|
-
end
|
804
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
+
# Author:: AJ Christensen (<aj@chef.io>)
|
4
|
+
# Author:: Seth Falcon (<seth@chef.io>)
|
5
|
+
# Copyright:: Copyright 2008-2018, Chef Software Inc.
|
6
|
+
# License:: Apache License, Version 2.0
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
require "chef/exceptions"
|
22
|
+
require "chef/mash"
|
23
|
+
require "chef/mixin/from_file"
|
24
|
+
require "chef/mixin/params_validate"
|
25
|
+
require "chef/log"
|
26
|
+
require "chef/version_class"
|
27
|
+
require "chef/version_constraint"
|
28
|
+
require "chef/version_constraint/platform"
|
29
|
+
require "chef/json_compat"
|
30
|
+
|
31
|
+
class Chef
|
32
|
+
class Cookbook
|
33
|
+
|
34
|
+
# == Chef::Cookbook::Metadata
|
35
|
+
# Chef::Cookbook::Metadata provides a convenient DSL for declaring metadata
|
36
|
+
# about Chef Cookbooks.
|
37
|
+
class Metadata
|
38
|
+
|
39
|
+
NAME = "name".freeze
|
40
|
+
DESCRIPTION = "description".freeze
|
41
|
+
LONG_DESCRIPTION = "long_description".freeze
|
42
|
+
MAINTAINER = "maintainer".freeze
|
43
|
+
MAINTAINER_EMAIL = "maintainer_email".freeze
|
44
|
+
LICENSE = "license".freeze
|
45
|
+
PLATFORMS = "platforms".freeze
|
46
|
+
DEPENDENCIES = "dependencies".freeze
|
47
|
+
PROVIDING = "providing".freeze
|
48
|
+
ATTRIBUTES = "attributes".freeze
|
49
|
+
RECIPES = "recipes".freeze
|
50
|
+
VERSION = "version".freeze
|
51
|
+
SOURCE_URL = "source_url".freeze
|
52
|
+
ISSUES_URL = "issues_url".freeze
|
53
|
+
PRIVACY = "privacy".freeze
|
54
|
+
CHEF_VERSIONS = "chef_versions".freeze
|
55
|
+
OHAI_VERSIONS = "ohai_versions".freeze
|
56
|
+
GEMS = "gems".freeze
|
57
|
+
|
58
|
+
COMPARISON_FIELDS = [ :name, :description, :long_description, :maintainer,
|
59
|
+
:maintainer_email, :license, :platforms, :dependencies,
|
60
|
+
:providing, :attributes, :recipes, :version,
|
61
|
+
:source_url, :issues_url, :privacy, :chef_versions, :ohai_versions,
|
62
|
+
:gems ].freeze
|
63
|
+
|
64
|
+
VERSION_CONSTRAINTS = { depends: DEPENDENCIES,
|
65
|
+
provides: PROVIDING,
|
66
|
+
chef_version: CHEF_VERSIONS,
|
67
|
+
ohai_version: OHAI_VERSIONS }.freeze
|
68
|
+
|
69
|
+
include Chef::Mixin::ParamsValidate
|
70
|
+
include Chef::Mixin::FromFile
|
71
|
+
|
72
|
+
attr_reader :platforms
|
73
|
+
attr_reader :dependencies
|
74
|
+
attr_reader :providing
|
75
|
+
attr_reader :attributes
|
76
|
+
attr_reader :recipes
|
77
|
+
|
78
|
+
# @return [Array<Gem::Dependency>] Array of supported Chef versions
|
79
|
+
attr_reader :chef_versions
|
80
|
+
# @return [Array<Gem::Dependency>] Array of supported Ohai versions
|
81
|
+
attr_reader :ohai_versions
|
82
|
+
# @return [Array<Array>] Array of gems to install with *args as an Array
|
83
|
+
attr_reader :gems
|
84
|
+
|
85
|
+
# Builds a new Chef::Cookbook::Metadata object.
|
86
|
+
#
|
87
|
+
# === Parameters
|
88
|
+
# cookbook<String>:: An optional cookbook object
|
89
|
+
# maintainer<String>:: An optional maintainer
|
90
|
+
# maintainer_email<String>:: An optional maintainer email
|
91
|
+
# license<String>::An optional license. Default is Apache v2.0
|
92
|
+
#
|
93
|
+
# === Returns
|
94
|
+
# metadata<Chef::Cookbook::Metadata>
|
95
|
+
def initialize
|
96
|
+
@name = nil
|
97
|
+
|
98
|
+
@description = ""
|
99
|
+
@long_description = ""
|
100
|
+
@license = "All rights reserved"
|
101
|
+
|
102
|
+
@maintainer = ""
|
103
|
+
@maintainer_email = ""
|
104
|
+
|
105
|
+
@platforms = Mash.new
|
106
|
+
@dependencies = Mash.new
|
107
|
+
@providing = Mash.new
|
108
|
+
@attributes = Mash.new
|
109
|
+
@recipes = Mash.new
|
110
|
+
@version = Version.new("0.0.0")
|
111
|
+
@source_url = ""
|
112
|
+
@issues_url = ""
|
113
|
+
@privacy = false
|
114
|
+
@chef_versions = []
|
115
|
+
@ohai_versions = []
|
116
|
+
@gems = []
|
117
|
+
|
118
|
+
@errors = []
|
119
|
+
end
|
120
|
+
|
121
|
+
def ==(other)
|
122
|
+
COMPARISON_FIELDS.inject(true) do |equal_so_far, field|
|
123
|
+
equal_so_far && other.respond_to?(field) && (other.send(field) == send(field))
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
# Whether this metadata is valid. In order to be valid, all required
|
128
|
+
# fields must be set. Chef's validation implementation checks the content
|
129
|
+
# of a given field when setting (and raises an error if the content does
|
130
|
+
# not meet the criteria), so the content of the fields is not considered
|
131
|
+
# when checking validity.
|
132
|
+
#
|
133
|
+
# === Returns
|
134
|
+
# valid<Boolean>:: Whether this metadata object is valid
|
135
|
+
def valid?
|
136
|
+
run_validation
|
137
|
+
@errors.empty?
|
138
|
+
end
|
139
|
+
|
140
|
+
# A list of validation errors for this metadata object. See #valid? for
|
141
|
+
# comments about the validation criteria.
|
142
|
+
#
|
143
|
+
# If there are any validation errors, one or more error strings will be
|
144
|
+
# returned. Otherwise an empty array is returned.
|
145
|
+
#
|
146
|
+
# === Returns
|
147
|
+
# error messages<Array>:: Whether this metadata object is valid
|
148
|
+
def errors
|
149
|
+
run_validation
|
150
|
+
@errors
|
151
|
+
end
|
152
|
+
|
153
|
+
# Sets the cookbooks maintainer, or returns it.
|
154
|
+
#
|
155
|
+
# === Parameters
|
156
|
+
# maintainer<String>:: The maintainers name
|
157
|
+
#
|
158
|
+
# === Returns
|
159
|
+
# maintainer<String>:: Returns the current maintainer.
|
160
|
+
def maintainer(arg = nil)
|
161
|
+
set_or_return(
|
162
|
+
:maintainer,
|
163
|
+
arg,
|
164
|
+
kind_of: [ String ]
|
165
|
+
)
|
166
|
+
end
|
167
|
+
|
168
|
+
# Sets the maintainers email address, or returns it.
|
169
|
+
#
|
170
|
+
# === Parameters
|
171
|
+
# maintainer_email<String>:: The maintainers email address
|
172
|
+
#
|
173
|
+
# === Returns
|
174
|
+
# maintainer_email<String>:: Returns the current maintainer email.
|
175
|
+
def maintainer_email(arg = nil)
|
176
|
+
set_or_return(
|
177
|
+
:maintainer_email,
|
178
|
+
arg,
|
179
|
+
kind_of: [ String ]
|
180
|
+
)
|
181
|
+
end
|
182
|
+
|
183
|
+
# Sets the current license, or returns it.
|
184
|
+
#
|
185
|
+
# === Parameters
|
186
|
+
# license<String>:: The current license.
|
187
|
+
#
|
188
|
+
# === Returns
|
189
|
+
# license<String>:: Returns the current license
|
190
|
+
def license(arg = nil)
|
191
|
+
set_or_return(
|
192
|
+
:license,
|
193
|
+
arg,
|
194
|
+
kind_of: [ String ]
|
195
|
+
)
|
196
|
+
end
|
197
|
+
|
198
|
+
# Sets the current description, or returns it. Should be short - one line only!
|
199
|
+
#
|
200
|
+
# === Parameters
|
201
|
+
# description<String>:: The new description
|
202
|
+
#
|
203
|
+
# === Returns
|
204
|
+
# description<String>:: Returns the description
|
205
|
+
def description(arg = nil)
|
206
|
+
set_or_return(
|
207
|
+
:description,
|
208
|
+
arg,
|
209
|
+
kind_of: [ String ]
|
210
|
+
)
|
211
|
+
end
|
212
|
+
|
213
|
+
# Sets the current long description, or returns it. Might come from a README, say.
|
214
|
+
#
|
215
|
+
# === Parameters
|
216
|
+
# long_description<String>:: The new long description
|
217
|
+
#
|
218
|
+
# === Returns
|
219
|
+
# long_description<String>:: Returns the long description
|
220
|
+
def long_description(arg = nil)
|
221
|
+
set_or_return(
|
222
|
+
:long_description,
|
223
|
+
arg,
|
224
|
+
kind_of: [ String ]
|
225
|
+
)
|
226
|
+
end
|
227
|
+
|
228
|
+
# Sets the current cookbook version, or returns it. Can be two or three digits, separated
|
229
|
+
# by dots. ie: '2.1', '1.5.4' or '0.9'.
|
230
|
+
#
|
231
|
+
# === Parameters
|
232
|
+
# version<String>:: The current version, as a string
|
233
|
+
#
|
234
|
+
# === Returns
|
235
|
+
# version<String>:: Returns the current version
|
236
|
+
def version(arg = nil)
|
237
|
+
if arg
|
238
|
+
@version = Chef::Version.new(arg)
|
239
|
+
end
|
240
|
+
|
241
|
+
@version.to_s
|
242
|
+
end
|
243
|
+
|
244
|
+
# Sets the name of the cookbook, or returns it.
|
245
|
+
#
|
246
|
+
# === Parameters
|
247
|
+
# name<String>:: The current cookbook name.
|
248
|
+
#
|
249
|
+
# === Returns
|
250
|
+
# name<String>:: Returns the current cookbook name.
|
251
|
+
def name(arg = nil)
|
252
|
+
set_or_return(
|
253
|
+
:name,
|
254
|
+
arg,
|
255
|
+
kind_of: [ String ]
|
256
|
+
)
|
257
|
+
end
|
258
|
+
|
259
|
+
# Adds a supported platform, with version checking strings.
|
260
|
+
#
|
261
|
+
# === Parameters
|
262
|
+
# platform<String>,<Symbol>:: The platform (like :ubuntu or :mac_os_x)
|
263
|
+
# version<String>:: A version constraint of the form "OP VERSION",
|
264
|
+
# where OP is one of < <= = > >= ~> and VERSION has
|
265
|
+
# the form x.y.z or x.y.
|
266
|
+
#
|
267
|
+
# === Returns
|
268
|
+
# versions<Array>:: Returns the list of versions for the platform
|
269
|
+
def supports(platform, *version_args)
|
270
|
+
version = new_args_format(:supports, platform, version_args)
|
271
|
+
constraint = validate_version_constraint(:supports, platform, version)
|
272
|
+
@platforms[platform] = constraint.to_s
|
273
|
+
@platforms[platform]
|
274
|
+
end
|
275
|
+
|
276
|
+
# Adds a dependency on another cookbook, with version checking strings.
|
277
|
+
#
|
278
|
+
# === Parameters
|
279
|
+
# cookbook<String>:: The cookbook
|
280
|
+
# version<String>:: A version constraint of the form "OP VERSION",
|
281
|
+
# where OP is one of < <= = > >= ~> and VERSION has
|
282
|
+
# the form x.y.z or x.y.
|
283
|
+
#
|
284
|
+
# === Returns
|
285
|
+
# versions<Array>:: Returns the list of versions for the platform
|
286
|
+
def depends(cookbook, *version_args)
|
287
|
+
if cookbook == name
|
288
|
+
raise "Cookbook depends on itself in cookbook #{name}, please remove the this unnecessary self-dependency"
|
289
|
+
else
|
290
|
+
version = new_args_format(:depends, cookbook, version_args)
|
291
|
+
constraint = validate_version_constraint(:depends, cookbook, version)
|
292
|
+
@dependencies[cookbook] = constraint.to_s
|
293
|
+
end
|
294
|
+
@dependencies[cookbook]
|
295
|
+
end
|
296
|
+
|
297
|
+
# Adds a recipe, definition, or resource provided by this cookbook.
|
298
|
+
#
|
299
|
+
# Recipes are specified as normal
|
300
|
+
# Definitions are followed by (), and can include :params for prototyping
|
301
|
+
# Resources are the stringified version (service[apache2])
|
302
|
+
#
|
303
|
+
# === Parameters
|
304
|
+
# recipe, definition, resource<String>:: The thing we provide
|
305
|
+
# version<String>:: A version constraint of the form "OP VERSION",
|
306
|
+
# where OP is one of < <= = > >= ~> and VERSION has
|
307
|
+
# the form x.y.z or x.y.
|
308
|
+
#
|
309
|
+
# === Returns
|
310
|
+
# versions<Array>:: Returns the list of versions for the platform
|
311
|
+
def provides(cookbook, *version_args)
|
312
|
+
version = new_args_format(:provides, cookbook, version_args)
|
313
|
+
constraint = validate_version_constraint(:provides, cookbook, version)
|
314
|
+
@providing[cookbook] = constraint.to_s
|
315
|
+
@providing[cookbook]
|
316
|
+
end
|
317
|
+
|
318
|
+
# Metadata DSL to set a valid chef_version. May be declared multiple times
|
319
|
+
# with the result being 'OR'd such that if any statements match, the version
|
320
|
+
# is considered supported. Uses Gem::Requirement for its implementation.
|
321
|
+
#
|
322
|
+
# @param version_args [Array<String>] Version constraint in String form
|
323
|
+
# @return [Array<Gem::Dependency>] Current chef_versions array
|
324
|
+
def chef_version(*version_args)
|
325
|
+
@chef_versions << Gem::Dependency.new("chef", *version_args) unless version_args.empty?
|
326
|
+
@chef_versions
|
327
|
+
end
|
328
|
+
|
329
|
+
# Metadata DSL to set a valid ohai_version. May be declared multiple times
|
330
|
+
# with the result being 'OR'd such that if any statements match, the version
|
331
|
+
# is considered supported. Uses Gem::Requirement for its implementation.
|
332
|
+
#
|
333
|
+
# @param version_args [Array<String>] Version constraint in String form
|
334
|
+
# @return [Array<Gem::Dependency>] Current ohai_versions array
|
335
|
+
def ohai_version(*version_args)
|
336
|
+
@ohai_versions << Gem::Dependency.new("ohai", *version_args) unless version_args.empty?
|
337
|
+
@ohai_versions
|
338
|
+
end
|
339
|
+
|
340
|
+
# Metadata DSL to set a gem to install from the cookbook metadata. May be declared
|
341
|
+
# multiple times. All the gems from all the cookbooks are combined into one Gemfile
|
342
|
+
# and depsolved together. Uses Bundler's DSL for its implementation.
|
343
|
+
#
|
344
|
+
# @param args [Array<String>] Gem name and options to pass to Bundler's DSL
|
345
|
+
# @return [Array<Array>] Array of gem statements as args
|
346
|
+
def gem(*args)
|
347
|
+
@gems << args unless args.empty?
|
348
|
+
@gems
|
349
|
+
end
|
350
|
+
|
351
|
+
# Adds a description for a recipe.
|
352
|
+
#
|
353
|
+
# === Parameters
|
354
|
+
# recipe<String>:: The recipe
|
355
|
+
# description<String>:: The description of the recipe
|
356
|
+
#
|
357
|
+
# === Returns
|
358
|
+
# description<String>:: Returns the current description
|
359
|
+
def recipe(name, description)
|
360
|
+
@recipes[name] = description
|
361
|
+
end
|
362
|
+
|
363
|
+
# Sets the cookbook's recipes to the list of recipes in the given
|
364
|
+
# +cookbook+. Any recipe that already has a description (if set by the
|
365
|
+
# #recipe method) will not be updated.
|
366
|
+
#
|
367
|
+
# === Parameters
|
368
|
+
# cookbook<CookbookVersion>:: CookbookVersion object representing the cookbook
|
369
|
+
# description<String>:: The description of the recipe
|
370
|
+
#
|
371
|
+
# === Returns
|
372
|
+
# recipe_unqualified_names<Array>:: An array of the recipe names given by the cookbook
|
373
|
+
def recipes_from_cookbook_version(cookbook)
|
374
|
+
cookbook.fully_qualified_recipe_names.map do |recipe_name|
|
375
|
+
unqualified_name =
|
376
|
+
if recipe_name =~ /::default$/
|
377
|
+
name.to_s
|
378
|
+
else
|
379
|
+
recipe_name
|
380
|
+
end
|
381
|
+
|
382
|
+
@recipes[unqualified_name] ||= ""
|
383
|
+
provides(unqualified_name)
|
384
|
+
|
385
|
+
unqualified_name
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
# Adds an attribute that a user needs to configure for this cookbook. Takes
|
390
|
+
# a name (with the / notation for a nested attribute), followed by any of
|
391
|
+
# these options
|
392
|
+
#
|
393
|
+
# display_name<String>:: What a UI should show for this attribute
|
394
|
+
# description<String>:: A hint as to what this attr is for
|
395
|
+
# choice<Array>:: An array of choices to present to the user.
|
396
|
+
# calculated<Boolean>:: If true, the default value is calculated by the recipe and cannot be displayed.
|
397
|
+
# type<String>:: "string" or "array" - default is "string" ("hash" is supported for backwards compatibility)
|
398
|
+
# required<String>:: Whether this attr is 'required', 'recommended' or 'optional' - default 'optional' (true/false values also supported for backwards compatibility)
|
399
|
+
# recipes<Array>:: An array of recipes which need this attr set.
|
400
|
+
# default<String>,<Array>,<Hash>:: The default value
|
401
|
+
#
|
402
|
+
# === Parameters
|
403
|
+
# name<String>:: The name of the attribute ('foo', or 'apache2/log_dir')
|
404
|
+
# options<Hash>:: The description of the options
|
405
|
+
#
|
406
|
+
# === Returns
|
407
|
+
# options<Hash>:: Returns the current options hash
|
408
|
+
def attribute(name, options)
|
409
|
+
validate(
|
410
|
+
options,
|
411
|
+
{
|
412
|
+
display_name: { kind_of: String },
|
413
|
+
description: { kind_of: String },
|
414
|
+
choice: { kind_of: [ Array ], default: [] },
|
415
|
+
calculated: { equal_to: [ true, false ], default: false },
|
416
|
+
type: { equal_to: %w{string array hash symbol boolean numeric}, default: "string" },
|
417
|
+
required: { equal_to: [ "required", "recommended", "optional", true, false ], default: "optional" },
|
418
|
+
recipes: { kind_of: [ Array ], default: [] },
|
419
|
+
default: { kind_of: [ String, Array, Hash, Symbol, Numeric, TrueClass, FalseClass ] },
|
420
|
+
source_url: { kind_of: String },
|
421
|
+
issues_url: { kind_of: String },
|
422
|
+
privacy: { kind_of: [ TrueClass, FalseClass ] },
|
423
|
+
}
|
424
|
+
)
|
425
|
+
options[:required] = remap_required_attribute(options[:required]) unless options[:required].nil?
|
426
|
+
validate_choice_array(options)
|
427
|
+
validate_calculated_default_rule(options)
|
428
|
+
validate_choice_default_rule(options)
|
429
|
+
|
430
|
+
@attributes[name] = options
|
431
|
+
@attributes[name]
|
432
|
+
end
|
433
|
+
|
434
|
+
# Convert an Array of Gem::Dependency objects (chef_version/ohai_version) to an Array.
|
435
|
+
#
|
436
|
+
# Gem::Dependencey#to_s is not useful, and there is no #to_json defined on it or its component
|
437
|
+
# objets, so we have to write our own rendering method.
|
438
|
+
#
|
439
|
+
# [ Gem::Dependency.new(">= 12.5"), Gem::Dependency.new(">= 11.18.0", "< 12.0") ]
|
440
|
+
#
|
441
|
+
# results in:
|
442
|
+
#
|
443
|
+
# [ [ ">= 12.5" ], [ ">= 11.18.0", "< 12.0" ] ]
|
444
|
+
#
|
445
|
+
# @param deps [Array<Gem::Dependency>] Multiple Gem-style version constraints
|
446
|
+
# @return [Array<Array<String>]] Simple object representation of version constraints (for json)
|
447
|
+
def gem_requirements_to_array(*deps)
|
448
|
+
deps.map do |dep|
|
449
|
+
dep.requirement.requirements.map do |op, version|
|
450
|
+
"#{op} #{version}"
|
451
|
+
end.sort
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
455
|
+
# Convert an Array of Gem::Dependency objects (chef_version/ohai_version) to a hash.
|
456
|
+
#
|
457
|
+
# This is the inverse of #gem_requirements_to_array
|
458
|
+
#
|
459
|
+
# @param what [String] What version constraint we are constructing ('chef' or 'ohai' presently)
|
460
|
+
# @param array [Array<Array<String>]] Simple object representation of version constraints (from json)
|
461
|
+
# @return [Array<Gem::Dependency>] Multiple Gem-style version constraints
|
462
|
+
def gem_requirements_from_array(what, array)
|
463
|
+
array.map do |dep|
|
464
|
+
Gem::Dependency.new(what, *dep)
|
465
|
+
end
|
466
|
+
end
|
467
|
+
|
468
|
+
def to_h
|
469
|
+
{
|
470
|
+
NAME => name,
|
471
|
+
DESCRIPTION => description,
|
472
|
+
LONG_DESCRIPTION => long_description,
|
473
|
+
MAINTAINER => maintainer,
|
474
|
+
MAINTAINER_EMAIL => maintainer_email,
|
475
|
+
LICENSE => license,
|
476
|
+
PLATFORMS => platforms,
|
477
|
+
DEPENDENCIES => dependencies,
|
478
|
+
PROVIDING => providing,
|
479
|
+
ATTRIBUTES => attributes,
|
480
|
+
RECIPES => recipes,
|
481
|
+
VERSION => version,
|
482
|
+
SOURCE_URL => source_url,
|
483
|
+
ISSUES_URL => issues_url,
|
484
|
+
PRIVACY => privacy,
|
485
|
+
CHEF_VERSIONS => gem_requirements_to_array(*chef_versions),
|
486
|
+
OHAI_VERSIONS => gem_requirements_to_array(*ohai_versions),
|
487
|
+
GEMS => gems,
|
488
|
+
}
|
489
|
+
end
|
490
|
+
|
491
|
+
alias_method :to_hash, :to_h
|
492
|
+
|
493
|
+
def to_json(*a)
|
494
|
+
Chef::JSONCompat.to_json(to_h, *a)
|
495
|
+
end
|
496
|
+
|
497
|
+
def self.from_hash(o)
|
498
|
+
cm = new()
|
499
|
+
cm.from_hash(o)
|
500
|
+
cm
|
501
|
+
end
|
502
|
+
|
503
|
+
def from_hash(o)
|
504
|
+
@name = o[NAME] if o.key?(NAME)
|
505
|
+
@description = o[DESCRIPTION] if o.key?(DESCRIPTION)
|
506
|
+
@long_description = o[LONG_DESCRIPTION] if o.key?(LONG_DESCRIPTION)
|
507
|
+
@maintainer = o[MAINTAINER] if o.key?(MAINTAINER)
|
508
|
+
@maintainer_email = o[MAINTAINER_EMAIL] if o.key?(MAINTAINER_EMAIL)
|
509
|
+
@license = o[LICENSE] if o.key?(LICENSE)
|
510
|
+
@platforms = o[PLATFORMS] if o.key?(PLATFORMS)
|
511
|
+
@dependencies = handle_deprecated_constraints(o[DEPENDENCIES]) if o.key?(DEPENDENCIES)
|
512
|
+
@providing = o[PROVIDING] if o.key?(PROVIDING)
|
513
|
+
@attributes = o[ATTRIBUTES] if o.key?(ATTRIBUTES)
|
514
|
+
@recipes = o[RECIPES] if o.key?(RECIPES)
|
515
|
+
@version = o[VERSION] if o.key?(VERSION)
|
516
|
+
@source_url = o[SOURCE_URL] if o.key?(SOURCE_URL)
|
517
|
+
@issues_url = o[ISSUES_URL] if o.key?(ISSUES_URL)
|
518
|
+
@privacy = o[PRIVACY] if o.key?(PRIVACY)
|
519
|
+
@chef_versions = gem_requirements_from_array("chef", o[CHEF_VERSIONS]) if o.key?(CHEF_VERSIONS)
|
520
|
+
@ohai_versions = gem_requirements_from_array("ohai", o[OHAI_VERSIONS]) if o.key?(OHAI_VERSIONS)
|
521
|
+
@gems = o[GEMS] if o.key?(GEMS)
|
522
|
+
self
|
523
|
+
end
|
524
|
+
|
525
|
+
def self.from_json(string)
|
526
|
+
o = Chef::JSONCompat.from_json(string)
|
527
|
+
from_hash(o)
|
528
|
+
end
|
529
|
+
|
530
|
+
def self.validate_json(json_str)
|
531
|
+
o = Chef::JSONCompat.from_json(json_str)
|
532
|
+
metadata = new()
|
533
|
+
VERSION_CONSTRAINTS.each do |dependency_type, hash_key|
|
534
|
+
if dependency_group = o[hash_key]
|
535
|
+
dependency_group.each do |cb_name, constraints|
|
536
|
+
if metadata.respond_to?(dependency_type)
|
537
|
+
metadata.public_send(dependency_type, cb_name, *Array(constraints))
|
538
|
+
end
|
539
|
+
end
|
540
|
+
end
|
541
|
+
end
|
542
|
+
true
|
543
|
+
end
|
544
|
+
|
545
|
+
def from_json(string)
|
546
|
+
o = Chef::JSONCompat.from_json(string)
|
547
|
+
from_hash(o)
|
548
|
+
end
|
549
|
+
|
550
|
+
# Sets the cookbook's source URL, or returns it.
|
551
|
+
#
|
552
|
+
# === Parameters
|
553
|
+
# maintainer<String>:: The source URL
|
554
|
+
#
|
555
|
+
# === Returns
|
556
|
+
# source_url<String>:: Returns the current source URL.
|
557
|
+
def source_url(arg = nil)
|
558
|
+
set_or_return(
|
559
|
+
:source_url,
|
560
|
+
arg,
|
561
|
+
kind_of: [ String ]
|
562
|
+
)
|
563
|
+
end
|
564
|
+
|
565
|
+
# Sets the cookbook's issues URL, or returns it.
|
566
|
+
#
|
567
|
+
# === Parameters
|
568
|
+
# issues_url<String>:: The issues URL
|
569
|
+
#
|
570
|
+
# === Returns
|
571
|
+
# issues_url<String>:: Returns the current issues URL.
|
572
|
+
def issues_url(arg = nil)
|
573
|
+
set_or_return(
|
574
|
+
:issues_url,
|
575
|
+
arg,
|
576
|
+
kind_of: [ String ]
|
577
|
+
)
|
578
|
+
end
|
579
|
+
|
580
|
+
#
|
581
|
+
# Sets the cookbook's privacy flag, or returns it.
|
582
|
+
#
|
583
|
+
# === Parameters
|
584
|
+
# privacy<TrueClass,FalseClass>:: Whether this cookbook is private or not
|
585
|
+
#
|
586
|
+
# === Returns
|
587
|
+
# privacy<TrueClass,FalseClass>:: Whether this cookbook is private or not
|
588
|
+
#
|
589
|
+
def privacy(arg = nil)
|
590
|
+
set_or_return(
|
591
|
+
:privacy,
|
592
|
+
arg,
|
593
|
+
kind_of: [ TrueClass, FalseClass ]
|
594
|
+
)
|
595
|
+
end
|
596
|
+
|
597
|
+
# Validates that the Ohai::VERSION of the running chef-client matches one of the
|
598
|
+
# configured ohai_version statements in this cookbooks metadata.
|
599
|
+
#
|
600
|
+
# @raise [Chef::Exceptions::CookbookOhaiVersionMismatch] if the cookbook fails validation
|
601
|
+
def validate_ohai_version!
|
602
|
+
unless gem_dep_matches?("ohai", Gem::Version.new(Ohai::VERSION), *ohai_versions)
|
603
|
+
raise Exceptions::CookbookOhaiVersionMismatch.new(Ohai::VERSION, name, version, *ohai_versions)
|
604
|
+
end
|
605
|
+
end
|
606
|
+
|
607
|
+
# Validates that the Chef::VERSION of the running chef-client matches one of the
|
608
|
+
# configured chef_version statements in this cookbooks metadata.
|
609
|
+
#
|
610
|
+
# @raise [Chef::Exceptions::CookbookChefVersionMismatch] if the cookbook fails validation
|
611
|
+
def validate_chef_version!
|
612
|
+
unless gem_dep_matches?("chef", Gem::Version.new(Chef::VERSION), *chef_versions)
|
613
|
+
raise Exceptions::CookbookChefVersionMismatch.new(Chef::VERSION, name, version, *chef_versions)
|
614
|
+
end
|
615
|
+
end
|
616
|
+
|
617
|
+
def method_missing(method, *args, &block)
|
618
|
+
if block_given?
|
619
|
+
super
|
620
|
+
else
|
621
|
+
Chef::Log.trace "ignoring method #{method} on cookbook with name #{name}, possible typo or the ghosts of metadata past or future?"
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
private
|
626
|
+
|
627
|
+
# Helper to match a gem style version (ohai_version/chef_version) against a set of
|
628
|
+
# Gem::Dependency version constraints. If none are present, it always matches. if
|
629
|
+
# multiple are present, one must match. Returns false if none matches.
|
630
|
+
#
|
631
|
+
# @param what [String] the name of the constraint (e.g. 'chef' or 'ohai')
|
632
|
+
# @param version [String] the version to compare against the constraints
|
633
|
+
# @param deps [Array<Gem::Dependency>] Multiple Gem-style version constraints
|
634
|
+
# @return [Boolean] true if no constraints or a match, false if no match
|
635
|
+
def gem_dep_matches?(what, version, *deps)
|
636
|
+
# always match if we have no chef_version at all
|
637
|
+
return true unless deps.length > 0
|
638
|
+
# match if we match any of the chef_version lines
|
639
|
+
deps.any? { |dep| dep.match?(what, version) }
|
640
|
+
end
|
641
|
+
|
642
|
+
def run_validation
|
643
|
+
if name.nil?
|
644
|
+
@errors = ["The `name' attribute is required in cookbook metadata"]
|
645
|
+
end
|
646
|
+
end
|
647
|
+
|
648
|
+
def new_args_format(caller_name, dep_name, version_constraints)
|
649
|
+
if version_constraints.empty?
|
650
|
+
">= 0.0.0"
|
651
|
+
elsif version_constraints.size == 1
|
652
|
+
version_constraints.first
|
653
|
+
else
|
654
|
+
msg = <<~OBSOLETED
|
655
|
+
The dependency specification syntax you are using is no longer valid. You may not
|
656
|
+
specify more than one version constraint for a particular cookbook.
|
657
|
+
Consult https://docs.chef.io/config_rb_metadata.html for the updated syntax.
|
658
|
+
|
659
|
+
Called by: #{caller_name} '#{dep_name}', #{version_constraints.map { |vc| vc.inspect }.join(", ")}
|
660
|
+
Called from:
|
661
|
+
#{caller[0...5].map { |line| " " + line }.join("\n")}
|
662
|
+
OBSOLETED
|
663
|
+
raise Exceptions::ObsoleteDependencySyntax, msg
|
664
|
+
end
|
665
|
+
end
|
666
|
+
|
667
|
+
def validate_version_constraint(caller_name, dep_name, constraint_str)
|
668
|
+
Chef::VersionConstraint::Platform.new(constraint_str)
|
669
|
+
rescue Chef::Exceptions::InvalidVersionConstraint => e
|
670
|
+
Log.debug(e)
|
671
|
+
|
672
|
+
msg = <<~INVALID
|
673
|
+
The version constraint syntax you are using is not valid. If you recently
|
674
|
+
upgraded to Chef 0.10.0, be aware that you no may longer use "<<" and ">>" for
|
675
|
+
'less than' and 'greater than'; use '<' and '>' instead.
|
676
|
+
Consult https://docs.chef.io/config_rb_metadata.html for more information.
|
677
|
+
|
678
|
+
Called by: #{caller_name} '#{dep_name}', '#{constraint_str}'
|
679
|
+
Called from:
|
680
|
+
#{caller[0...5].map { |line| " " + line }.join("\n")}
|
681
|
+
INVALID
|
682
|
+
raise Exceptions::InvalidVersionConstraint, msg
|
683
|
+
end
|
684
|
+
|
685
|
+
# Verify that the given array is an array of strings
|
686
|
+
#
|
687
|
+
# Raise an exception if the members of the array are not Strings
|
688
|
+
#
|
689
|
+
# === Parameters
|
690
|
+
# arry<Array>:: An array to be validated
|
691
|
+
def validate_string_array(arry)
|
692
|
+
if arry.kind_of?(Array)
|
693
|
+
arry.each do |choice|
|
694
|
+
validate( { choice: choice }, { choice: { kind_of: String } } )
|
695
|
+
end
|
696
|
+
end
|
697
|
+
end
|
698
|
+
|
699
|
+
# Validate the choice of the options hash
|
700
|
+
#
|
701
|
+
# Raise an exception if the members of the array do not match the defaults
|
702
|
+
# === Parameters
|
703
|
+
# opts<Hash>:: The options hash
|
704
|
+
def validate_choice_array(opts)
|
705
|
+
if opts[:choice].kind_of?(Array)
|
706
|
+
case opts[:type]
|
707
|
+
when "string"
|
708
|
+
validator = [ String ]
|
709
|
+
when "array"
|
710
|
+
validator = [ Array ]
|
711
|
+
when "hash"
|
712
|
+
validator = [ Hash ]
|
713
|
+
when "symbol"
|
714
|
+
validator = [ Symbol ]
|
715
|
+
when "boolean"
|
716
|
+
validator = [ TrueClass, FalseClass ]
|
717
|
+
when "numeric"
|
718
|
+
validator = [ Numeric ]
|
719
|
+
end
|
720
|
+
|
721
|
+
opts[:choice].each do |choice|
|
722
|
+
validate( { choice: choice }, { choice: { kind_of: validator } } )
|
723
|
+
end
|
724
|
+
end
|
725
|
+
end
|
726
|
+
|
727
|
+
# For backwards compatibility, remap Boolean values to String
|
728
|
+
# true is mapped to "required"
|
729
|
+
# false is mapped to "optional"
|
730
|
+
#
|
731
|
+
# === Parameters
|
732
|
+
# required_attr<String><Boolean>:: The value of options[:required]
|
733
|
+
#
|
734
|
+
# === Returns
|
735
|
+
# required_attr<String>:: "required", "recommended", or "optional"
|
736
|
+
def remap_required_attribute(value)
|
737
|
+
case value
|
738
|
+
when true
|
739
|
+
value = "required"
|
740
|
+
when false
|
741
|
+
value = "optional"
|
742
|
+
end
|
743
|
+
value
|
744
|
+
end
|
745
|
+
|
746
|
+
def validate_calculated_default_rule(options)
|
747
|
+
calculated_conflict = ((options[:default].is_a?(Array) && !options[:default].empty?) ||
|
748
|
+
(options[:default].is_a?(String) && !options[:default] != "")) &&
|
749
|
+
options[:calculated] == true
|
750
|
+
raise ArgumentError, "Default cannot be specified if calculated is true!" if calculated_conflict
|
751
|
+
end
|
752
|
+
|
753
|
+
def validate_choice_default_rule(options)
|
754
|
+
return if !options[:choice].is_a?(Array) || options[:choice].empty?
|
755
|
+
|
756
|
+
if options[:default].is_a?(String) && options[:default] != ""
|
757
|
+
raise ArgumentError, "Default must be one of your choice values!" if options[:choice].index(options[:default]).nil?
|
758
|
+
end
|
759
|
+
|
760
|
+
if options[:default].is_a?(Array) && !options[:default].empty?
|
761
|
+
options[:default].each do |val|
|
762
|
+
raise ArgumentError, "Default values must be a subset of your choice values!" if options[:choice].index(val).nil?
|
763
|
+
end
|
764
|
+
end
|
765
|
+
end
|
766
|
+
|
767
|
+
# This method translates version constraint strings from
|
768
|
+
# cookbooks with the old format.
|
769
|
+
#
|
770
|
+
# Before we began respecting version constraints, we allowed
|
771
|
+
# multiple constraints to be placed on cookbooks, as well as the
|
772
|
+
# << and >> operators, which are now just < and >. For
|
773
|
+
# specifications with more than one constraint, we return an
|
774
|
+
# empty array (otherwise, we're silently abiding only part of
|
775
|
+
# the contract they have specified to us). If there is only one
|
776
|
+
# constraint, we are replacing the old << and >> with the new <
|
777
|
+
# and >.
|
778
|
+
def handle_deprecated_constraints(specification)
|
779
|
+
specification.inject(Mash.new) do |acc, (cb, constraints)|
|
780
|
+
constraints = Array(constraints)
|
781
|
+
acc[cb] = (constraints.empty? || constraints.size > 1) ? [] : constraints.first.gsub(/>>/, ">").gsub(/<</, "<")
|
782
|
+
acc
|
783
|
+
end
|
784
|
+
end
|
785
|
+
|
786
|
+
end
|
787
|
+
|
788
|
+
#== Chef::Cookbook::MinimalMetadata
|
789
|
+
# MinimalMetadata is a duck type of Cookbook::Metadata, used
|
790
|
+
# internally by Chef Server when determining the optimal set of
|
791
|
+
# cookbooks for a node.
|
792
|
+
#
|
793
|
+
# MinimalMetadata objects typically contain only enough information
|
794
|
+
# to solve the cookbook collection for a run list, but not enough to
|
795
|
+
# generate the proper response
|
796
|
+
class MinimalMetadata < Metadata
|
797
|
+
def initialize(name, params)
|
798
|
+
@name = name
|
799
|
+
from_hash(params)
|
800
|
+
end
|
801
|
+
end
|
802
|
+
|
803
|
+
end
|
804
|
+
end
|