chef 16.18.0-universal-mingw32 → 17.0.242-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 +9 -13
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +6 -8
- data/lib/chef/action_collection.rb +1 -1
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application.rb +1 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/client.rb +5 -5
- data/lib/chef/compliance/default_attributes.rb +4 -3
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/reporter/automate.rb +17 -7
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +65 -27
- data/lib/chef/cookbook/gem_installer.rb +1 -5
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +0 -1
- data/lib/chef/cookbook_version.rb +4 -26
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +6 -12
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/dsl/reboot_pending.rb +1 -2
- data/lib/chef/exceptions.rb +0 -3
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/formatters/error_mapper.rb +2 -2
- data/lib/chef/group.rb +75 -0
- data/lib/chef/http.rb +5 -5
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -24
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
- data/lib/chef/node.rb +19 -20
- data/lib/chef/org.rb +3 -2
- data/lib/chef/policy_builder/policyfile.rb +0 -5
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/git.rb +5 -7
- data/lib/chef/provider/group/dscl.rb +1 -1
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/mount.rb +5 -5
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +0 -5
- data/lib/chef/provider/package/rubygems.rb +9 -15
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum/yum_helper.py +1 -1
- data/lib/chef/provider/package.rb +17 -21
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +12 -12
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/subversion.rb +10 -12
- data/lib/chef/provider/systemd_unit.rb +36 -10
- data/lib/chef/provider/template/content.rb +3 -7
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +17 -20
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +1 -1
- data/lib/chef/provider/user.rb +2 -2
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +3 -2
- data/lib/chef/resource/archive_file.rb +8 -9
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +2 -2
- data/lib/chef/resource/chef_client_cron.rb +4 -4
- data/lib/chef/resource/chef_client_launchd.rb +3 -3
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +3 -8
- data/lib/chef/resource/chocolatey_config.rb +2 -6
- data/lib/chef/resource/chocolatey_feature.rb +2 -6
- data/lib/chef/resource/chocolatey_source.rb +4 -10
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +6 -1
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/group.rb +2 -2
- data/lib/chef/resource/homebrew_cask.rb +5 -15
- data/lib/chef/resource/homebrew_tap.rb +2 -6
- data/lib/chef/resource/hostname.rb +21 -17
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/kernel_module.rb +6 -17
- data/lib/chef/resource/locale.rb +2 -3
- data/lib/chef/resource/lwrp_base.rb +4 -0
- data/lib/chef/resource/macos_userdefaults.rb +10 -14
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +3 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
- data/lib/chef/resource/plist.rb +7 -7
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rhsm_errata.rb +16 -1
- data/lib/chef/resource/rhsm_errata_level.rb +10 -1
- data/lib/chef/resource/rhsm_register.rb +12 -6
- data/lib/chef/resource/rhsm_repo.rb +2 -6
- data/lib/chef/resource/rhsm_subscription.rb +7 -11
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/sudo.rb +6 -6
- data/lib/chef/resource/support/client.erb +2 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +3 -3
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -3
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -3
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +1 -1
- data/lib/chef/resource/windows_auto_run.rb +2 -5
- data/lib/chef/resource/windows_certificate.rb +207 -73
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +5 -4
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +2 -6
- data/lib/chef/resource/windows_feature_powershell.rb +3 -3
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +2 -5
- data/lib/chef/resource/windows_font.rb +2 -4
- data/lib/chef/resource/windows_pagefile.rb +2 -6
- data/lib/chef/resource/windows_path.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +4 -4
- data/lib/chef/resource/windows_printer_port.rb +6 -6
- data/lib/chef/resource/windows_security_policy.rb +9 -12
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +17 -5
- data/lib/chef/resource/windows_uac.rb +2 -4
- data/lib/chef/resource/windows_user_privilege.rb +5 -5
- data/lib/chef/resource/windows_workgroup.rb +1 -2
- data/lib/chef/resource.rb +1 -1
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resources.rb +0 -1
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +1 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -9
- data/lib/chef/win32/registry.rb +4 -2
- data/lib/chef/win32/version.rb +1 -2
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/functional/dsl/registry_helper_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/group_spec.rb +1 -5
- data/spec/functional/resource/link_spec.rb +0 -8
- data/spec/functional/resource/registry_spec.rb +8 -8
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +92 -35
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +5 -2
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +10 -13
- data/spec/support/chef_helpers.rb +0 -16
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +1 -8
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/client_spec.rb +4 -4
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
- data/spec/unit/compliance/runner_spec.rb +30 -4
- data/spec/unit/cookbook_version_spec.rb +0 -52
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/data_collector_spec.rb +2 -71
- data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
- data/spec/unit/dsl/registry_helper_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/mixin/powershell_out_spec.rb +2 -2
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/cron_spec.rb +1 -1
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/powershell_spec.rb +12 -74
- data/spec/unit/provider/package/rubygems_spec.rb +18 -30
- data/spec/unit/provider/service/arch_service_spec.rb +1 -0
- data/spec/unit/provider/service/debian_service_spec.rb +1 -0
- data/spec/unit/provider/service/macosx_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
- data/spec/unit/provider/service/windows_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/zypper_repository_spec.rb +2 -2
- data/spec/unit/provider_spec.rb +0 -8
- data/spec/unit/resource/archive_file_spec.rb +1 -13
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
- data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
- data/spec/unit/resource/mount_spec.rb +0 -10
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/user_ulimit_spec.rb +1 -14
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +2 -7
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/tasks/rspec.rb +15 -7
- metadata +19 -382
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/client_show.rb +0 -48
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_list.rb +0 -42
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_list.rb +0 -43
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/recipe_list.rb +0 -32
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/resource/user/dscl_user.rb +0 -35
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
- data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
- data/spec/data/knife_subcommand/test_yourself.rb +0 -21
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1616
- data/spec/support/shared/functional/knife.rb +0 -37
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/support/shared/integration/knife_support.rb +0 -192
- data/spec/support/shared/unit/knife_shared.rb +0 -39
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
data/lib/chef/node/attribute.rb
CHANGED
@@ -158,8 +158,10 @@ class Chef
|
|
158
158
|
}.freeze
|
159
159
|
|
160
160
|
ENUM_METHODS.each do |delegated_method|
|
161
|
-
|
162
|
-
|
161
|
+
if Hash.public_method_defined?(delegated_method)
|
162
|
+
define_method(delegated_method) do |*args, &block|
|
163
|
+
merged_attributes.send(delegated_method, *args, &block)
|
164
|
+
end
|
163
165
|
end
|
164
166
|
end
|
165
167
|
|
@@ -450,34 +452,17 @@ class Chef
|
|
450
452
|
# method-style access to attributes (has to come after the prepended ImmutablizeHash)
|
451
453
|
|
452
454
|
def read(*path)
|
453
|
-
|
454
|
-
Chef::Log.warn "Calling node.read() without any path argument is very slow, probably a bug, and should be avoided"
|
455
|
-
merged_attributes.read(*path) # re-merges everything, slow edge case
|
456
|
-
else
|
457
|
-
self[path[0]] unless path[0].nil? # force deep_merge_cache key construction if necessary
|
458
|
-
deep_merge_cache.read(*path)
|
459
|
-
end
|
455
|
+
merged_attributes.read(*path)
|
460
456
|
end
|
461
457
|
|
462
458
|
alias :dig :read
|
463
459
|
|
464
460
|
def read!(*path)
|
465
|
-
|
466
|
-
Chef::Log.warn "Calling node.read!() without any path argument is very slow, probably a bug, and should be avoided"
|
467
|
-
merged_attributes.read!(*path) # re-merges everything, slow edge case
|
468
|
-
else
|
469
|
-
self[path[0]] unless path[0].nil? # force deep_merge_cache key construction if necessary
|
470
|
-
deep_merge_cache.read!(*path)
|
471
|
-
end
|
461
|
+
merged_attributes.read!(*path)
|
472
462
|
end
|
473
463
|
|
474
464
|
def exist?(*path)
|
475
|
-
|
476
|
-
true
|
477
|
-
else
|
478
|
-
self[path[0]] unless path[0].nil? # force deep_merge_cache key construction if necessary
|
479
|
-
deep_merge_cache.exist?(*path)
|
480
|
-
end
|
465
|
+
merged_attributes.exist?(*path)
|
481
466
|
end
|
482
467
|
|
483
468
|
def write(level, *args, &block)
|
@@ -613,7 +598,7 @@ class Chef
|
|
613
598
|
merge_with.each do |key, merge_with_value|
|
614
599
|
value =
|
615
600
|
if merge_onto.key?(key)
|
616
|
-
deep_merge!(safe_dup(merge_onto
|
601
|
+
deep_merge!(safe_dup(merge_onto.internal_get(key)), merge_with_value)
|
617
602
|
else
|
618
603
|
merge_with_value
|
619
604
|
end
|
@@ -649,7 +634,7 @@ class Chef
|
|
649
634
|
merge_with.each do |key, merge_with_value|
|
650
635
|
value =
|
651
636
|
if merge_onto.key?(key)
|
652
|
-
hash_only_merge!(safe_dup(merge_onto
|
637
|
+
hash_only_merge!(safe_dup(merge_onto.internal_get(key)), merge_with_value)
|
653
638
|
else
|
654
639
|
merge_with_value
|
655
640
|
end
|
@@ -19,6 +19,7 @@ require_relative "common_api"
|
|
19
19
|
require_relative "mixin/state_tracking"
|
20
20
|
require_relative "mixin/immutablize_array"
|
21
21
|
require_relative "mixin/immutablize_hash"
|
22
|
+
require_relative "../delayed_evaluator"
|
22
23
|
|
23
24
|
class Chef
|
24
25
|
class Node
|
@@ -109,6 +110,12 @@ class Chef
|
|
109
110
|
key
|
110
111
|
end
|
111
112
|
|
113
|
+
def [](*args)
|
114
|
+
value = super
|
115
|
+
value = value.call while value.is_a?(::Chef::DelayedEvaluator)
|
116
|
+
value
|
117
|
+
end
|
118
|
+
|
112
119
|
prepend Chef::Node::Mixin::StateTracking
|
113
120
|
prepend Chef::Node::Mixin::ImmutablizeArray
|
114
121
|
end
|
@@ -187,6 +194,12 @@ class Chef
|
|
187
194
|
e
|
188
195
|
end
|
189
196
|
|
197
|
+
def [](*args)
|
198
|
+
value = super
|
199
|
+
value = value.call while value.is_a?(::Chef::DelayedEvaluator)
|
200
|
+
value
|
201
|
+
end
|
202
|
+
|
190
203
|
prepend Chef::Node::Mixin::StateTracking
|
191
204
|
prepend Chef::Node::Mixin::ImmutablizeHash
|
192
205
|
end
|
@@ -15,6 +15,8 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
17
|
|
18
|
+
require_relative "../../delayed_evaluator"
|
19
|
+
|
18
20
|
class Chef
|
19
21
|
class Node
|
20
22
|
module Mixin
|
@@ -28,7 +30,7 @@ class Chef
|
|
28
30
|
@merged_attributes = nil
|
29
31
|
@combined_override = nil
|
30
32
|
@combined_default = nil
|
31
|
-
@deep_merge_cache =
|
33
|
+
@deep_merge_cache = {}
|
32
34
|
end
|
33
35
|
|
34
36
|
# Invalidate a key in the deep_merge_cache. If called with nil, or no arg, this will invalidate
|
@@ -37,22 +39,24 @@ class Chef
|
|
37
39
|
# must invalidate the entire cache and re-deep-merge the entire node object.
|
38
40
|
def reset_cache(path = nil)
|
39
41
|
if path.nil?
|
40
|
-
deep_merge_cache.
|
42
|
+
deep_merge_cache.clear
|
41
43
|
else
|
42
|
-
deep_merge_cache.
|
44
|
+
deep_merge_cache.delete(path.to_s)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
46
48
|
alias :reset :reset_cache
|
47
49
|
|
48
50
|
def [](key)
|
49
|
-
if deep_merge_cache.key?(key.to_s)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
ret = if deep_merge_cache.key?(key.to_s)
|
52
|
+
# return the cache of the deep merged values by top-level key
|
53
|
+
deep_merge_cache[key.to_s]
|
54
|
+
else
|
55
|
+
# save all the work of computing node[key]
|
56
|
+
deep_merge_cache[key.to_s] = merged_attributes(key)
|
57
|
+
end
|
58
|
+
ret = ret.call while ret.is_a?(::Chef::DelayedEvaluator)
|
59
|
+
ret
|
56
60
|
end
|
57
61
|
|
58
62
|
end
|
data/lib/chef/node.rb
CHANGED
@@ -687,25 +687,6 @@ class Chef
|
|
687
687
|
name <=> other.name
|
688
688
|
end
|
689
689
|
|
690
|
-
# Returns hash of node data with attributes based on whitelist/blacklist rules.
|
691
|
-
def data_for_save
|
692
|
-
data = for_json
|
693
|
-
%w{automatic default normal override}.each do |level|
|
694
|
-
allowlist = allowlist_or_whitelist_config(level)
|
695
|
-
unless allowlist.nil? # nil => save everything
|
696
|
-
logger.info("Allowing #{level} node attributes for save.")
|
697
|
-
data[level] = Chef::AttributeAllowlist.filter(data[level], allowlist)
|
698
|
-
end
|
699
|
-
|
700
|
-
blocklist = blocklist_or_blacklist_config(level)
|
701
|
-
unless blocklist.nil? # nil => remove nothing
|
702
|
-
logger.info("Blocking #{level} node attributes for save")
|
703
|
-
data[level] = Chef::AttributeBlocklist.filter(data[level], blocklist)
|
704
|
-
end
|
705
|
-
end
|
706
|
-
data
|
707
|
-
end
|
708
|
-
|
709
690
|
private
|
710
691
|
|
711
692
|
def save_without_policyfile_attrs
|
@@ -731,7 +712,7 @@ class Chef
|
|
731
712
|
# @param [String] level the attribute level
|
732
713
|
def allowlist_or_whitelist_config(level)
|
733
714
|
if Chef::Config["#{level}_attribute_whitelist".to_sym]
|
734
|
-
Chef.deprecated(:
|
715
|
+
Chef.deprecated(:attribute_blacklist_configuration, "Attribute whitelist configurations have been deprecated. Use the allowed_LEVEL_attribute configs instead")
|
735
716
|
Chef::Config["#{level}_attribute_whitelist".to_sym]
|
736
717
|
else
|
737
718
|
Chef::Config["allowed_#{level}_attributes".to_sym]
|
@@ -751,6 +732,24 @@ class Chef
|
|
751
732
|
end
|
752
733
|
end
|
753
734
|
|
735
|
+
def data_for_save
|
736
|
+
data = for_json
|
737
|
+
%w{automatic default normal override}.each do |level|
|
738
|
+
allowlist = allowlist_or_whitelist_config(level)
|
739
|
+
unless allowlist.nil? # nil => save everything
|
740
|
+
logger.info("Allowing #{level} node attributes for save.")
|
741
|
+
data[level] = Chef::AttributeAllowlist.filter(data[level], allowlist)
|
742
|
+
end
|
743
|
+
|
744
|
+
blocklist = blocklist_or_blacklist_config(level)
|
745
|
+
unless blocklist.nil? # nil => remove nothing
|
746
|
+
logger.info("Blocking #{level} node attributes for save")
|
747
|
+
data[level] = Chef::AttributeBlocklist.filter(data[level], blocklist)
|
748
|
+
end
|
749
|
+
end
|
750
|
+
data
|
751
|
+
end
|
752
|
+
|
754
753
|
# Returns a UUID that uniquely identifies this node for reporting reasons.
|
755
754
|
#
|
756
755
|
# The node is read in from disk if it exists, or it's generated if it does
|
data/lib/chef/org.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Steven Danna (steve@chef.io)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc
|
4
4
|
# License:: Apache License, Version 2.0
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -19,9 +19,10 @@
|
|
19
19
|
require_relative "json_compat"
|
20
20
|
require_relative "mixin/params_validate"
|
21
21
|
require_relative "server_api"
|
22
|
+
require_relative "group"
|
22
23
|
|
23
24
|
class Chef
|
24
|
-
class Org
|
25
|
+
class Org < Group
|
25
26
|
|
26
27
|
include Chef::Mixin::ParamsValidate
|
27
28
|
|
@@ -148,11 +148,6 @@ class Chef
|
|
148
148
|
# consume_external_attrs may add items to the run_list. Save the
|
149
149
|
# expanded run_list, which we will pass to the server later to
|
150
150
|
# determine which versions of cookbooks to use.
|
151
|
-
|
152
|
-
unless Chef::Config[:policy_document_native_api]
|
153
|
-
Chef.deprecated(:policyfile_compat_mode, "The chef-server 11 policyfile compat mode is deprecated, please set policy_document_native_api to true in your config")
|
154
|
-
end
|
155
|
-
|
156
151
|
node.reset_defaults_and_overrides
|
157
152
|
|
158
153
|
node.consume_external_attrs(ohai_data, json_attribs)
|
data/lib/chef/property.rb
CHANGED
@@ -412,6 +412,7 @@ class Chef
|
|
412
412
|
# Otherwise, we have to validate it now.
|
413
413
|
value = input_to_stored_value(resource, default, is_default: true)
|
414
414
|
end
|
415
|
+
value = deep_dup(value)
|
415
416
|
value = stored_value_to_output(resource, value)
|
416
417
|
|
417
418
|
# If the value is mutable (non-frozen), we set it on the instance
|
@@ -748,5 +749,22 @@ class Chef
|
|
748
749
|
|
749
750
|
result
|
750
751
|
end
|
752
|
+
|
753
|
+
# recursively dup the value
|
754
|
+
def deep_dup(value)
|
755
|
+
return value if value.is_a?(DelayedEvaluator)
|
756
|
+
|
757
|
+
visitor = lambda do |obj|
|
758
|
+
obj = obj.dup rescue obj
|
759
|
+
case obj
|
760
|
+
when Hash
|
761
|
+
obj.each { |k, v| obj[k] = visitor.call(v) }
|
762
|
+
when Array
|
763
|
+
obj.each_with_index { |v, i| obj[i] = visitor.call(v) }
|
764
|
+
end
|
765
|
+
obj
|
766
|
+
end
|
767
|
+
visitor.call(value)
|
768
|
+
end
|
751
769
|
end
|
752
770
|
end
|
data/lib/chef/provider/cron.rb
CHANGED
@@ -101,7 +101,7 @@ class Chef
|
|
101
101
|
|
102
102
|
if @cron_exists
|
103
103
|
unless cron_different?
|
104
|
-
logger.
|
104
|
+
logger.debug("#{new_resource}: Skipping existing cron entry")
|
105
105
|
return
|
106
106
|
end
|
107
107
|
read_crontab.each_line do |line|
|
@@ -27,7 +27,7 @@ class Chef
|
|
27
27
|
|
28
28
|
provides :execute, target_mode: true
|
29
29
|
|
30
|
-
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input
|
30
|
+
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input, :login
|
31
31
|
|
32
32
|
def load_current_resource
|
33
33
|
current_resource = Chef::Resource::Execute.new(new_resource.name)
|
@@ -92,6 +92,7 @@ class Chef
|
|
92
92
|
opts[:cwd] = cwd if cwd
|
93
93
|
opts[:umask] = umask if umask
|
94
94
|
opts[:input] = input if input
|
95
|
+
opts[:login] = login if login
|
95
96
|
opts[:default_env] = default_env
|
96
97
|
opts[:log_level] = :info
|
97
98
|
opts[:log_tag] = new_resource.to_s
|
data/lib/chef/provider/file.rb
CHANGED
@@ -152,7 +152,7 @@ class Chef
|
|
152
152
|
unless ::File.exist?(new_resource.path)
|
153
153
|
action_create
|
154
154
|
else
|
155
|
-
logger.
|
155
|
+
logger.debug("#{new_resource} exists at #{new_resource.path} taking no action.")
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
data/lib/chef/provider/git.rb
CHANGED
@@ -94,7 +94,7 @@ class Chef
|
|
94
94
|
enable_submodules
|
95
95
|
add_remotes
|
96
96
|
else
|
97
|
-
logger.
|
97
|
+
logger.debug "#{new_resource} checkout destination #{cwd} already exists or is a non-empty directory"
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -281,12 +281,10 @@ class Chef
|
|
281
281
|
|
282
282
|
def target_revision
|
283
283
|
@target_revision ||=
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
@target_revision = remote_resolve_reference
|
289
|
-
end
|
284
|
+
if sha_hash?(new_resource.revision)
|
285
|
+
@target_revision = new_resource.revision
|
286
|
+
else
|
287
|
+
@target_revision = remote_resolve_reference
|
290
288
|
end
|
291
289
|
end
|
292
290
|
|
@@ -158,7 +158,7 @@ class Chef
|
|
158
158
|
if new_resource.group_name && (current_resource.group_name != new_resource.group_name)
|
159
159
|
dscl_create_group
|
160
160
|
end
|
161
|
-
if new_resource.gid && (current_resource.gid != new_resource.gid
|
161
|
+
if new_resource.gid && (current_resource.gid != new_resource.gid)
|
162
162
|
set_gid
|
163
163
|
end
|
164
164
|
if new_resource.members || new_resource.excluded_members
|
@@ -67,7 +67,7 @@ class Chef
|
|
67
67
|
members_to_be_added << member unless current_resource.members.include?(member)
|
68
68
|
end
|
69
69
|
members_to_be_added.each do |member|
|
70
|
-
logger.
|
70
|
+
logger.debug("#{new_resource} appending member #{member} to group #{new_resource.group_name}")
|
71
71
|
add_member(member)
|
72
72
|
end
|
73
73
|
end
|
@@ -79,13 +79,13 @@ class Chef
|
|
79
79
|
end
|
80
80
|
|
81
81
|
members_to_be_removed.each do |member|
|
82
|
-
logger.
|
82
|
+
logger.debug("#{new_resource} removing member #{member} from group #{new_resource.group_name}")
|
83
83
|
remove_member(member)
|
84
84
|
end
|
85
85
|
end
|
86
86
|
else
|
87
87
|
members_description = new_resource.members.empty? ? "none" : new_resource.members.join(", ")
|
88
|
-
logger.
|
88
|
+
logger.debug("#{new_resource} setting group members to: #{members_description}")
|
89
89
|
set_members(new_resource.members)
|
90
90
|
end
|
91
91
|
end
|
@@ -66,13 +66,13 @@ class Chef
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
logger.
|
69
|
+
logger.debug("#{new_resource} not changing group members, the group has no members to add") if members_to_be_added.empty?
|
70
70
|
|
71
71
|
add_group_members(members_to_be_added)
|
72
72
|
else
|
73
73
|
# We are resetting the members of a group so use the same trick
|
74
74
|
reset_group_membership
|
75
|
-
logger.
|
75
|
+
logger.debug("#{new_resource} setting group members to: none") if new_resource.members.empty?
|
76
76
|
add_group_members(new_resource.members)
|
77
77
|
end
|
78
78
|
end
|
@@ -84,7 +84,7 @@ class Chef
|
|
84
84
|
|
85
85
|
# Adds a list of usernames to the group using `user mod`
|
86
86
|
def add_group_members(members)
|
87
|
-
logger.
|
87
|
+
logger.debug("#{new_resource} adding members #{members.join(", ")}") unless members.empty?
|
88
88
|
members.each do |user|
|
89
89
|
shell_out!("user", "mod", "-G", new_resource.group_name, user)
|
90
90
|
end
|
@@ -44,7 +44,7 @@ class Chef
|
|
44
44
|
# new or existing group. Because pw groupadd does not support the -m
|
45
45
|
# and -d options used by manage_group, we treat group creation as a
|
46
46
|
# special case and use -M.
|
47
|
-
logger.
|
47
|
+
logger.debug("#{new_resource} setting group members: #{new_resource.members.join(",")}")
|
48
48
|
command += [ "-M", new_resource.members.join(",") ]
|
49
49
|
end
|
50
50
|
|
@@ -119,12 +119,12 @@ class Chef
|
|
119
119
|
end
|
120
120
|
|
121
121
|
unless members_to_be_added.empty?
|
122
|
-
logger.
|
122
|
+
logger.debug("#{new_resource} adding group members: #{members_to_be_added.join(",")}")
|
123
123
|
opts << [ "-m", members_to_be_added.join(",") ]
|
124
124
|
end
|
125
125
|
|
126
126
|
unless members_to_be_removed.empty?
|
127
|
-
logger.
|
127
|
+
logger.debug("#{new_resource} removing group members: #{members_to_be_removed.join(",")}")
|
128
128
|
opts << [ "-d", members_to_be_removed.join(",") ]
|
129
129
|
end
|
130
130
|
|
@@ -205,7 +205,7 @@ class Chef
|
|
205
205
|
logger.info("#{new_resource} deleted")
|
206
206
|
end
|
207
207
|
else
|
208
|
-
logger.
|
208
|
+
logger.debug("#{new_resource} does not exist - nothing to do")
|
209
209
|
end
|
210
210
|
delete_config
|
211
211
|
end
|
@@ -220,7 +220,7 @@ class Chef
|
|
220
220
|
logger.info("#{new_resource} disabled")
|
221
221
|
end
|
222
222
|
else
|
223
|
-
logger.
|
223
|
+
logger.debug("#{new_resource} does not exist - nothing to do")
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
data/lib/chef/provider/link.rb
CHANGED
@@ -106,7 +106,7 @@ class Chef
|
|
106
106
|
if new_resource.link_type == :symbolic
|
107
107
|
converge_by("create symlink at #{new_resource.target_file} to #{new_resource.to}") do
|
108
108
|
file_class.symlink(canonicalize(new_resource.to), new_resource.target_file)
|
109
|
-
logger.
|
109
|
+
logger.debug("#{new_resource} created #{new_resource.link_type} link from #{new_resource.target_file} -> #{new_resource.to}")
|
110
110
|
logger.info("#{new_resource} created")
|
111
111
|
# file_class.symlink will create the link with default access controls.
|
112
112
|
# This means that the access controls of the file could be different
|
@@ -118,7 +118,7 @@ class Chef
|
|
118
118
|
elsif new_resource.link_type == :hard
|
119
119
|
converge_by("create hard link at #{new_resource.target_file} to #{new_resource.to}") do
|
120
120
|
file_class.link(new_resource.to, new_resource.target_file)
|
121
|
-
logger.
|
121
|
+
logger.debug("#{new_resource} created #{new_resource.link_type} link from #{new_resource.target_file} -> #{new_resource.to}")
|
122
122
|
logger.info("#{new_resource} created")
|
123
123
|
end
|
124
124
|
end
|
@@ -140,7 +140,7 @@ class Chef
|
|
140
140
|
shell_out!(command)
|
141
141
|
logger.trace("#{@new_resource} is mounted at #{@new_resource.mount_point}")
|
142
142
|
else
|
143
|
-
logger.
|
143
|
+
logger.debug("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
@@ -154,7 +154,7 @@ class Chef
|
|
154
154
|
|
155
155
|
def enable_fs
|
156
156
|
if @current_resource.enabled && mount_options_unchanged?
|
157
|
-
logger.
|
157
|
+
logger.debug("#{@new_resource} is already enabled - nothing to do")
|
158
158
|
return nil
|
159
159
|
end
|
160
160
|
|
@@ -211,7 +211,7 @@ class Chef
|
|
211
211
|
contents.each { |line| fstab.puts line }
|
212
212
|
end
|
213
213
|
else
|
214
|
-
logger.
|
214
|
+
logger.debug("#{@new_resource} is not enabled - nothing to do")
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
@@ -120,7 +120,7 @@ class Chef
|
|
120
120
|
shell_out!(*command)
|
121
121
|
logger.trace("#{@new_resource} is mounted at #{@new_resource.mount_point}")
|
122
122
|
else
|
123
|
-
logger.
|
123
|
+
logger.debug("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -129,7 +129,7 @@ class Chef
|
|
129
129
|
shell_out!("umount", @new_resource.mount_point)
|
130
130
|
logger.trace("#{@new_resource} is no longer mounted at #{@new_resource.mount_point}")
|
131
131
|
else
|
132
|
-
logger.
|
132
|
+
logger.debug("#{@new_resource} is not mounted at #{@new_resource.mount_point}")
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
@@ -147,7 +147,7 @@ class Chef
|
|
147
147
|
sleep 1
|
148
148
|
mount_fs
|
149
149
|
else
|
150
|
-
logger.
|
150
|
+
logger.debug("#{@new_resource} is not mounted at #{@new_resource.mount_point} - nothing to do")
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
@@ -158,7 +158,7 @@ class Chef
|
|
158
158
|
|
159
159
|
def enable_fs
|
160
160
|
if @current_resource.enabled && mount_options_unchanged? && device_unchanged?
|
161
|
-
logger.
|
161
|
+
logger.debug("#{@new_resource} is already enabled - nothing to do")
|
162
162
|
return nil
|
163
163
|
end
|
164
164
|
|
@@ -272,7 +272,7 @@ class Chef
|
|
272
272
|
contents.reverse_each { |line| fstab.puts line }
|
273
273
|
end
|
274
274
|
else
|
275
|
-
logger.
|
275
|
+
logger.debug("#{@new_resource} is not enabled - nothing to do")
|
276
276
|
end
|
277
277
|
end
|
278
278
|
|
@@ -67,7 +67,7 @@ class Chef
|
|
67
67
|
password: @new_resource.password)
|
68
68
|
logger.trace("#{@new_resource} is mounted at #{@new_resource.mount_point}")
|
69
69
|
else
|
70
|
-
logger.
|
70
|
+
logger.debug("#{@new_resource} is already mounted at #{@new_resource.mount_point}")
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
data/lib/chef/provider/mount.rb
CHANGED
@@ -42,7 +42,7 @@ class Chef
|
|
42
42
|
logger.info("#{new_resource} mounted")
|
43
43
|
end
|
44
44
|
else
|
45
|
-
logger.
|
45
|
+
logger.debug("#{new_resource} is already mounted")
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -53,7 +53,7 @@ class Chef
|
|
53
53
|
logger.info("#{new_resource} unmounted")
|
54
54
|
end
|
55
55
|
else
|
56
|
-
logger.
|
56
|
+
logger.debug("#{new_resource} is already unmounted")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -76,7 +76,7 @@ class Chef
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
else
|
79
|
-
logger.
|
79
|
+
logger.debug("#{new_resource} not mounted, nothing to remount")
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -87,7 +87,7 @@ class Chef
|
|
87
87
|
logger.info("#{new_resource} enabled")
|
88
88
|
end
|
89
89
|
else
|
90
|
-
logger.
|
90
|
+
logger.debug("#{new_resource} already enabled")
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -98,7 +98,7 @@ class Chef
|
|
98
98
|
logger.info("#{new_resource} disabled")
|
99
99
|
end
|
100
100
|
else
|
101
|
-
logger.
|
101
|
+
logger.debug("#{new_resource} already disabled")
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -176,6 +176,7 @@ class Chef
|
|
176
176
|
def resolve_package_versions(pkg)
|
177
177
|
current_version = nil
|
178
178
|
candidate_version = nil
|
179
|
+
all_versions = []
|
179
180
|
run_noninteractive("apt-cache", default_release_options, "policy", pkg).stdout.each_line do |line|
|
180
181
|
case line
|
181
182
|
when /^\s{2}Installed: (.+)$/
|
@@ -184,9 +185,34 @@ class Chef
|
|
184
185
|
when /^\s{2}Candidate: (.+)$/
|
185
186
|
candidate_version = ( $1 != "(none)" ) ? $1 : nil
|
186
187
|
logger.trace("#{new_resource} candidate version for #{pkg} is #{$1}")
|
188
|
+
when /\s+(?:\*\*\* )?(\S+) \d+/
|
189
|
+
all_versions << $1
|
187
190
|
end
|
188
191
|
end
|
189
|
-
|
192
|
+
# This is a bit ugly... really this whole provider needs
|
193
|
+
# to be rewritten to use target_version_array and friends, but
|
194
|
+
# for now this gets us moving
|
195
|
+
idx = package_name_array.index(pkg)
|
196
|
+
chosen_version =
|
197
|
+
if idx
|
198
|
+
user_ver = new_version_array[idx]
|
199
|
+
if user_ver
|
200
|
+
if all_versions.include?(user_ver)
|
201
|
+
user_ver
|
202
|
+
else
|
203
|
+
logger.debug("User specified a version that's not available")
|
204
|
+
nil
|
205
|
+
end
|
206
|
+
else
|
207
|
+
# user didn't specify a version, use candidate
|
208
|
+
candidate_version
|
209
|
+
end
|
210
|
+
else
|
211
|
+
# this probably means we're redirected from a virtual
|
212
|
+
# package, so... just go with candidate version
|
213
|
+
candidate_version
|
214
|
+
end
|
215
|
+
[ current_version, chosen_version ]
|
190
216
|
end
|
191
217
|
|
192
218
|
def resolve_virtual_package_name(pkg)
|
@@ -28,12 +28,12 @@ class Chef
|
|
28
28
|
|
29
29
|
action :reconfig do
|
30
30
|
if current_resource.version.nil?
|
31
|
-
logger.
|
31
|
+
logger.debug("#{new_resource} is NOT installed - nothing to do")
|
32
32
|
return
|
33
33
|
end
|
34
34
|
|
35
35
|
unless new_resource.response_file
|
36
|
-
logger.
|
36
|
+
logger.debug("#{new_resource} no response_file provided - nothing to do")
|
37
37
|
return
|
38
38
|
end
|
39
39
|
|
@@ -46,7 +46,7 @@ class Chef
|
|
46
46
|
logger.info("#{new_resource} reconfigured")
|
47
47
|
end
|
48
48
|
else
|
49
|
-
logger.
|
49
|
+
logger.debug("#{new_resource} preseeding has not changed - nothing to do")
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|