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,687 +1,687 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Copyright:: Copyright 2008-2018, Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "chef/mixin/shell_out"
|
20
|
-
require "chef/mixin/subclass_directive"
|
21
|
-
require "chef/log"
|
22
|
-
require "chef/file_cache"
|
23
|
-
require "chef/platform"
|
24
|
-
require "chef/decorator/lazy_array"
|
25
|
-
require "shellwords"
|
26
|
-
|
27
|
-
class Chef
|
28
|
-
class Provider
|
29
|
-
class Package < Chef::Provider
|
30
|
-
include Chef::Mixin::ShellOut
|
31
|
-
extend Chef::Mixin::SubclassDirective
|
32
|
-
|
33
|
-
# subclasses declare this if they want all their arguments as arrays of packages and names
|
34
|
-
subclass_directive :use_multipackage_api
|
35
|
-
# subclasses declare this if they want sources (filenames) pulled from their package names
|
36
|
-
subclass_directive :use_package_name_for_source
|
37
|
-
# keeps package_names_for_targets and versions_for_targets indexed the same as package_name at
|
38
|
-
# the cost of having the subclass needing to deal with nils
|
39
|
-
subclass_directive :allow_nils
|
40
|
-
|
41
|
-
#
|
42
|
-
# Hook that subclasses use to populate the candidate_version(s)
|
43
|
-
#
|
44
|
-
# @return [Array, String] candidate_version(s) may be a string or array
|
45
|
-
attr_accessor :candidate_version
|
46
|
-
|
47
|
-
def initialize(new_resource, run_context)
|
48
|
-
super
|
49
|
-
@candidate_version = nil
|
50
|
-
end
|
51
|
-
|
52
|
-
def options
|
53
|
-
new_resource.options
|
54
|
-
end
|
55
|
-
|
56
|
-
def check_resource_semantics!
|
57
|
-
# FIXME: this is not universally true and subclasses are needing to override this and no-ops it. It should be turned into
|
58
|
-
# another "subclass_directive" and the apt and yum providers should declare that they need this behavior.
|
59
|
-
if new_resource.package_name.is_a?(Array) && !new_resource.source.nil?
|
60
|
-
raise Chef::Exceptions::InvalidResourceSpecification, "You may not specify both multipackage and source"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def load_current_resource; end
|
65
|
-
|
66
|
-
def define_resource_requirements
|
67
|
-
# XXX: upgrade with a specific version doesn't make a whole lot of sense, but why don't we throw this anyway if it happens?
|
68
|
-
# if not, shouldn't we raise to tell the user to use install instead of upgrade if they want to pin a version?
|
69
|
-
requirements.assert(:install) do |a|
|
70
|
-
a.assertion { candidates_exist_for_all_forced_changes? }
|
71
|
-
a.failure_message(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{forced_packages_missing_candidates.join(', ')}")
|
72
|
-
a.whyrun("Assuming a repository that offers #{forced_packages_missing_candidates.join(', ')} would have been configured")
|
73
|
-
end
|
74
|
-
|
75
|
-
# XXX: Does it make sense to pass in a source with :upgrade? Probably
|
76
|
-
# not, but as with the above comment, we don't yet enforce such a thing,
|
77
|
-
# so we'll just leave things as-is for now.
|
78
|
-
requirements.assert(:upgrade, :install) do |a|
|
79
|
-
a.assertion { candidates_exist_for_all_uninstalled? || new_resource.source }
|
80
|
-
a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(', ')}")
|
81
|
-
a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(', ')} would have been configured")
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
action :install do
|
86
|
-
unless target_version_array.any?
|
87
|
-
logger.trace("#{new_resource} is already installed - nothing to do")
|
88
|
-
return
|
89
|
-
end
|
90
|
-
|
91
|
-
# @todo: move the preseed code out of the base class (and complete the fix for Array of preseeds? ugh...)
|
92
|
-
if new_resource.response_file
|
93
|
-
if preseed_file = get_preseed_file(package_names_for_targets, versions_for_targets)
|
94
|
-
converge_by("preseed package #{package_names_for_targets}") do
|
95
|
-
preseed_package(preseed_file)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
converge_by(install_description) do
|
101
|
-
multipackage_api_adapter(package_names_for_targets, versions_for_targets) do |name, version|
|
102
|
-
install_package(name, version)
|
103
|
-
end
|
104
|
-
logger.info("#{new_resource} installed #{package_names_for_targets} at #{versions_for_targets}")
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def install_description
|
109
|
-
description = []
|
110
|
-
target_version_array.each_with_index do |target_version, i|
|
111
|
-
next if target_version.nil?
|
112
|
-
package_name = package_name_array[i]
|
113
|
-
description << "install version #{target_version} of package #{package_name}"
|
114
|
-
end
|
115
|
-
description
|
116
|
-
end
|
117
|
-
|
118
|
-
private :install_description
|
119
|
-
|
120
|
-
action :upgrade do
|
121
|
-
unless target_version_array.any?
|
122
|
-
logger.trace("#{new_resource} no versions to upgrade - nothing to do")
|
123
|
-
return
|
124
|
-
end
|
125
|
-
|
126
|
-
converge_by(upgrade_description) do
|
127
|
-
multipackage_api_adapter(package_names_for_targets, versions_for_targets) do |name, version|
|
128
|
-
upgrade_package(name, version)
|
129
|
-
end
|
130
|
-
log_allow_downgrade = allow_downgrade ? "(allow_downgrade)" : ""
|
131
|
-
logger.info("#{new_resource} upgraded#{log_allow_downgrade} #{package_names_for_targets} to #{versions_for_targets}")
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
def upgrade_description
|
136
|
-
log_allow_downgrade = allow_downgrade ? "(allow_downgrade)" : ""
|
137
|
-
description = []
|
138
|
-
target_version_array.each_with_index do |target_version, i|
|
139
|
-
next if target_version.nil?
|
140
|
-
package_name = package_name_array[i]
|
141
|
-
candidate_version = candidate_version_array[i]
|
142
|
-
current_version = current_version_array[i] || "uninstalled"
|
143
|
-
description << "upgrade#{log_allow_downgrade} package #{package_name} from #{current_version} to #{candidate_version}"
|
144
|
-
end
|
145
|
-
description
|
146
|
-
end
|
147
|
-
|
148
|
-
private :upgrade_description
|
149
|
-
|
150
|
-
action :remove do
|
151
|
-
if removing_package?
|
152
|
-
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
153
|
-
converge_by("remove #{description}package #{current_resource.package_name}") do
|
154
|
-
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
155
|
-
remove_package(name, version)
|
156
|
-
end
|
157
|
-
logger.info("#{new_resource} removed")
|
158
|
-
end
|
159
|
-
else
|
160
|
-
logger.trace("#{new_resource} package does not exist - nothing to do")
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
def have_any_matching_version?
|
165
|
-
f = []
|
166
|
-
new_version_array.each_with_index do |item, index|
|
167
|
-
f << (item == current_version_array[index])
|
168
|
-
end
|
169
|
-
f.any?
|
170
|
-
end
|
171
|
-
|
172
|
-
def removing_package?
|
173
|
-
if !current_version_array.any?
|
174
|
-
# ! any? means it's all nil's, which means nothing is installed
|
175
|
-
false
|
176
|
-
elsif !new_version_array.any?
|
177
|
-
true # remove any version of all packages
|
178
|
-
elsif have_any_matching_version?
|
179
|
-
true # remove the version we have
|
180
|
-
else
|
181
|
-
false # we don't have the version we want to remove
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
action :purge do
|
186
|
-
if removing_package?
|
187
|
-
description = new_resource.version ? "version #{new_resource.version} of" : ""
|
188
|
-
converge_by("purge #{description} package #{current_resource.package_name}") do
|
189
|
-
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
190
|
-
purge_package(name, version)
|
191
|
-
end
|
192
|
-
logger.info("#{new_resource} purged")
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
action :reconfig do
|
198
|
-
if current_resource.version.nil?
|
199
|
-
logger.trace("#{new_resource} is NOT installed - nothing to do")
|
200
|
-
return
|
201
|
-
end
|
202
|
-
|
203
|
-
unless new_resource.response_file
|
204
|
-
logger.trace("#{new_resource} no response_file provided - nothing to do")
|
205
|
-
return
|
206
|
-
end
|
207
|
-
|
208
|
-
if preseed_file = get_preseed_file(new_resource.package_name, current_resource.version)
|
209
|
-
converge_by("reconfigure package #{new_resource.package_name}") do
|
210
|
-
preseed_package(preseed_file)
|
211
|
-
multipackage_api_adapter(new_resource.package_name, current_resource.version) do |name, version|
|
212
|
-
reconfig_package(name, version)
|
213
|
-
|
214
|
-
end
|
215
|
-
logger.info("#{new_resource} reconfigured")
|
216
|
-
end
|
217
|
-
else
|
218
|
-
logger.trace("#{new_resource} preseeding has not changed - nothing to do")
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
def action_lock
|
223
|
-
packages_locked = if respond_to?(:packages_all_locked?, true)
|
224
|
-
packages_all_locked?(Array(new_resource.package_name), Array(new_resource.version))
|
225
|
-
else
|
226
|
-
package_locked(new_resource.package_name, new_resource.version)
|
227
|
-
end
|
228
|
-
unless packages_locked
|
229
|
-
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
230
|
-
converge_by("lock #{description}package #{current_resource.package_name}") do
|
231
|
-
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
232
|
-
lock_package(name, version)
|
233
|
-
logger.info("#{new_resource} locked")
|
234
|
-
end
|
235
|
-
end
|
236
|
-
else
|
237
|
-
logger.trace("#{new_resource} is already locked")
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
def action_unlock
|
242
|
-
packages_unlocked = if respond_to?(:packages_all_unlocked?, true)
|
243
|
-
packages_all_unlocked?(Array(new_resource.package_name), Array(new_resource.version))
|
244
|
-
else
|
245
|
-
!package_locked(new_resource.package_name, new_resource.version)
|
246
|
-
end
|
247
|
-
unless packages_unlocked
|
248
|
-
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
249
|
-
converge_by("unlock #{description}package #{current_resource.package_name}") do
|
250
|
-
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
251
|
-
unlock_package(name, version)
|
252
|
-
logger.info("#{new_resource} unlocked")
|
253
|
-
end
|
254
|
-
end
|
255
|
-
else
|
256
|
-
logger.trace("#{new_resource} is already unlocked")
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
# for multipackage just implement packages_all_[un]locked? properly and omit implementing this API
|
261
|
-
def package_locked(name, version)
|
262
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} has no way to detect if package is locked"
|
263
|
-
end
|
264
|
-
|
265
|
-
# @todo use composition rather than inheritance
|
266
|
-
|
267
|
-
def multipackage_api_adapter(name, version)
|
268
|
-
if use_multipackage_api?
|
269
|
-
yield [name].flatten, [version].flatten
|
270
|
-
else
|
271
|
-
yield name, version
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
def install_package(name, version)
|
276
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :install"
|
277
|
-
end
|
278
|
-
|
279
|
-
def upgrade_package(name, version)
|
280
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :upgrade"
|
281
|
-
end
|
282
|
-
|
283
|
-
def remove_package(name, version)
|
284
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :remove"
|
285
|
-
end
|
286
|
-
|
287
|
-
def purge_package(name, version)
|
288
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :purge"
|
289
|
-
end
|
290
|
-
|
291
|
-
def preseed_package(file)
|
292
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support pre-seeding package install/upgrade instructions"
|
293
|
-
end
|
294
|
-
|
295
|
-
def reconfig_package(name, version)
|
296
|
-
raise( Chef::Exceptions::UnsupportedAction, "#{self} does not support :reconfig" )
|
297
|
-
end
|
298
|
-
|
299
|
-
def lock_package(name, version)
|
300
|
-
raise( Chef::Exceptions::UnsupportedAction, "#{self} does not support :lock" )
|
301
|
-
end
|
302
|
-
|
303
|
-
def unlock_package(name, version)
|
304
|
-
raise( Chef::Exceptions::UnsupportedAction, "#{self} does not support :unlock" )
|
305
|
-
end
|
306
|
-
|
307
|
-
# used by subclasses. deprecated. use #a_to_s instead.
|
308
|
-
def expand_options(options)
|
309
|
-
# its deprecated but still work to do to deprecate it fully
|
310
|
-
# Chef.deprecated(:package_misc, "expand_options is deprecated, use shell_out instead")
|
311
|
-
if options
|
312
|
-
" #{options.is_a?(Array) ? Shellwords.join(options) : options}"
|
313
|
-
else
|
314
|
-
""
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
|
-
# Check the current_version against either the candidate_version or the new_version
|
319
|
-
#
|
320
|
-
# For some reason the windows provider subclasses this (to implement passing Arrays to
|
321
|
-
# versions for some reason other than multipackage stuff, which is mildly terrifying).
|
322
|
-
#
|
323
|
-
# This MUST have 'equality' semantics -- the exact thing matches the exact thing.
|
324
|
-
#
|
325
|
-
# The name is not just bad, but i find it completely misleading, consider:
|
326
|
-
#
|
327
|
-
# target_version_already_installed?(current_version, new_version)
|
328
|
-
# target_version_already_installed?(current_version, candidate_version)
|
329
|
-
#
|
330
|
-
# Which of those is the 'target_version'? I'd say the new_version and I'm confused when
|
331
|
-
# i see it called with the candidate_version.
|
332
|
-
#
|
333
|
-
# `version_equals?(v1, v2)` would be a better name.
|
334
|
-
#
|
335
|
-
# Note that most likely we need a spaceship operator on versions that subclasses can implement
|
336
|
-
# and we should have `version_compare(v1, v2)` that returns `v1 <=> v2`.
|
337
|
-
|
338
|
-
# This method performs a strict equality check between two strings representing version numbers
|
339
|
-
#
|
340
|
-
# This function will eventually be deprecated in favour of the below version_equals function.
|
341
|
-
|
342
|
-
def target_version_already_installed?(current_version, target_version)
|
343
|
-
version_equals?(current_version, target_version)
|
344
|
-
end
|
345
|
-
|
346
|
-
# Note that most likely we need a spaceship operator on versions that subclasses can implement
|
347
|
-
# and we should have `version_compare(v1, v2)` that returns `v1 <=> v2`.
|
348
|
-
|
349
|
-
# This method performs a strict equality check between two strings representing version numbers
|
350
|
-
#
|
351
|
-
def version_equals?(v1, v2)
|
352
|
-
return false unless v1 && v2
|
353
|
-
v1 == v2
|
354
|
-
end
|
355
|
-
|
356
|
-
# This function compares two version numbers and returns 'spaceship operator' style results, ie:
|
357
|
-
# if v1 < v2 then return -1
|
358
|
-
# if v1 = v2 then return 0
|
359
|
-
# if v1 > v2 then return 1
|
360
|
-
# if v1 and v2 are not comparable then return nil
|
361
|
-
#
|
362
|
-
# By default, this function will use Gem::Version comparison. Subclasses can reimplement this method
|
363
|
-
# for package-management system specific versions.
|
364
|
-
#
|
365
|
-
# (In other words, pull requests to introduce domain specific mangling of versions into this method
|
366
|
-
# will be closed -- that logic must go into the subclass -- we understand that this is far from perfect
|
367
|
-
# but it is a better default than outright buggy things like v1.to_f <=> v2.to_f)
|
368
|
-
#
|
369
|
-
def version_compare(v1, v2)
|
370
|
-
gem_v1 = Gem::Version.new(v1.gsub(/\A\s*(#{Gem::Version::VERSION_PATTERN}).*/, '\1'))
|
371
|
-
gem_v2 = Gem::Version.new(v2.gsub(/\A\s*(#{Gem::Version::VERSION_PATTERN}).*/, '\1'))
|
372
|
-
|
373
|
-
gem_v1 <=> gem_v2
|
374
|
-
end
|
375
|
-
|
376
|
-
# Check the current_version against the new_resource.version, possibly using fuzzy
|
377
|
-
# matching criteria.
|
378
|
-
#
|
379
|
-
# Subclasses MAY override this to provide fuzzy matching on the resource ('>=' and '~>' stuff)
|
380
|
-
#
|
381
|
-
# `version_satisfied_by?(version, constraint)` might be a better name to make this generic.
|
382
|
-
#
|
383
|
-
def version_requirement_satisfied?(current_version, new_version)
|
384
|
-
target_version_already_installed?(current_version, new_version)
|
385
|
-
end
|
386
|
-
|
387
|
-
# @todo: extract apt/dpkg specific preseeding to a helper class
|
388
|
-
def get_preseed_file(name, version)
|
389
|
-
resource = preseed_resource(name, version)
|
390
|
-
resource.run_action(:create)
|
391
|
-
logger.trace("#{new_resource} fetched preseed file to #{resource.path}")
|
392
|
-
|
393
|
-
if resource.updated_by_last_action?
|
394
|
-
resource.path
|
395
|
-
else
|
396
|
-
false
|
397
|
-
end
|
398
|
-
end
|
399
|
-
|
400
|
-
# @todo: extract apt/dpkg specific preseeding to a helper class
|
401
|
-
def preseed_resource(name, version)
|
402
|
-
# A directory in our cache to store this cookbook's preseed files in
|
403
|
-
file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{new_resource.cookbook_name}")
|
404
|
-
# The full path where the preseed file will be stored
|
405
|
-
cache_seed_to = "#{file_cache_dir}/#{name}-#{version}.seed"
|
406
|
-
|
407
|
-
logger.trace("#{new_resource} fetching preseed file to #{cache_seed_to}")
|
408
|
-
|
409
|
-
if template_available?(new_resource.response_file)
|
410
|
-
logger.trace("#{new_resource} fetching preseed file via Template")
|
411
|
-
remote_file = Chef::Resource::Template.new(cache_seed_to, run_context)
|
412
|
-
remote_file.variables(new_resource.response_file_variables)
|
413
|
-
elsif cookbook_file_available?(new_resource.response_file)
|
414
|
-
logger.trace("#{new_resource} fetching preseed file via cookbook_file")
|
415
|
-
remote_file = Chef::Resource::CookbookFile.new(cache_seed_to, run_context)
|
416
|
-
else
|
417
|
-
message = "No template or cookbook file found for response file #{new_resource.response_file}"
|
418
|
-
raise Chef::Exceptions::FileNotFound, message
|
419
|
-
end
|
420
|
-
|
421
|
-
remote_file.cookbook_name = new_resource.cookbook_name
|
422
|
-
remote_file.source(new_resource.response_file)
|
423
|
-
remote_file.backup(false)
|
424
|
-
remote_file
|
425
|
-
end
|
426
|
-
|
427
|
-
# helper method used by subclasses
|
428
|
-
#
|
429
|
-
def as_array(thing)
|
430
|
-
[ thing ].flatten
|
431
|
-
end
|
432
|
-
|
433
|
-
private
|
434
|
-
|
435
|
-
# Returns the package names which need to be modified. If the resource was called with an array of packages
|
436
|
-
# then this will return an array of packages to update (may have 0 or 1 entries). If the resource was called
|
437
|
-
# with a non-array package_name to manage then this will return a string rather than an Array. The output
|
438
|
-
# of this is meant to be fed into subclass interfaces to install/upgrade packages and not all of them are
|
439
|
-
# Array-aware.
|
440
|
-
#
|
441
|
-
# @return [String, Array<String>] package_name(s) to actually update/install
|
442
|
-
def package_names_for_targets
|
443
|
-
package_names_for_targets = []
|
444
|
-
target_version_array.each_with_index do |target_version, i|
|
445
|
-
if !target_version.nil?
|
446
|
-
package_name = package_name_array[i]
|
447
|
-
package_names_for_targets.push(package_name)
|
448
|
-
else
|
449
|
-
package_names_for_targets.push(nil) if allow_nils?
|
450
|
-
end
|
451
|
-
end
|
452
|
-
multipackage? ? package_names_for_targets : package_names_for_targets[0]
|
453
|
-
end
|
454
|
-
|
455
|
-
# Returns the package versions which need to be modified. If the resource was called with an array of packages
|
456
|
-
# then this will return an array of versions to update (may have 0 or 1 entries). If the resource was called
|
457
|
-
# with a non-array package_name to manage then this will return a string rather than an Array. The output
|
458
|
-
# of this is meant to be fed into subclass interfaces to install/upgrade packages and not all of them are
|
459
|
-
# Array-aware.
|
460
|
-
#
|
461
|
-
# @return [String, Array<String>] package version(s) to actually update/install
|
462
|
-
def versions_for_targets
|
463
|
-
versions_for_targets = []
|
464
|
-
target_version_array.each_with_index do |target_version, i|
|
465
|
-
if !target_version.nil?
|
466
|
-
versions_for_targets.push(target_version)
|
467
|
-
else
|
468
|
-
versions_for_targets.push(nil) if allow_nils?
|
469
|
-
end
|
470
|
-
end
|
471
|
-
multipackage? ? versions_for_targets : versions_for_targets[0]
|
472
|
-
end
|
473
|
-
|
474
|
-
# Return an array indexed the same as *_version_array which contains either the target version to install/upgrade to
|
475
|
-
# or else nil if the package is not being modified.
|
476
|
-
#
|
477
|
-
# @return [Array<String,NilClass>] array of package versions which need to be upgraded (nil = not being upgraded)
|
478
|
-
def target_version_array
|
479
|
-
@target_version_array ||=
|
480
|
-
begin
|
481
|
-
target_version_array = []
|
482
|
-
|
483
|
-
each_package do |package_name, new_version, current_version, candidate_version|
|
484
|
-
case action
|
485
|
-
when :upgrade
|
486
|
-
if version_equals?(current_version, new_version)
|
487
|
-
# this is an odd use case
|
488
|
-
logger.trace("#{new_resource} #{package_name} #{new_version} is already installed -- you are equality pinning with an :upgrade action, this may be deprecated in the future")
|
489
|
-
target_version_array.push(nil)
|
490
|
-
elsif version_equals?(current_version, candidate_version)
|
491
|
-
logger.trace("#{new_resource} #{package_name} #{candidate_version} is already installed")
|
492
|
-
target_version_array.push(nil)
|
493
|
-
elsif candidate_version.nil?
|
494
|
-
logger.trace("#{new_resource} #{package_name} has no candidate_version to upgrade to")
|
495
|
-
target_version_array.push(nil)
|
496
|
-
elsif current_version.nil?
|
497
|
-
logger.trace("#{new_resource} has no existing installed version. Installing install #{candidate_version}")
|
498
|
-
target_version_array.push(candidate_version)
|
499
|
-
elsif !allow_downgrade && version_compare(current_version, candidate_version) == 1
|
500
|
-
logger.trace("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{candidate_version}. Skipping...)")
|
501
|
-
target_version_array.push(nil)
|
502
|
-
else
|
503
|
-
logger.trace("#{new_resource} #{package_name} is out of date, will upgrade to #{candidate_version}")
|
504
|
-
target_version_array.push(candidate_version)
|
505
|
-
end
|
506
|
-
|
507
|
-
when :install
|
508
|
-
if new_version
|
509
|
-
if version_requirement_satisfied?(current_version, new_version)
|
510
|
-
logger.trace("#{new_resource} #{package_name} #{current_version} satisifies #{new_version} requirement")
|
511
|
-
target_version_array.push(nil)
|
512
|
-
elsif current_version && !allow_downgrade && version_compare(current_version, new_version) == 1
|
513
|
-
logger.warn("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{new_version}. Skipping...)")
|
514
|
-
target_version_array.push(nil)
|
515
|
-
else
|
516
|
-
logger.trace("#{new_resource} #{package_name} #{current_version} needs updating to #{new_version}")
|
517
|
-
target_version_array.push(new_version)
|
518
|
-
end
|
519
|
-
elsif current_version.nil?
|
520
|
-
logger.trace("#{new_resource} #{package_name} not installed, installing #{candidate_version}")
|
521
|
-
target_version_array.push(candidate_version)
|
522
|
-
else
|
523
|
-
logger.trace("#{new_resource} #{package_name} #{current_version} already installed")
|
524
|
-
target_version_array.push(nil)
|
525
|
-
end
|
526
|
-
|
527
|
-
else
|
528
|
-
# in specs please test the public interface provider.run_action(:install) instead of provider.action_install
|
529
|
-
raise "internal error - target_version_array in package provider does not understand this action"
|
530
|
-
end
|
531
|
-
end
|
532
|
-
|
533
|
-
target_version_array
|
534
|
-
end
|
535
|
-
end
|
536
|
-
|
537
|
-
# Check the list of current_version_array and candidate_version_array. For any of the
|
538
|
-
# packages if both versions are missing (uninstalled and no candidate) this will be an
|
539
|
-
# unsolvable error.
|
540
|
-
#
|
541
|
-
# @return [Boolean] valid candidates exist for all uninstalled packages
|
542
|
-
def candidates_exist_for_all_uninstalled?
|
543
|
-
packages_missing_candidates.empty?
|
544
|
-
end
|
545
|
-
|
546
|
-
# Returns array of all packages which are missing candidate versions.
|
547
|
-
#
|
548
|
-
# @return [Array<String>] names of packages missing candidates
|
549
|
-
def packages_missing_candidates
|
550
|
-
@packages_missing_candidates ||=
|
551
|
-
begin
|
552
|
-
missing = []
|
553
|
-
each_package do |package_name, new_version, current_version, candidate_version|
|
554
|
-
missing.push(package_name) if current_version.nil? && candidate_version.nil?
|
555
|
-
end
|
556
|
-
missing
|
557
|
-
end
|
558
|
-
end
|
559
|
-
|
560
|
-
# This looks for packages which have a new_version and a current_version, and they are
|
561
|
-
# different (a "forced change") and for which there is no candidate. This is an edge
|
562
|
-
# condition that candidates_exist_for_all_uninstalled? does not catch since in this case
|
563
|
-
# it is not uninstalled but must be installed anyway and no version exists.
|
564
|
-
#
|
565
|
-
# @return [Boolean] valid candidates exist for all uninstalled packages
|
566
|
-
def candidates_exist_for_all_forced_changes?
|
567
|
-
forced_packages_missing_candidates.empty?
|
568
|
-
end
|
569
|
-
|
570
|
-
# Returns an array of all forced packages which are missing candidate versions
|
571
|
-
#
|
572
|
-
# @return [Array] names of packages missing candidates
|
573
|
-
def forced_packages_missing_candidates
|
574
|
-
@forced_packages_missing_candidates ||=
|
575
|
-
begin
|
576
|
-
missing = []
|
577
|
-
each_package do |package_name, new_version, current_version, candidate_version|
|
578
|
-
next if new_version.nil? || current_version.nil?
|
579
|
-
if !version_requirement_satisfied?(current_version, new_version) && candidate_version.nil?
|
580
|
-
missing.push(package_name)
|
581
|
-
end
|
582
|
-
end
|
583
|
-
missing
|
584
|
-
end
|
585
|
-
end
|
586
|
-
|
587
|
-
# Helper to iterate over all the indexed *_array's in sync
|
588
|
-
#
|
589
|
-
# @yield [package_name, new_version, current_version, candidate_version] Description of block
|
590
|
-
def each_package
|
591
|
-
package_name_array.each_with_index do |package_name, i|
|
592
|
-
candidate_version = candidate_version_array[i]
|
593
|
-
current_version = current_version_array[i]
|
594
|
-
new_version = new_version_array[i]
|
595
|
-
yield package_name, new_version, current_version, candidate_version
|
596
|
-
end
|
597
|
-
end
|
598
|
-
|
599
|
-
# @return [Boolean] if we're doing a multipackage install or not
|
600
|
-
def multipackage?
|
601
|
-
@multipackage_bool ||= new_resource.package_name.is_a?(Array)
|
602
|
-
end
|
603
|
-
|
604
|
-
# @return [Array] package_name(s) as an array
|
605
|
-
def package_name_array
|
606
|
-
@package_name_array ||= [ new_resource.package_name ].flatten
|
607
|
-
end
|
608
|
-
|
609
|
-
# @return [Array] candidate_version(s) as an array
|
610
|
-
def candidate_version_array
|
611
|
-
# NOTE: even with use_multipackage_api candidate_version may be a bare nil and need wrapping
|
612
|
-
# ( looking at you, dpkg provider... )
|
613
|
-
Chef::Decorator::LazyArray.new { [ candidate_version ].flatten }
|
614
|
-
end
|
615
|
-
|
616
|
-
# @return [Array] current_version(s) as an array
|
617
|
-
def current_version_array
|
618
|
-
@current_version_array ||= [ current_resource.version ].flatten
|
619
|
-
end
|
620
|
-
|
621
|
-
# @return [Array] new_version(s) as an array
|
622
|
-
def new_version_array
|
623
|
-
@new_version_array ||= [ new_resource.version ].flatten.map { |v| v.to_s.empty? ? nil : v }
|
624
|
-
end
|
625
|
-
|
626
|
-
# TIP: less error prone to simply always call resolved_source_array, even if you
|
627
|
-
# don't think that you need to.
|
628
|
-
#
|
629
|
-
# @return [Array] new_resource.source as an array
|
630
|
-
def source_array
|
631
|
-
@source_array ||=
|
632
|
-
begin
|
633
|
-
if new_resource.source.nil?
|
634
|
-
package_name_array.map { nil }
|
635
|
-
else
|
636
|
-
[ new_resource.source ].flatten
|
637
|
-
end
|
638
|
-
end
|
639
|
-
end
|
640
|
-
|
641
|
-
# Helper to handle use_package_name_for_source to convert names into local packages to install.
|
642
|
-
#
|
643
|
-
# @return [Array] Array of sources with package_names converted to sources
|
644
|
-
def resolved_source_array
|
645
|
-
@resolved_source_array ||=
|
646
|
-
begin
|
647
|
-
source_array.each_with_index.map do |source, i|
|
648
|
-
package_name = package_name_array[i]
|
649
|
-
# we require at least one '/' in the package_name to avoid [XXX_]package 'foo' breaking due to a random 'foo' file in cwd
|
650
|
-
if use_package_name_for_source? && source.nil? && package_name.match(/#{::File::SEPARATOR}/) && ::File.exist?(package_name)
|
651
|
-
logger.trace("No package source specified, but #{package_name} exists on filesystem, using #{package_name} as source.")
|
652
|
-
package_name
|
653
|
-
else
|
654
|
-
source
|
655
|
-
end
|
656
|
-
end
|
657
|
-
end
|
658
|
-
end
|
659
|
-
|
660
|
-
# @todo: extract apt/dpkg specific preseeding to a helper class
|
661
|
-
def template_available?(path)
|
662
|
-
run_context.has_template_in_cookbook?(new_resource.cookbook_name, path)
|
663
|
-
end
|
664
|
-
|
665
|
-
# @todo: extract apt/dpkg specific preseeding to a helper class
|
666
|
-
def cookbook_file_available?(path)
|
667
|
-
run_context.has_cookbook_file_in_cookbook?(new_resource.cookbook_name, path)
|
668
|
-
end
|
669
|
-
|
670
|
-
def allow_downgrade
|
671
|
-
if new_resource.respond_to?("allow_downgrade")
|
672
|
-
new_resource.allow_downgrade
|
673
|
-
else
|
674
|
-
true
|
675
|
-
end
|
676
|
-
end
|
677
|
-
|
678
|
-
def shell_out_with_timeout(*command_args)
|
679
|
-
shell_out_compact_timeout(*command_args)
|
680
|
-
end
|
681
|
-
|
682
|
-
def shell_out_with_timeout!(*command_args)
|
683
|
-
shell_out_compact_timeout!(*command_args)
|
684
|
-
end
|
685
|
-
end
|
686
|
-
end
|
687
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
+
# Copyright:: Copyright 2008-2018, Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require "chef/mixin/shell_out"
|
20
|
+
require "chef/mixin/subclass_directive"
|
21
|
+
require "chef/log"
|
22
|
+
require "chef/file_cache"
|
23
|
+
require "chef/platform"
|
24
|
+
require "chef/decorator/lazy_array"
|
25
|
+
require "shellwords"
|
26
|
+
|
27
|
+
class Chef
|
28
|
+
class Provider
|
29
|
+
class Package < Chef::Provider
|
30
|
+
include Chef::Mixin::ShellOut
|
31
|
+
extend Chef::Mixin::SubclassDirective
|
32
|
+
|
33
|
+
# subclasses declare this if they want all their arguments as arrays of packages and names
|
34
|
+
subclass_directive :use_multipackage_api
|
35
|
+
# subclasses declare this if they want sources (filenames) pulled from their package names
|
36
|
+
subclass_directive :use_package_name_for_source
|
37
|
+
# keeps package_names_for_targets and versions_for_targets indexed the same as package_name at
|
38
|
+
# the cost of having the subclass needing to deal with nils
|
39
|
+
subclass_directive :allow_nils
|
40
|
+
|
41
|
+
#
|
42
|
+
# Hook that subclasses use to populate the candidate_version(s)
|
43
|
+
#
|
44
|
+
# @return [Array, String] candidate_version(s) may be a string or array
|
45
|
+
attr_accessor :candidate_version
|
46
|
+
|
47
|
+
def initialize(new_resource, run_context)
|
48
|
+
super
|
49
|
+
@candidate_version = nil
|
50
|
+
end
|
51
|
+
|
52
|
+
def options
|
53
|
+
new_resource.options
|
54
|
+
end
|
55
|
+
|
56
|
+
def check_resource_semantics!
|
57
|
+
# FIXME: this is not universally true and subclasses are needing to override this and no-ops it. It should be turned into
|
58
|
+
# another "subclass_directive" and the apt and yum providers should declare that they need this behavior.
|
59
|
+
if new_resource.package_name.is_a?(Array) && !new_resource.source.nil?
|
60
|
+
raise Chef::Exceptions::InvalidResourceSpecification, "You may not specify both multipackage and source"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def load_current_resource; end
|
65
|
+
|
66
|
+
def define_resource_requirements
|
67
|
+
# XXX: upgrade with a specific version doesn't make a whole lot of sense, but why don't we throw this anyway if it happens?
|
68
|
+
# if not, shouldn't we raise to tell the user to use install instead of upgrade if they want to pin a version?
|
69
|
+
requirements.assert(:install) do |a|
|
70
|
+
a.assertion { candidates_exist_for_all_forced_changes? }
|
71
|
+
a.failure_message(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{forced_packages_missing_candidates.join(', ')}")
|
72
|
+
a.whyrun("Assuming a repository that offers #{forced_packages_missing_candidates.join(', ')} would have been configured")
|
73
|
+
end
|
74
|
+
|
75
|
+
# XXX: Does it make sense to pass in a source with :upgrade? Probably
|
76
|
+
# not, but as with the above comment, we don't yet enforce such a thing,
|
77
|
+
# so we'll just leave things as-is for now.
|
78
|
+
requirements.assert(:upgrade, :install) do |a|
|
79
|
+
a.assertion { candidates_exist_for_all_uninstalled? || new_resource.source }
|
80
|
+
a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(', ')}")
|
81
|
+
a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(', ')} would have been configured")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
action :install do
|
86
|
+
unless target_version_array.any?
|
87
|
+
logger.trace("#{new_resource} is already installed - nothing to do")
|
88
|
+
return
|
89
|
+
end
|
90
|
+
|
91
|
+
# @todo: move the preseed code out of the base class (and complete the fix for Array of preseeds? ugh...)
|
92
|
+
if new_resource.response_file
|
93
|
+
if preseed_file = get_preseed_file(package_names_for_targets, versions_for_targets)
|
94
|
+
converge_by("preseed package #{package_names_for_targets}") do
|
95
|
+
preseed_package(preseed_file)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
converge_by(install_description) do
|
101
|
+
multipackage_api_adapter(package_names_for_targets, versions_for_targets) do |name, version|
|
102
|
+
install_package(name, version)
|
103
|
+
end
|
104
|
+
logger.info("#{new_resource} installed #{package_names_for_targets} at #{versions_for_targets}")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def install_description
|
109
|
+
description = []
|
110
|
+
target_version_array.each_with_index do |target_version, i|
|
111
|
+
next if target_version.nil?
|
112
|
+
package_name = package_name_array[i]
|
113
|
+
description << "install version #{target_version} of package #{package_name}"
|
114
|
+
end
|
115
|
+
description
|
116
|
+
end
|
117
|
+
|
118
|
+
private :install_description
|
119
|
+
|
120
|
+
action :upgrade do
|
121
|
+
unless target_version_array.any?
|
122
|
+
logger.trace("#{new_resource} no versions to upgrade - nothing to do")
|
123
|
+
return
|
124
|
+
end
|
125
|
+
|
126
|
+
converge_by(upgrade_description) do
|
127
|
+
multipackage_api_adapter(package_names_for_targets, versions_for_targets) do |name, version|
|
128
|
+
upgrade_package(name, version)
|
129
|
+
end
|
130
|
+
log_allow_downgrade = allow_downgrade ? "(allow_downgrade)" : ""
|
131
|
+
logger.info("#{new_resource} upgraded#{log_allow_downgrade} #{package_names_for_targets} to #{versions_for_targets}")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def upgrade_description
|
136
|
+
log_allow_downgrade = allow_downgrade ? "(allow_downgrade)" : ""
|
137
|
+
description = []
|
138
|
+
target_version_array.each_with_index do |target_version, i|
|
139
|
+
next if target_version.nil?
|
140
|
+
package_name = package_name_array[i]
|
141
|
+
candidate_version = candidate_version_array[i]
|
142
|
+
current_version = current_version_array[i] || "uninstalled"
|
143
|
+
description << "upgrade#{log_allow_downgrade} package #{package_name} from #{current_version} to #{candidate_version}"
|
144
|
+
end
|
145
|
+
description
|
146
|
+
end
|
147
|
+
|
148
|
+
private :upgrade_description
|
149
|
+
|
150
|
+
action :remove do
|
151
|
+
if removing_package?
|
152
|
+
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
153
|
+
converge_by("remove #{description}package #{current_resource.package_name}") do
|
154
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
155
|
+
remove_package(name, version)
|
156
|
+
end
|
157
|
+
logger.info("#{new_resource} removed")
|
158
|
+
end
|
159
|
+
else
|
160
|
+
logger.trace("#{new_resource} package does not exist - nothing to do")
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def have_any_matching_version?
|
165
|
+
f = []
|
166
|
+
new_version_array.each_with_index do |item, index|
|
167
|
+
f << (item == current_version_array[index])
|
168
|
+
end
|
169
|
+
f.any?
|
170
|
+
end
|
171
|
+
|
172
|
+
def removing_package?
|
173
|
+
if !current_version_array.any?
|
174
|
+
# ! any? means it's all nil's, which means nothing is installed
|
175
|
+
false
|
176
|
+
elsif !new_version_array.any?
|
177
|
+
true # remove any version of all packages
|
178
|
+
elsif have_any_matching_version?
|
179
|
+
true # remove the version we have
|
180
|
+
else
|
181
|
+
false # we don't have the version we want to remove
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
action :purge do
|
186
|
+
if removing_package?
|
187
|
+
description = new_resource.version ? "version #{new_resource.version} of" : ""
|
188
|
+
converge_by("purge #{description} package #{current_resource.package_name}") do
|
189
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
190
|
+
purge_package(name, version)
|
191
|
+
end
|
192
|
+
logger.info("#{new_resource} purged")
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
action :reconfig do
|
198
|
+
if current_resource.version.nil?
|
199
|
+
logger.trace("#{new_resource} is NOT installed - nothing to do")
|
200
|
+
return
|
201
|
+
end
|
202
|
+
|
203
|
+
unless new_resource.response_file
|
204
|
+
logger.trace("#{new_resource} no response_file provided - nothing to do")
|
205
|
+
return
|
206
|
+
end
|
207
|
+
|
208
|
+
if preseed_file = get_preseed_file(new_resource.package_name, current_resource.version)
|
209
|
+
converge_by("reconfigure package #{new_resource.package_name}") do
|
210
|
+
preseed_package(preseed_file)
|
211
|
+
multipackage_api_adapter(new_resource.package_name, current_resource.version) do |name, version|
|
212
|
+
reconfig_package(name, version)
|
213
|
+
|
214
|
+
end
|
215
|
+
logger.info("#{new_resource} reconfigured")
|
216
|
+
end
|
217
|
+
else
|
218
|
+
logger.trace("#{new_resource} preseeding has not changed - nothing to do")
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
def action_lock
|
223
|
+
packages_locked = if respond_to?(:packages_all_locked?, true)
|
224
|
+
packages_all_locked?(Array(new_resource.package_name), Array(new_resource.version))
|
225
|
+
else
|
226
|
+
package_locked(new_resource.package_name, new_resource.version)
|
227
|
+
end
|
228
|
+
unless packages_locked
|
229
|
+
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
230
|
+
converge_by("lock #{description}package #{current_resource.package_name}") do
|
231
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
232
|
+
lock_package(name, version)
|
233
|
+
logger.info("#{new_resource} locked")
|
234
|
+
end
|
235
|
+
end
|
236
|
+
else
|
237
|
+
logger.trace("#{new_resource} is already locked")
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
def action_unlock
|
242
|
+
packages_unlocked = if respond_to?(:packages_all_unlocked?, true)
|
243
|
+
packages_all_unlocked?(Array(new_resource.package_name), Array(new_resource.version))
|
244
|
+
else
|
245
|
+
!package_locked(new_resource.package_name, new_resource.version)
|
246
|
+
end
|
247
|
+
unless packages_unlocked
|
248
|
+
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
249
|
+
converge_by("unlock #{description}package #{current_resource.package_name}") do
|
250
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
251
|
+
unlock_package(name, version)
|
252
|
+
logger.info("#{new_resource} unlocked")
|
253
|
+
end
|
254
|
+
end
|
255
|
+
else
|
256
|
+
logger.trace("#{new_resource} is already unlocked")
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
# for multipackage just implement packages_all_[un]locked? properly and omit implementing this API
|
261
|
+
def package_locked(name, version)
|
262
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} has no way to detect if package is locked"
|
263
|
+
end
|
264
|
+
|
265
|
+
# @todo use composition rather than inheritance
|
266
|
+
|
267
|
+
def multipackage_api_adapter(name, version)
|
268
|
+
if use_multipackage_api?
|
269
|
+
yield [name].flatten, [version].flatten
|
270
|
+
else
|
271
|
+
yield name, version
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
def install_package(name, version)
|
276
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :install"
|
277
|
+
end
|
278
|
+
|
279
|
+
def upgrade_package(name, version)
|
280
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :upgrade"
|
281
|
+
end
|
282
|
+
|
283
|
+
def remove_package(name, version)
|
284
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :remove"
|
285
|
+
end
|
286
|
+
|
287
|
+
def purge_package(name, version)
|
288
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :purge"
|
289
|
+
end
|
290
|
+
|
291
|
+
def preseed_package(file)
|
292
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support pre-seeding package install/upgrade instructions"
|
293
|
+
end
|
294
|
+
|
295
|
+
def reconfig_package(name, version)
|
296
|
+
raise( Chef::Exceptions::UnsupportedAction, "#{self} does not support :reconfig" )
|
297
|
+
end
|
298
|
+
|
299
|
+
def lock_package(name, version)
|
300
|
+
raise( Chef::Exceptions::UnsupportedAction, "#{self} does not support :lock" )
|
301
|
+
end
|
302
|
+
|
303
|
+
def unlock_package(name, version)
|
304
|
+
raise( Chef::Exceptions::UnsupportedAction, "#{self} does not support :unlock" )
|
305
|
+
end
|
306
|
+
|
307
|
+
# used by subclasses. deprecated. use #a_to_s instead.
|
308
|
+
def expand_options(options)
|
309
|
+
# its deprecated but still work to do to deprecate it fully
|
310
|
+
# Chef.deprecated(:package_misc, "expand_options is deprecated, use shell_out instead")
|
311
|
+
if options
|
312
|
+
" #{options.is_a?(Array) ? Shellwords.join(options) : options}"
|
313
|
+
else
|
314
|
+
""
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
# Check the current_version against either the candidate_version or the new_version
|
319
|
+
#
|
320
|
+
# For some reason the windows provider subclasses this (to implement passing Arrays to
|
321
|
+
# versions for some reason other than multipackage stuff, which is mildly terrifying).
|
322
|
+
#
|
323
|
+
# This MUST have 'equality' semantics -- the exact thing matches the exact thing.
|
324
|
+
#
|
325
|
+
# The name is not just bad, but i find it completely misleading, consider:
|
326
|
+
#
|
327
|
+
# target_version_already_installed?(current_version, new_version)
|
328
|
+
# target_version_already_installed?(current_version, candidate_version)
|
329
|
+
#
|
330
|
+
# Which of those is the 'target_version'? I'd say the new_version and I'm confused when
|
331
|
+
# i see it called with the candidate_version.
|
332
|
+
#
|
333
|
+
# `version_equals?(v1, v2)` would be a better name.
|
334
|
+
#
|
335
|
+
# Note that most likely we need a spaceship operator on versions that subclasses can implement
|
336
|
+
# and we should have `version_compare(v1, v2)` that returns `v1 <=> v2`.
|
337
|
+
|
338
|
+
# This method performs a strict equality check between two strings representing version numbers
|
339
|
+
#
|
340
|
+
# This function will eventually be deprecated in favour of the below version_equals function.
|
341
|
+
|
342
|
+
def target_version_already_installed?(current_version, target_version)
|
343
|
+
version_equals?(current_version, target_version)
|
344
|
+
end
|
345
|
+
|
346
|
+
# Note that most likely we need a spaceship operator on versions that subclasses can implement
|
347
|
+
# and we should have `version_compare(v1, v2)` that returns `v1 <=> v2`.
|
348
|
+
|
349
|
+
# This method performs a strict equality check between two strings representing version numbers
|
350
|
+
#
|
351
|
+
def version_equals?(v1, v2)
|
352
|
+
return false unless v1 && v2
|
353
|
+
v1 == v2
|
354
|
+
end
|
355
|
+
|
356
|
+
# This function compares two version numbers and returns 'spaceship operator' style results, ie:
|
357
|
+
# if v1 < v2 then return -1
|
358
|
+
# if v1 = v2 then return 0
|
359
|
+
# if v1 > v2 then return 1
|
360
|
+
# if v1 and v2 are not comparable then return nil
|
361
|
+
#
|
362
|
+
# By default, this function will use Gem::Version comparison. Subclasses can reimplement this method
|
363
|
+
# for package-management system specific versions.
|
364
|
+
#
|
365
|
+
# (In other words, pull requests to introduce domain specific mangling of versions into this method
|
366
|
+
# will be closed -- that logic must go into the subclass -- we understand that this is far from perfect
|
367
|
+
# but it is a better default than outright buggy things like v1.to_f <=> v2.to_f)
|
368
|
+
#
|
369
|
+
def version_compare(v1, v2)
|
370
|
+
gem_v1 = Gem::Version.new(v1.gsub(/\A\s*(#{Gem::Version::VERSION_PATTERN}).*/, '\1'))
|
371
|
+
gem_v2 = Gem::Version.new(v2.gsub(/\A\s*(#{Gem::Version::VERSION_PATTERN}).*/, '\1'))
|
372
|
+
|
373
|
+
gem_v1 <=> gem_v2
|
374
|
+
end
|
375
|
+
|
376
|
+
# Check the current_version against the new_resource.version, possibly using fuzzy
|
377
|
+
# matching criteria.
|
378
|
+
#
|
379
|
+
# Subclasses MAY override this to provide fuzzy matching on the resource ('>=' and '~>' stuff)
|
380
|
+
#
|
381
|
+
# `version_satisfied_by?(version, constraint)` might be a better name to make this generic.
|
382
|
+
#
|
383
|
+
def version_requirement_satisfied?(current_version, new_version)
|
384
|
+
target_version_already_installed?(current_version, new_version)
|
385
|
+
end
|
386
|
+
|
387
|
+
# @todo: extract apt/dpkg specific preseeding to a helper class
|
388
|
+
def get_preseed_file(name, version)
|
389
|
+
resource = preseed_resource(name, version)
|
390
|
+
resource.run_action(:create)
|
391
|
+
logger.trace("#{new_resource} fetched preseed file to #{resource.path}")
|
392
|
+
|
393
|
+
if resource.updated_by_last_action?
|
394
|
+
resource.path
|
395
|
+
else
|
396
|
+
false
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
# @todo: extract apt/dpkg specific preseeding to a helper class
|
401
|
+
def preseed_resource(name, version)
|
402
|
+
# A directory in our cache to store this cookbook's preseed files in
|
403
|
+
file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{new_resource.cookbook_name}")
|
404
|
+
# The full path where the preseed file will be stored
|
405
|
+
cache_seed_to = "#{file_cache_dir}/#{name}-#{version}.seed"
|
406
|
+
|
407
|
+
logger.trace("#{new_resource} fetching preseed file to #{cache_seed_to}")
|
408
|
+
|
409
|
+
if template_available?(new_resource.response_file)
|
410
|
+
logger.trace("#{new_resource} fetching preseed file via Template")
|
411
|
+
remote_file = Chef::Resource::Template.new(cache_seed_to, run_context)
|
412
|
+
remote_file.variables(new_resource.response_file_variables)
|
413
|
+
elsif cookbook_file_available?(new_resource.response_file)
|
414
|
+
logger.trace("#{new_resource} fetching preseed file via cookbook_file")
|
415
|
+
remote_file = Chef::Resource::CookbookFile.new(cache_seed_to, run_context)
|
416
|
+
else
|
417
|
+
message = "No template or cookbook file found for response file #{new_resource.response_file}"
|
418
|
+
raise Chef::Exceptions::FileNotFound, message
|
419
|
+
end
|
420
|
+
|
421
|
+
remote_file.cookbook_name = new_resource.cookbook_name
|
422
|
+
remote_file.source(new_resource.response_file)
|
423
|
+
remote_file.backup(false)
|
424
|
+
remote_file
|
425
|
+
end
|
426
|
+
|
427
|
+
# helper method used by subclasses
|
428
|
+
#
|
429
|
+
def as_array(thing)
|
430
|
+
[ thing ].flatten
|
431
|
+
end
|
432
|
+
|
433
|
+
private
|
434
|
+
|
435
|
+
# Returns the package names which need to be modified. If the resource was called with an array of packages
|
436
|
+
# then this will return an array of packages to update (may have 0 or 1 entries). If the resource was called
|
437
|
+
# with a non-array package_name to manage then this will return a string rather than an Array. The output
|
438
|
+
# of this is meant to be fed into subclass interfaces to install/upgrade packages and not all of them are
|
439
|
+
# Array-aware.
|
440
|
+
#
|
441
|
+
# @return [String, Array<String>] package_name(s) to actually update/install
|
442
|
+
def package_names_for_targets
|
443
|
+
package_names_for_targets = []
|
444
|
+
target_version_array.each_with_index do |target_version, i|
|
445
|
+
if !target_version.nil?
|
446
|
+
package_name = package_name_array[i]
|
447
|
+
package_names_for_targets.push(package_name)
|
448
|
+
else
|
449
|
+
package_names_for_targets.push(nil) if allow_nils?
|
450
|
+
end
|
451
|
+
end
|
452
|
+
multipackage? ? package_names_for_targets : package_names_for_targets[0]
|
453
|
+
end
|
454
|
+
|
455
|
+
# Returns the package versions which need to be modified. If the resource was called with an array of packages
|
456
|
+
# then this will return an array of versions to update (may have 0 or 1 entries). If the resource was called
|
457
|
+
# with a non-array package_name to manage then this will return a string rather than an Array. The output
|
458
|
+
# of this is meant to be fed into subclass interfaces to install/upgrade packages and not all of them are
|
459
|
+
# Array-aware.
|
460
|
+
#
|
461
|
+
# @return [String, Array<String>] package version(s) to actually update/install
|
462
|
+
def versions_for_targets
|
463
|
+
versions_for_targets = []
|
464
|
+
target_version_array.each_with_index do |target_version, i|
|
465
|
+
if !target_version.nil?
|
466
|
+
versions_for_targets.push(target_version)
|
467
|
+
else
|
468
|
+
versions_for_targets.push(nil) if allow_nils?
|
469
|
+
end
|
470
|
+
end
|
471
|
+
multipackage? ? versions_for_targets : versions_for_targets[0]
|
472
|
+
end
|
473
|
+
|
474
|
+
# Return an array indexed the same as *_version_array which contains either the target version to install/upgrade to
|
475
|
+
# or else nil if the package is not being modified.
|
476
|
+
#
|
477
|
+
# @return [Array<String,NilClass>] array of package versions which need to be upgraded (nil = not being upgraded)
|
478
|
+
def target_version_array
|
479
|
+
@target_version_array ||=
|
480
|
+
begin
|
481
|
+
target_version_array = []
|
482
|
+
|
483
|
+
each_package do |package_name, new_version, current_version, candidate_version|
|
484
|
+
case action
|
485
|
+
when :upgrade
|
486
|
+
if version_equals?(current_version, new_version)
|
487
|
+
# this is an odd use case
|
488
|
+
logger.trace("#{new_resource} #{package_name} #{new_version} is already installed -- you are equality pinning with an :upgrade action, this may be deprecated in the future")
|
489
|
+
target_version_array.push(nil)
|
490
|
+
elsif version_equals?(current_version, candidate_version)
|
491
|
+
logger.trace("#{new_resource} #{package_name} #{candidate_version} is already installed")
|
492
|
+
target_version_array.push(nil)
|
493
|
+
elsif candidate_version.nil?
|
494
|
+
logger.trace("#{new_resource} #{package_name} has no candidate_version to upgrade to")
|
495
|
+
target_version_array.push(nil)
|
496
|
+
elsif current_version.nil?
|
497
|
+
logger.trace("#{new_resource} has no existing installed version. Installing install #{candidate_version}")
|
498
|
+
target_version_array.push(candidate_version)
|
499
|
+
elsif !allow_downgrade && version_compare(current_version, candidate_version) == 1
|
500
|
+
logger.trace("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{candidate_version}. Skipping...)")
|
501
|
+
target_version_array.push(nil)
|
502
|
+
else
|
503
|
+
logger.trace("#{new_resource} #{package_name} is out of date, will upgrade to #{candidate_version}")
|
504
|
+
target_version_array.push(candidate_version)
|
505
|
+
end
|
506
|
+
|
507
|
+
when :install
|
508
|
+
if new_version
|
509
|
+
if version_requirement_satisfied?(current_version, new_version)
|
510
|
+
logger.trace("#{new_resource} #{package_name} #{current_version} satisifies #{new_version} requirement")
|
511
|
+
target_version_array.push(nil)
|
512
|
+
elsif current_version && !allow_downgrade && version_compare(current_version, new_version) == 1
|
513
|
+
logger.warn("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{new_version}. Skipping...)")
|
514
|
+
target_version_array.push(nil)
|
515
|
+
else
|
516
|
+
logger.trace("#{new_resource} #{package_name} #{current_version} needs updating to #{new_version}")
|
517
|
+
target_version_array.push(new_version)
|
518
|
+
end
|
519
|
+
elsif current_version.nil?
|
520
|
+
logger.trace("#{new_resource} #{package_name} not installed, installing #{candidate_version}")
|
521
|
+
target_version_array.push(candidate_version)
|
522
|
+
else
|
523
|
+
logger.trace("#{new_resource} #{package_name} #{current_version} already installed")
|
524
|
+
target_version_array.push(nil)
|
525
|
+
end
|
526
|
+
|
527
|
+
else
|
528
|
+
# in specs please test the public interface provider.run_action(:install) instead of provider.action_install
|
529
|
+
raise "internal error - target_version_array in package provider does not understand this action"
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
533
|
+
target_version_array
|
534
|
+
end
|
535
|
+
end
|
536
|
+
|
537
|
+
# Check the list of current_version_array and candidate_version_array. For any of the
|
538
|
+
# packages if both versions are missing (uninstalled and no candidate) this will be an
|
539
|
+
# unsolvable error.
|
540
|
+
#
|
541
|
+
# @return [Boolean] valid candidates exist for all uninstalled packages
|
542
|
+
def candidates_exist_for_all_uninstalled?
|
543
|
+
packages_missing_candidates.empty?
|
544
|
+
end
|
545
|
+
|
546
|
+
# Returns array of all packages which are missing candidate versions.
|
547
|
+
#
|
548
|
+
# @return [Array<String>] names of packages missing candidates
|
549
|
+
def packages_missing_candidates
|
550
|
+
@packages_missing_candidates ||=
|
551
|
+
begin
|
552
|
+
missing = []
|
553
|
+
each_package do |package_name, new_version, current_version, candidate_version|
|
554
|
+
missing.push(package_name) if current_version.nil? && candidate_version.nil?
|
555
|
+
end
|
556
|
+
missing
|
557
|
+
end
|
558
|
+
end
|
559
|
+
|
560
|
+
# This looks for packages which have a new_version and a current_version, and they are
|
561
|
+
# different (a "forced change") and for which there is no candidate. This is an edge
|
562
|
+
# condition that candidates_exist_for_all_uninstalled? does not catch since in this case
|
563
|
+
# it is not uninstalled but must be installed anyway and no version exists.
|
564
|
+
#
|
565
|
+
# @return [Boolean] valid candidates exist for all uninstalled packages
|
566
|
+
def candidates_exist_for_all_forced_changes?
|
567
|
+
forced_packages_missing_candidates.empty?
|
568
|
+
end
|
569
|
+
|
570
|
+
# Returns an array of all forced packages which are missing candidate versions
|
571
|
+
#
|
572
|
+
# @return [Array] names of packages missing candidates
|
573
|
+
def forced_packages_missing_candidates
|
574
|
+
@forced_packages_missing_candidates ||=
|
575
|
+
begin
|
576
|
+
missing = []
|
577
|
+
each_package do |package_name, new_version, current_version, candidate_version|
|
578
|
+
next if new_version.nil? || current_version.nil?
|
579
|
+
if !version_requirement_satisfied?(current_version, new_version) && candidate_version.nil?
|
580
|
+
missing.push(package_name)
|
581
|
+
end
|
582
|
+
end
|
583
|
+
missing
|
584
|
+
end
|
585
|
+
end
|
586
|
+
|
587
|
+
# Helper to iterate over all the indexed *_array's in sync
|
588
|
+
#
|
589
|
+
# @yield [package_name, new_version, current_version, candidate_version] Description of block
|
590
|
+
def each_package
|
591
|
+
package_name_array.each_with_index do |package_name, i|
|
592
|
+
candidate_version = candidate_version_array[i]
|
593
|
+
current_version = current_version_array[i]
|
594
|
+
new_version = new_version_array[i]
|
595
|
+
yield package_name, new_version, current_version, candidate_version
|
596
|
+
end
|
597
|
+
end
|
598
|
+
|
599
|
+
# @return [Boolean] if we're doing a multipackage install or not
|
600
|
+
def multipackage?
|
601
|
+
@multipackage_bool ||= new_resource.package_name.is_a?(Array)
|
602
|
+
end
|
603
|
+
|
604
|
+
# @return [Array] package_name(s) as an array
|
605
|
+
def package_name_array
|
606
|
+
@package_name_array ||= [ new_resource.package_name ].flatten
|
607
|
+
end
|
608
|
+
|
609
|
+
# @return [Array] candidate_version(s) as an array
|
610
|
+
def candidate_version_array
|
611
|
+
# NOTE: even with use_multipackage_api candidate_version may be a bare nil and need wrapping
|
612
|
+
# ( looking at you, dpkg provider... )
|
613
|
+
Chef::Decorator::LazyArray.new { [ candidate_version ].flatten }
|
614
|
+
end
|
615
|
+
|
616
|
+
# @return [Array] current_version(s) as an array
|
617
|
+
def current_version_array
|
618
|
+
@current_version_array ||= [ current_resource.version ].flatten
|
619
|
+
end
|
620
|
+
|
621
|
+
# @return [Array] new_version(s) as an array
|
622
|
+
def new_version_array
|
623
|
+
@new_version_array ||= [ new_resource.version ].flatten.map { |v| v.to_s.empty? ? nil : v }
|
624
|
+
end
|
625
|
+
|
626
|
+
# TIP: less error prone to simply always call resolved_source_array, even if you
|
627
|
+
# don't think that you need to.
|
628
|
+
#
|
629
|
+
# @return [Array] new_resource.source as an array
|
630
|
+
def source_array
|
631
|
+
@source_array ||=
|
632
|
+
begin
|
633
|
+
if new_resource.source.nil?
|
634
|
+
package_name_array.map { nil }
|
635
|
+
else
|
636
|
+
[ new_resource.source ].flatten
|
637
|
+
end
|
638
|
+
end
|
639
|
+
end
|
640
|
+
|
641
|
+
# Helper to handle use_package_name_for_source to convert names into local packages to install.
|
642
|
+
#
|
643
|
+
# @return [Array] Array of sources with package_names converted to sources
|
644
|
+
def resolved_source_array
|
645
|
+
@resolved_source_array ||=
|
646
|
+
begin
|
647
|
+
source_array.each_with_index.map do |source, i|
|
648
|
+
package_name = package_name_array[i]
|
649
|
+
# we require at least one '/' in the package_name to avoid [XXX_]package 'foo' breaking due to a random 'foo' file in cwd
|
650
|
+
if use_package_name_for_source? && source.nil? && package_name.match(/#{::File::SEPARATOR}/) && ::File.exist?(package_name)
|
651
|
+
logger.trace("No package source specified, but #{package_name} exists on filesystem, using #{package_name} as source.")
|
652
|
+
package_name
|
653
|
+
else
|
654
|
+
source
|
655
|
+
end
|
656
|
+
end
|
657
|
+
end
|
658
|
+
end
|
659
|
+
|
660
|
+
# @todo: extract apt/dpkg specific preseeding to a helper class
|
661
|
+
def template_available?(path)
|
662
|
+
run_context.has_template_in_cookbook?(new_resource.cookbook_name, path)
|
663
|
+
end
|
664
|
+
|
665
|
+
# @todo: extract apt/dpkg specific preseeding to a helper class
|
666
|
+
def cookbook_file_available?(path)
|
667
|
+
run_context.has_cookbook_file_in_cookbook?(new_resource.cookbook_name, path)
|
668
|
+
end
|
669
|
+
|
670
|
+
def allow_downgrade
|
671
|
+
if new_resource.respond_to?("allow_downgrade")
|
672
|
+
new_resource.allow_downgrade
|
673
|
+
else
|
674
|
+
true
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
def shell_out_with_timeout(*command_args)
|
679
|
+
shell_out_compact_timeout(*command_args)
|
680
|
+
end
|
681
|
+
|
682
|
+
def shell_out_with_timeout!(*command_args)
|
683
|
+
shell_out_compact_timeout!(*command_args)
|
684
|
+
end
|
685
|
+
end
|
686
|
+
end
|
687
|
+
end
|