chef 15.11.3-universal-mingw32 → 16.1.16-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 +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/msu_package_spec.rb +4 -0
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -67,8 +67,8 @@ class Chef
|
|
67
67
|
|
68
68
|
result["name"] = node["name"] || node.name
|
69
69
|
result["chef_environment"] = node["chef_environment"]
|
70
|
-
ip = (node["
|
71
|
-
fqdn = (node["
|
70
|
+
ip = (node["cloud"] && node["cloud"]["public_ipv4_addrs"].first) || node["ipaddress"]
|
71
|
+
fqdn = (node["cloud"] && node["cloud"]["public_hostname"]) || node["fqdn"]
|
72
72
|
result["ip"] = ip if ip
|
73
73
|
result["fqdn"] = fqdn if fqdn
|
74
74
|
result["run_list"] = node.run_list if config["run_list"]
|
@@ -95,9 +95,9 @@ class Chef
|
|
95
95
|
summarized = ""
|
96
96
|
list.each do |data|
|
97
97
|
node = data
|
98
|
-
# special case
|
99
|
-
ip = (node[:
|
100
|
-
fqdn = (node[:
|
98
|
+
# special case clouds with their split horizon thing.
|
99
|
+
ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress]
|
100
|
+
fqdn = (node[:cloud] && node[:cloud][:public_hostname]) || node[:fqdn]
|
101
101
|
name = node["name"] || node.name
|
102
102
|
|
103
103
|
if config[:run_list]
|
@@ -32,7 +32,7 @@ class Chef
|
|
32
32
|
# optionally filtering by category
|
33
33
|
# subcommand_files - returns an array of all subcommand files
|
34
34
|
# that could be loaded
|
35
|
-
#
|
35
|
+
# command_class_from(args) - returns the subcommand class for the
|
36
36
|
# user-requested command
|
37
37
|
#
|
38
38
|
class SubcommandLoader
|
data/lib/chef/knife/core/ui.rb
CHANGED
@@ -61,6 +61,14 @@ class Chef
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
# pastel.decorate is a lightweight replacement for highline.color
|
65
|
+
def pastel
|
66
|
+
@pastel ||= begin
|
67
|
+
require "pastel"
|
68
|
+
Pastel.new
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
64
72
|
# Prints a message to stdout. Aliased as +info+ for compatibility with
|
65
73
|
# the logger API.
|
66
74
|
#
|
@@ -132,9 +140,17 @@ class Chef
|
|
132
140
|
log("#{color("FATAL:", :red, :bold)} #{message}")
|
133
141
|
end
|
134
142
|
|
143
|
+
# Print a message describing a fatal error and exit 1
|
144
|
+
#
|
145
|
+
# @param message [String] the text string
|
146
|
+
def fatal!(message)
|
147
|
+
fatal(message)
|
148
|
+
exit 1
|
149
|
+
end
|
150
|
+
|
135
151
|
def color(string, *colors)
|
136
152
|
if color?
|
137
|
-
|
153
|
+
pastel.decorate(string, *colors)
|
138
154
|
else
|
139
155
|
string
|
140
156
|
end
|
@@ -24,12 +24,14 @@ class Chef
|
|
24
24
|
class Knife
|
25
25
|
module Core
|
26
26
|
# Instances of BootstrapContext are the context objects (i.e., +self+) for
|
27
|
-
# bootstrap templates. For backwards
|
27
|
+
# bootstrap templates. For backwards compatibility, they +must+ set the
|
28
28
|
# following instance variables:
|
29
29
|
# * @config - a hash of knife's config values
|
30
30
|
# * @run_list - the run list for the node to boostrap
|
31
31
|
#
|
32
32
|
class WindowsBootstrapContext < BootstrapContext
|
33
|
+
attr_accessor :config
|
34
|
+
attr_accessor :chef_config
|
33
35
|
|
34
36
|
def initialize(config, run_list, chef_config, secret = nil)
|
35
37
|
@config = config
|
@@ -55,15 +57,15 @@ class Chef
|
|
55
57
|
end
|
56
58
|
|
57
59
|
def validation_key
|
58
|
-
if File.exist?(File.expand_path(
|
59
|
-
IO.read(File.expand_path(
|
60
|
+
if File.exist?(File.expand_path(chef_config[:validation_key]))
|
61
|
+
IO.read(File.expand_path(chef_config[:validation_key]))
|
60
62
|
else
|
61
63
|
false
|
62
64
|
end
|
63
65
|
end
|
64
66
|
|
65
67
|
def secret
|
66
|
-
escape_and_echo(
|
68
|
+
escape_and_echo(config[:secret])
|
67
69
|
end
|
68
70
|
|
69
71
|
def trusted_certs_script
|
@@ -72,25 +74,25 @@ class Chef
|
|
72
74
|
|
73
75
|
def config_content
|
74
76
|
client_rb = <<~CONFIG
|
75
|
-
chef_server_url "#{
|
76
|
-
validation_client_name "#{
|
77
|
+
chef_server_url "#{chef_config[:chef_server_url]}"
|
78
|
+
validation_client_name "#{chef_config[:validation_client_name]}"
|
77
79
|
file_cache_path "#{ChefConfig::Config.var_chef_dir(true)}/cache"
|
78
80
|
file_backup_path "#{ChefConfig::Config.var_chef_dir(true)}/backup"
|
79
81
|
cache_options ({:path => "#{ChefConfig::Config.etc_chef_dir(true)}/cache/checksums", :skip_expires => true})
|
80
82
|
CONFIG
|
81
83
|
|
82
|
-
unless
|
83
|
-
client_rb << "chef_license \"#{
|
84
|
+
unless chef_config[:chef_license].nil?
|
85
|
+
client_rb << "chef_license \"#{chef_config[:chef_license]}\"\n"
|
84
86
|
end
|
85
87
|
|
86
|
-
if
|
87
|
-
client_rb << %Q{node_name "#{
|
88
|
+
if config[:chef_node_name]
|
89
|
+
client_rb << %Q{node_name "#{config[:chef_node_name]}"\n}
|
88
90
|
else
|
89
91
|
client_rb << "# Using default node name (fqdn)\n"
|
90
92
|
end
|
91
93
|
|
92
|
-
if
|
93
|
-
client_rb << %Q{log_level :#{
|
94
|
+
if chef_config[:config_log_level]
|
95
|
+
client_rb << %Q{log_level :#{chef_config[:config_log_level]}\n}
|
94
96
|
else
|
95
97
|
client_rb << "log_level :auto\n"
|
96
98
|
end
|
@@ -99,21 +101,21 @@ class Chef
|
|
99
101
|
|
100
102
|
# We configure :verify_api_cert only when it's overridden on the CLI
|
101
103
|
# or when specified in the knife config.
|
102
|
-
if
|
103
|
-
value =
|
104
|
+
if !config[:node_verify_api_cert].nil? || config.key?(:verify_api_cert)
|
105
|
+
value = config[:node_verify_api_cert].nil? ? config[:verify_api_cert] : config[:node_verify_api_cert]
|
104
106
|
client_rb << %Q{verify_api_cert #{value}\n}
|
105
107
|
end
|
106
108
|
|
107
109
|
# We configure :ssl_verify_mode only when it's overridden on the CLI
|
108
110
|
# or when specified in the knife config.
|
109
|
-
if
|
110
|
-
value = case
|
111
|
+
if config[:node_ssl_verify_mode] || config.key?(:ssl_verify_mode)
|
112
|
+
value = case config[:node_ssl_verify_mode]
|
111
113
|
when "peer"
|
112
114
|
:verify_peer
|
113
115
|
when "none"
|
114
116
|
:verify_none
|
115
117
|
when nil
|
116
|
-
|
118
|
+
config[:ssl_verify_mode]
|
117
119
|
else
|
118
120
|
nil
|
119
121
|
end
|
@@ -123,22 +125,22 @@ class Chef
|
|
123
125
|
end
|
124
126
|
end
|
125
127
|
|
126
|
-
if
|
127
|
-
client_rb << %Q{ssl_verify_mode :#{
|
128
|
+
if config[:ssl_verify_mode]
|
129
|
+
client_rb << %Q{ssl_verify_mode :#{config[:ssl_verify_mode]}\n}
|
128
130
|
end
|
129
131
|
|
130
|
-
if
|
132
|
+
if config[:bootstrap_proxy]
|
131
133
|
client_rb << "\n"
|
132
|
-
client_rb << %Q{http_proxy "#{
|
133
|
-
client_rb << %Q{https_proxy "#{
|
134
|
-
client_rb << %Q{no_proxy "#{
|
134
|
+
client_rb << %Q{http_proxy "#{config[:bootstrap_proxy]}"\n}
|
135
|
+
client_rb << %Q{https_proxy "#{config[:bootstrap_proxy]}"\n}
|
136
|
+
client_rb << %Q{no_proxy "#{config[:bootstrap_no_proxy]}"\n} if config[:bootstrap_no_proxy]
|
135
137
|
end
|
136
138
|
|
137
|
-
if
|
138
|
-
client_rb << %Q{no_proxy "#{
|
139
|
+
if config[:bootstrap_no_proxy]
|
140
|
+
client_rb << %Q{no_proxy "#{config[:bootstrap_no_proxy]}"\n}
|
139
141
|
end
|
140
142
|
|
141
|
-
if
|
143
|
+
if config[:secret]
|
142
144
|
client_rb << %Q{encrypted_data_bag_secret "#{ChefConfig::Config.etc_chef_dir(true)}/encrypted_data_bag_secret"\n}
|
143
145
|
end
|
144
146
|
|
@@ -146,7 +148,7 @@ class Chef
|
|
146
148
|
client_rb << %Q{trusted_certs_dir "#{ChefConfig::Config.etc_chef_dir(true)}/trusted_certs"\n}
|
147
149
|
end
|
148
150
|
|
149
|
-
if
|
151
|
+
if chef_config[:fips]
|
150
152
|
client_rb << "fips true\n"
|
151
153
|
end
|
152
154
|
|
@@ -154,18 +156,18 @@ class Chef
|
|
154
156
|
end
|
155
157
|
|
156
158
|
def get_log_location
|
157
|
-
if
|
158
|
-
%Q{:#{
|
159
|
-
elsif
|
159
|
+
if chef_config[:config_log_location].equal?(:win_evt)
|
160
|
+
%Q{:#{chef_config[:config_log_location]}\n}
|
161
|
+
elsif chef_config[:config_log_location].equal?(:syslog)
|
160
162
|
raise "syslog is not supported for log_location on Windows OS\n"
|
161
|
-
elsif
|
163
|
+
elsif chef_config[:config_log_location].equal?(STDOUT)
|
162
164
|
"STDOUT\n"
|
163
|
-
elsif
|
165
|
+
elsif chef_config[:config_log_location].equal?(STDERR)
|
164
166
|
"STDERR\n"
|
165
|
-
elsif
|
167
|
+
elsif chef_config[:config_log_location].nil? || chef_config[:config_log_location].empty?
|
166
168
|
"STDOUT\n"
|
167
|
-
elsif
|
168
|
-
%Q{"#{
|
169
|
+
elsif chef_config[:config_log_location]
|
170
|
+
%Q{"#{chef_config[:config_log_location]}"\n}
|
169
171
|
else
|
170
172
|
"STDOUT\n"
|
171
173
|
end
|
@@ -285,15 +287,15 @@ class Chef
|
|
285
287
|
# Build a URL to query www.chef.io that will redirect to the correct
|
286
288
|
# Chef Infra msi download.
|
287
289
|
def msi_url(machine_os = nil, machine_arch = nil, download_context = nil)
|
288
|
-
if
|
290
|
+
if config[:msi_url].nil? || config[:msi_url].empty?
|
289
291
|
url = "https://www.chef.io/chef/download?p=windows"
|
290
292
|
url += "&pv=#{machine_os}" unless machine_os.nil?
|
291
293
|
url += "&m=#{machine_arch}" unless machine_arch.nil?
|
292
294
|
url += "&DownloadContext=#{download_context}" unless download_context.nil?
|
293
|
-
url += "&channel=#{
|
295
|
+
url += "&channel=#{config[:channel]}"
|
294
296
|
url += "&v=#{version_to_install}"
|
295
297
|
else
|
296
|
-
|
298
|
+
config[:msi_url]
|
297
299
|
end
|
298
300
|
end
|
299
301
|
|
@@ -318,8 +320,8 @@ class Chef
|
|
318
320
|
# This string should contain both the commands necessary to both create the files, as well as their content
|
319
321
|
def trusted_certs_content
|
320
322
|
content = ""
|
321
|
-
if
|
322
|
-
Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(
|
323
|
+
if chef_config[:trusted_certs_dir]
|
324
|
+
Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(chef_config[:trusted_certs_dir]), "*.{crt,pem}")).each do |cert|
|
323
325
|
content << "> #{bootstrap_directory}/trusted_certs/#{File.basename(cert)} (\n" +
|
324
326
|
escape_and_echo(IO.read(File.expand_path(cert))) + "\n)\n"
|
325
327
|
end
|
@@ -329,8 +331,8 @@ class Chef
|
|
329
331
|
|
330
332
|
def client_d_content
|
331
333
|
content = ""
|
332
|
-
if
|
333
|
-
root = Pathname(
|
334
|
+
if chef_config[:client_d_dir] && File.exist?(chef_config[:client_d_dir])
|
335
|
+
root = Pathname(chef_config[:client_d_dir])
|
334
336
|
root.find do |f|
|
335
337
|
relative = f.relative_path_from(root)
|
336
338
|
if f != root
|
@@ -34,18 +34,13 @@ class Chef
|
|
34
34
|
# are provided.
|
35
35
|
|
36
36
|
def self.included(base)
|
37
|
-
base.option :
|
38
|
-
short: "-s SECRET",
|
37
|
+
base.option :cl_secret,
|
39
38
|
long: "--secret SECRET",
|
40
|
-
description: "The secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret'."
|
41
|
-
# Need to store value from command line in separate variable - knife#merge_configs populates same keys
|
42
|
-
# on config object from
|
43
|
-
proc: Proc.new { |s| set_cl_secret(s) }
|
39
|
+
description: "The secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret'."
|
44
40
|
|
45
|
-
base.option :
|
41
|
+
base.option :cl_secret_file,
|
46
42
|
long: "--secret-file SECRET_FILE",
|
47
|
-
description: "A file containing the secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret_file'."
|
48
|
-
proc: Proc.new { |sf| set_cl_secret_file(sf) }
|
43
|
+
description: "A file containing the secret key to use to encrypt data bag item values. Can also be defaulted in your config with the key 'secret_file'."
|
49
44
|
|
50
45
|
base.option :encrypt,
|
51
46
|
long: "--encrypt",
|
@@ -67,32 +62,25 @@ class Chef
|
|
67
62
|
# IE, if we are not running 'knife data bag *' we don't need to load 'chef/encrypted_data_bag_item'
|
68
63
|
require_relative "../encrypted_data_bag_item"
|
69
64
|
|
70
|
-
if
|
71
|
-
config[:
|
72
|
-
elsif
|
73
|
-
Chef::EncryptedDataBagItem.load_secret(config[:
|
74
|
-
elsif secret =
|
65
|
+
if config[:cl_secret]
|
66
|
+
config[:cl_secret]
|
67
|
+
elsif config[:cl_secret_file]
|
68
|
+
Chef::EncryptedDataBagItem.load_secret(config[:cl_secret_file])
|
69
|
+
elsif secret = config[:secret]
|
75
70
|
secret
|
76
71
|
else
|
77
|
-
secret_file =
|
72
|
+
secret_file = config[:secret_file]
|
78
73
|
Chef::EncryptedDataBagItem.load_secret(secret_file)
|
79
74
|
end
|
80
75
|
end
|
81
76
|
|
82
77
|
def validate_secrets
|
83
|
-
if
|
84
|
-
|
85
|
-
|
86
|
-
")
|
87
|
-
end
|
88
|
-
|
89
|
-
if has_cl_secret_file?
|
90
|
-
ui.fatal("Please specify only one of --secret, --secret-file")
|
91
|
-
exit(1)
|
92
|
-
end
|
78
|
+
if config[:cl_secret] && config[:cl_secret_file]
|
79
|
+
ui.fatal("Please specify only one of --secret, --secret-file")
|
80
|
+
exit(1)
|
93
81
|
end
|
94
82
|
|
95
|
-
if
|
83
|
+
if config[:secret] && config[:secret_file]
|
96
84
|
ui.fatal("Please specify only one of 'secret' or 'secret_file' in your config file")
|
97
85
|
exit(1)
|
98
86
|
end
|
@@ -106,41 +94,26 @@ class Chef
|
|
106
94
|
def base_encryption_secret_provided?(need_encrypt_flag = true)
|
107
95
|
validate_secrets
|
108
96
|
|
109
|
-
return true if
|
97
|
+
return true if config[:cl_secret] || config[:cl_secret_file]
|
110
98
|
|
111
99
|
if need_encrypt_flag
|
112
100
|
if config[:encrypt]
|
113
|
-
unless
|
101
|
+
unless config[:secret] || config[:secret_file]
|
114
102
|
ui.fatal("No secret or secret_file specified in config, unable to encrypt item.")
|
115
103
|
exit(1)
|
116
104
|
end
|
117
105
|
return true
|
118
106
|
end
|
119
107
|
return false
|
120
|
-
elsif
|
108
|
+
elsif config[:secret] || config[:secret_file]
|
121
109
|
# Certain situations (show and bootstrap) don't need a --encrypt flag to use the config file secret
|
122
110
|
return true
|
123
111
|
end
|
124
112
|
false
|
125
113
|
end
|
126
114
|
|
127
|
-
def has_cl_secret?
|
128
|
-
Chef::Config[:knife].key?(:cl_secret)
|
129
|
-
end
|
130
|
-
|
131
|
-
def self.set_cl_secret(s)
|
132
|
-
Chef::Config[:knife][:cl_secret] = s
|
133
|
-
end
|
134
|
-
|
135
|
-
def has_cl_secret_file?
|
136
|
-
Chef::Config[:knife].key?(:cl_secret_file)
|
137
|
-
end
|
138
|
-
|
139
|
-
def self.set_cl_secret_file(sf)
|
140
|
-
Chef::Config[:knife][:cl_secret_file] = sf
|
141
|
-
end
|
142
|
-
|
143
115
|
def knife_config
|
116
|
+
Chef.deprecated(:knife_bootstrap_apis, "The `knife_config` bootstrap helper has been deprecated, use the properly merged `config` helper instead")
|
144
117
|
Chef::Config.key?(:knife) ? Chef::Config[:knife] : {}
|
145
118
|
end
|
146
119
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Seth Falcon (<seth@chef.io>)
|
3
|
+
# Author:: Jeremiah Snapp (<jeremiah@chef.io>)
|
4
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
5
|
+
# License:: Apache License, Version 2.0
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
require_relative "../knife"
|
21
|
+
|
22
|
+
class Chef
|
23
|
+
class Knife
|
24
|
+
class GroupAdd < Chef::Knife
|
25
|
+
category "group"
|
26
|
+
banner "knife group add MEMBER_TYPE MEMBER_NAME GROUP_NAME"
|
27
|
+
|
28
|
+
deps do
|
29
|
+
require_relative "acl_base"
|
30
|
+
include Chef::Knife::AclBase
|
31
|
+
end
|
32
|
+
|
33
|
+
def run
|
34
|
+
member_type, member_name, group_name = name_args
|
35
|
+
|
36
|
+
if name_args.length != 3
|
37
|
+
show_usage
|
38
|
+
ui.fatal "You must specify member type [client|group|user], member name and group name"
|
39
|
+
exit 1
|
40
|
+
end
|
41
|
+
|
42
|
+
validate_member_name!(group_name)
|
43
|
+
validate_member_type!(member_type)
|
44
|
+
validate_member_name!(member_name)
|
45
|
+
|
46
|
+
if group_name.downcase == "users"
|
47
|
+
ui.fatal "knife group can not manage members of Chef Infra Server's 'users' group, which contains all users."
|
48
|
+
exit 1
|
49
|
+
end
|
50
|
+
|
51
|
+
add_to_group!(member_type, member_name, group_name)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#
|
2
|
-
# Author::
|
2
|
+
# Author:: Seth Falcon (<seth@chef.io>)
|
3
|
+
# Author:: Jeremiah Snapp (<jeremiah@chef.io>)
|
3
4
|
# Copyright:: Copyright (c) Chef Software Inc.
|
4
5
|
# License:: Apache License, Version 2.0
|
5
6
|
#
|
@@ -17,24 +18,32 @@
|
|
17
18
|
#
|
18
19
|
|
19
20
|
require_relative "../knife"
|
20
|
-
require_relative "supermarket_download"
|
21
|
-
require_relative "../dist"
|
22
21
|
|
23
22
|
class Chef
|
24
23
|
class Knife
|
25
|
-
class
|
24
|
+
class GroupCreate < Chef::Knife
|
25
|
+
category "group"
|
26
|
+
banner "knife group create GROUP_NAME"
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
category "deprecated"
|
28
|
+
deps do
|
29
|
+
require_relative "acl_base"
|
30
|
+
include Chef::Knife::AclBase
|
31
|
+
end
|
32
32
|
|
33
33
|
def run
|
34
|
-
|
35
|
-
super
|
36
|
-
end
|
34
|
+
group_name = name_args[0]
|
37
35
|
|
36
|
+
if name_args.length != 1
|
37
|
+
show_usage
|
38
|
+
ui.fatal "You must specify group name"
|
39
|
+
exit 1
|
40
|
+
end
|
41
|
+
|
42
|
+
validate_member_name!(group_name)
|
43
|
+
|
44
|
+
ui.msg "Creating '#{group_name}' group"
|
45
|
+
rest.post_rest("groups", { groupname: group_name })
|
46
|
+
end
|
38
47
|
end
|
39
48
|
end
|
40
49
|
end
|