chef 16.0.275-universal-mingw32 → 16.2.50-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 -1
- data/README.md +3 -3
- data/Rakefile +15 -1
- data/chef.gemspec +3 -3
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/application/apply.rb +2 -2
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- 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/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- 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 +4 -4
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -2
- 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 +7 -7
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +5 -1
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- 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/file_access_control.rb +1 -1
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +18 -3
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +18 -0
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -2
- data/lib/chef/knife/bootstrap.rb +13 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +2 -2
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/properties.rb +4 -2
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/property.rb +2 -2
- data/lib/chef/provider.rb +3 -3
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/directory.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +28 -32
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +1 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +3 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +3 -3
- data/lib/chef/provider/package/snap.rb +96 -27
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/package/yum.rb +1 -1
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +11 -15
- data/lib/chef/provider/remote_directory.rb +2 -2
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +13 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +15 -11
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/windows_task.rb +5 -3
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +25 -14
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +0 -1
- data/lib/chef/resource/batch.rb +4 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_handler.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cron/_cron_shared.rb +98 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
- data/lib/chef/resource/cron_access.rb +11 -3
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/dmg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +478 -8
- data/lib/chef/resource/file.rb +10 -8
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +7 -20
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/launchd.rb +4 -4
- data/lib/chef/resource/locale.rb +3 -3
- data/lib/chef/resource/macos_userdefaults.rb +14 -9
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/msu_package.rb +1 -1
- data/lib/chef/resource/perl.rb +0 -1
- data/lib/chef/resource/plist.rb +23 -4
- data/lib/chef/resource/powershell_script.rb +4 -2
- data/lib/chef/resource/python.rb +0 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/ruby.rb +0 -1
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
- data/lib/chef/resource/sudo.rb +29 -2
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/windows_ad_join.rb +30 -1
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +11 -0
- data/lib/chef/resource/windows_certificate.rb +27 -1
- data/lib/chef/resource/windows_dfs_server.rb +1 -1
- data/lib/chef/resource/windows_firewall_rule.rb +2 -2
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +3 -3
- data/lib/chef/resource/windows_pagefile.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +47 -16
- data/lib/chef/resource/windows_share.rb +2 -2
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +21 -21
- data/lib/chef/resource/windows_user_privilege.rb +45 -3
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resource_inspector.rb +4 -3
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.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 +18 -18
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -0
- data/spec/functional/resource/dnf_package_spec.rb +2 -2
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/remote_file_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_task_spec.rb +12 -12
- data/spec/integration/knife/config_use_profile_spec.rb +55 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -1
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application_spec.rb +7 -0
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +2 -2
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/user_context_spec.rb +1 -9
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron_spec.rb +9 -49
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +96 -87
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +60 -10
- data/spec/unit/provider_resolver_spec.rb +9 -9
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/powershell_script_spec.rb +10 -15
- data/spec/unit/resource/timezone_spec.rb +1 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_package_spec.rb +10 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_spec.rb +67 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/registry_spec.rb +1 -1
- metadata +24 -23
- data/lib/chef/resource/cron.rb +0 -157
@@ -726,7 +726,7 @@ describe Chef::Resource::DnfPackage, :requires_root, external: exclude_test do
|
|
726
726
|
|
727
727
|
it "with a prco equality pin in the name it upgrades a prior package" do
|
728
728
|
preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
|
729
|
-
dnf_package.package_name("chef_rpm
|
729
|
+
dnf_package.package_name("chef_rpm = 1.10")
|
730
730
|
dnf_package.run_action(:upgrade)
|
731
731
|
expect(dnf_package.updated_by_last_action?).to be true
|
732
732
|
expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
|
@@ -742,7 +742,7 @@ describe Chef::Resource::DnfPackage, :requires_root, external: exclude_test do
|
|
742
742
|
|
743
743
|
it "with a prco equality pin in the name it downgrades a later package" do
|
744
744
|
preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
|
745
|
-
dnf_package.package_name("chef_rpm
|
745
|
+
dnf_package.package_name("chef_rpm = 1.2")
|
746
746
|
dnf_package.run_action(:upgrade)
|
747
747
|
expect(dnf_package.updated_by_last_action?).to be true
|
748
748
|
expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
|
@@ -103,7 +103,7 @@ describe Chef::Resource::Git, requires_git: true do
|
|
103
103
|
revision "v1.0.0"
|
104
104
|
end.should_be_updated
|
105
105
|
expect_revision_to_be("HEAD", v1_commit)
|
106
|
-
expect_branch_to_be("tags/v1.0.0^0") #
|
106
|
+
expect_branch_to_be("tags/v1.0.0^0") # detached
|
107
107
|
# also verify the tag commit itself is what we expect as an extra sanity check
|
108
108
|
expect_revision_to_be("v1.0.0", v1_tag)
|
109
109
|
end
|
@@ -116,7 +116,7 @@ describe Chef::Resource::Git, requires_git: true do
|
|
116
116
|
git deploy_directory do
|
117
117
|
repository origin_repo
|
118
118
|
revision "v1.0.0"
|
119
|
-
expect_branch_to_be("tags/v1.0.0^0") #
|
119
|
+
expect_branch_to_be("tags/v1.0.0^0") # detached
|
120
120
|
end.should_not_be_updated
|
121
121
|
end
|
122
122
|
end
|
@@ -128,7 +128,7 @@ describe Chef::Resource::Git, requires_git: true do
|
|
128
128
|
revision rev_foo
|
129
129
|
end.should_be_updated
|
130
130
|
expect_revision_to_be("HEAD", rev_foo)
|
131
|
-
expect_branch_to_be("master~1") #
|
131
|
+
expect_branch_to_be("master~1") # detached
|
132
132
|
end
|
133
133
|
|
134
134
|
it "checks out the expected revision ed18 to a local branch" do
|
@@ -138,7 +138,7 @@ describe Chef::Resource::Git, requires_git: true do
|
|
138
138
|
checkout_branch "deploy"
|
139
139
|
end.should_be_updated
|
140
140
|
expect_revision_to_be("HEAD", rev_foo)
|
141
|
-
expect_branch_to_be("deploy") #
|
141
|
+
expect_branch_to_be("deploy") # detached
|
142
142
|
end
|
143
143
|
|
144
144
|
it "doesn't update if up-to-date" do
|
@@ -152,7 +152,7 @@ describe Chef::Resource::Git, requires_git: true do
|
|
152
152
|
repository origin_repo
|
153
153
|
revision rev_foo
|
154
154
|
end.should_not_be_updated
|
155
|
-
expect_branch_to_be("master~1") #
|
155
|
+
expect_branch_to_be("master~1") # detached
|
156
156
|
end
|
157
157
|
|
158
158
|
it "checks out the expected revision 972d" do
|
@@ -161,7 +161,7 @@ describe Chef::Resource::Git, requires_git: true do
|
|
161
161
|
revision rev_testing
|
162
162
|
end.should_be_updated
|
163
163
|
expect_revision_to_be("HEAD", rev_testing)
|
164
|
-
expect_branch_to_be("master~2") #
|
164
|
+
expect_branch_to_be("master~2") # detached
|
165
165
|
end
|
166
166
|
|
167
167
|
it "checks out the expected revision 972d to a local branch" do
|
@@ -0,0 +1,232 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require "spec_helper"
|
19
|
+
|
20
|
+
# Deploy relies heavily on symlinks, so it doesn't work on windows.
|
21
|
+
describe Chef::Resource::Launchd, :macos_only, requires_root: true do
|
22
|
+
include RecipeDSLHelper
|
23
|
+
|
24
|
+
before(:each) do
|
25
|
+
shell_out("launchctl unload -wF /Library/LaunchDaemons/io.chef.testing.fake.plist")
|
26
|
+
FileUtils.rm_f "/Library/LaunchDaemons/io.chef.testing.fake.plist"
|
27
|
+
end
|
28
|
+
|
29
|
+
after(:each) do
|
30
|
+
shell_out("launchctl unload -wF /Library/LaunchDaemons/io.chef.testing.fake.plist")
|
31
|
+
FileUtils.rm_f "/Library/LaunchDaemons/io.chef.testing.fake.plist"
|
32
|
+
end
|
33
|
+
|
34
|
+
context ":enable" do
|
35
|
+
it "enables a service" do
|
36
|
+
launchd "io.chef.testing.fake" do
|
37
|
+
program_arguments [
|
38
|
+
"/bin/sleep",
|
39
|
+
"60",
|
40
|
+
]
|
41
|
+
run_at_load true
|
42
|
+
type "daemon"
|
43
|
+
action :enable
|
44
|
+
end.should_be_updated
|
45
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
46
|
+
expect(shell_out!("launchctl list io.chef.testing.fake").stdout).to match('"PID" = \d+')
|
47
|
+
expect(shell_out!("launchctl list io.chef.testing.fake").stdout).not_to match('"PID" = 0')
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should be idempotent" do
|
51
|
+
launchd "io.chef.testing.fake" do
|
52
|
+
program_arguments [
|
53
|
+
"/bin/sleep",
|
54
|
+
"60",
|
55
|
+
]
|
56
|
+
run_at_load true
|
57
|
+
type "daemon"
|
58
|
+
action :enable
|
59
|
+
end.should_be_updated
|
60
|
+
launchd "io.chef.testing.fake" do
|
61
|
+
program_arguments [
|
62
|
+
"/bin/sleep",
|
63
|
+
"60",
|
64
|
+
]
|
65
|
+
run_at_load true
|
66
|
+
type "daemon"
|
67
|
+
action :enable
|
68
|
+
end.should_not_be_updated
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context ":create" do
|
73
|
+
it "creates a service" do
|
74
|
+
launchd "io.chef.testing.fake" do
|
75
|
+
program_arguments [
|
76
|
+
"/bin/sleep",
|
77
|
+
"60",
|
78
|
+
]
|
79
|
+
run_at_load true
|
80
|
+
type "daemon"
|
81
|
+
action :create
|
82
|
+
end.should_be_updated
|
83
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
84
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should be idempotent" do
|
88
|
+
launchd "io.chef.testing.fake" do
|
89
|
+
program_arguments [
|
90
|
+
"/bin/sleep",
|
91
|
+
"60",
|
92
|
+
]
|
93
|
+
run_at_load true
|
94
|
+
type "daemon"
|
95
|
+
action :create
|
96
|
+
end.should_be_updated
|
97
|
+
launchd "io.chef.testing.fake" do
|
98
|
+
program_arguments [
|
99
|
+
"/bin/sleep",
|
100
|
+
"60",
|
101
|
+
]
|
102
|
+
run_at_load true
|
103
|
+
type "daemon"
|
104
|
+
action :create
|
105
|
+
end.should_not_be_updated
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context ":create_if_missing" do
|
110
|
+
it "creates a service if it is missing" do
|
111
|
+
launchd "io.chef.testing.fake" do
|
112
|
+
program_arguments [
|
113
|
+
"/bin/sleep",
|
114
|
+
"60",
|
115
|
+
]
|
116
|
+
run_at_load true
|
117
|
+
type "daemon"
|
118
|
+
action :create_if_missing
|
119
|
+
end.should_be_updated
|
120
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
121
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
122
|
+
end
|
123
|
+
it "is idempotent" do
|
124
|
+
launchd "io.chef.testing.fake" do
|
125
|
+
program_arguments [
|
126
|
+
"/bin/sleep",
|
127
|
+
"60",
|
128
|
+
]
|
129
|
+
run_at_load true
|
130
|
+
type "daemon"
|
131
|
+
action :create_if_missing
|
132
|
+
end.should_be_updated
|
133
|
+
launchd "io.chef.testing.fake" do
|
134
|
+
program_arguments [
|
135
|
+
"/bin/sleep",
|
136
|
+
"60",
|
137
|
+
]
|
138
|
+
run_at_load true
|
139
|
+
type "daemon"
|
140
|
+
action :create_if_missing
|
141
|
+
end.should_not_be_updated
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context ":delete" do
|
146
|
+
it "deletes a service" do
|
147
|
+
launchd "io.chef.testing.fake" do
|
148
|
+
program_arguments [
|
149
|
+
"/bin/sleep",
|
150
|
+
"60",
|
151
|
+
]
|
152
|
+
run_at_load true
|
153
|
+
type "daemon"
|
154
|
+
action :enable
|
155
|
+
end
|
156
|
+
launchd "io.chef.testing.fake" do
|
157
|
+
type "daemon"
|
158
|
+
action :delete
|
159
|
+
end.should_be_updated
|
160
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be false
|
161
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
162
|
+
end
|
163
|
+
it "is idempotent" do
|
164
|
+
launchd "io.chef.testing.fake" do
|
165
|
+
program_arguments [
|
166
|
+
"/bin/sleep",
|
167
|
+
"60",
|
168
|
+
]
|
169
|
+
run_at_load true
|
170
|
+
type "daemon"
|
171
|
+
action :enable
|
172
|
+
end
|
173
|
+
launchd "io.chef.testing.fake" do
|
174
|
+
type "daemon"
|
175
|
+
action :delete
|
176
|
+
end.should_be_updated
|
177
|
+
launchd "io.chef.testing.fake" do
|
178
|
+
type "daemon"
|
179
|
+
action :delete
|
180
|
+
end.should_not_be_updated
|
181
|
+
end
|
182
|
+
it "works if the file does not exist" do
|
183
|
+
launchd "io.chef.testing.fake" do
|
184
|
+
type "daemon"
|
185
|
+
action :delete
|
186
|
+
end.should_not_be_updated
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
context ":disable" do
|
191
|
+
it "deletes a service" do
|
192
|
+
launchd "io.chef.testing.fake" do
|
193
|
+
program_arguments [
|
194
|
+
"/bin/sleep",
|
195
|
+
"1",
|
196
|
+
]
|
197
|
+
type "daemon"
|
198
|
+
action :enable
|
199
|
+
end
|
200
|
+
launchd "io.chef.testing.fake" do
|
201
|
+
type "daemon"
|
202
|
+
action :disable
|
203
|
+
end.should_be_updated
|
204
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
205
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
206
|
+
end
|
207
|
+
it "is idempotent" do
|
208
|
+
launchd "io.chef.testing.fake" do
|
209
|
+
program_arguments [
|
210
|
+
"/bin/sleep",
|
211
|
+
"1",
|
212
|
+
]
|
213
|
+
type "daemon"
|
214
|
+
action :enable
|
215
|
+
end
|
216
|
+
launchd "io.chef.testing.fake" do
|
217
|
+
type "daemon"
|
218
|
+
action :disable
|
219
|
+
end.should_be_updated
|
220
|
+
launchd "io.chef.testing.fake" do
|
221
|
+
type "daemon"
|
222
|
+
action :disable
|
223
|
+
end.should_not_be_updated
|
224
|
+
end
|
225
|
+
it "should work if the plist does not exist" do
|
226
|
+
launchd "io.chef.testing.fake" do
|
227
|
+
type "daemon"
|
228
|
+
action :disable
|
229
|
+
end.should_not_be_updated
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
@@ -134,7 +134,7 @@ describe Chef::Resource::RemoteFile do
|
|
134
134
|
let(:smb_file_local_file_name) { "smb_file.txt" }
|
135
135
|
let(:smb_file_local_path) { File.join( smb_share_root_directory, smb_file_local_file_name ) }
|
136
136
|
let(:smb_share_name) { "chef_smb_test" }
|
137
|
-
let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).
|
137
|
+
let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).tr("/", "\\") }
|
138
138
|
let(:smb_file_content) { "hellofun" }
|
139
139
|
let(:local_destination_path) { File.join(Dir.tmpdir, make_tmpname("chef_remote_file")) }
|
140
140
|
let(:windows_current_user) { ENV["USERNAME"] }
|
@@ -155,7 +155,7 @@ describe Chef::Resource::RemoteFile do
|
|
155
155
|
before do
|
156
156
|
shell_out("net.exe share #{smb_share_name} /delete")
|
157
157
|
File.write(smb_file_local_path, smb_file_content )
|
158
|
-
shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.
|
158
|
+
shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.tr("/", '\\')}\" /grant:\"authenticated users\",read")
|
159
159
|
end
|
160
160
|
|
161
161
|
after do
|
@@ -29,7 +29,7 @@ describe "Chef::Resource::User with Chef::Provider::User::Dscl provider", metada
|
|
29
29
|
def clean_user
|
30
30
|
shell_out!("/usr/bin/dscl . -delete '/Users/#{username}'")
|
31
31
|
rescue Mixlib::ShellOut::ShellCommandFailed
|
32
|
-
|
32
|
+
# Raised when the user is already cleaned
|
33
33
|
end
|
34
34
|
|
35
35
|
def user_should_exist
|
@@ -29,7 +29,7 @@ describe "Chef::Resource::User with Chef::Provider::User::MacUser provider", met
|
|
29
29
|
def clean_user
|
30
30
|
shell_out!("/usr/bin/dscl . -delete '/Users/#{username}'")
|
31
31
|
rescue Mixlib::ShellOut::ShellCommandFailed
|
32
|
-
|
32
|
+
# Raised when the user is already cleaned
|
33
33
|
end
|
34
34
|
|
35
35
|
def ensure_file_cache_path_exists
|
@@ -317,12 +317,12 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
317
317
|
expect(subject).not_to be_updated_by_last_action
|
318
318
|
end
|
319
319
|
|
320
|
-
it "updates a scheduled task to run every 5 hrs when frequency
|
320
|
+
it "updates a scheduled task to run every 5 hrs when frequency modifier updated to 5" do
|
321
321
|
subject.run_action(:create)
|
322
322
|
current_resource = call_for_load_current_resource
|
323
323
|
trigger_details = current_resource.task.trigger(0)
|
324
324
|
expect(trigger_details[:minutes_interval]).to eq(180)
|
325
|
-
# updating frequency
|
325
|
+
# updating frequency modifier to 5 from 3
|
326
326
|
subject.frequency_modifier 5
|
327
327
|
subject.run_action(:create)
|
328
328
|
expect(subject).to be_updated_by_last_action
|
@@ -501,7 +501,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
501
501
|
|
502
502
|
it "raises argument error if frequency_modifier is 'first, second' and day is not provided." do
|
503
503
|
subject.frequency_modifier "first, second"
|
504
|
-
expect { subject.after_created }.to raise_error("Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be
|
504
|
+
expect { subject.after_created }.to raise_error("Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma.")
|
505
505
|
end
|
506
506
|
|
507
507
|
it "raises argument error if months is passed along with frequency_modifier" do
|
@@ -513,13 +513,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
513
513
|
it "not raises any Argument error if frequency_modifier set as 'first, second, third' and day is provided" do
|
514
514
|
subject.frequency_modifier "first, second, third"
|
515
515
|
subject.day "Mon, Fri"
|
516
|
-
expect { subject.after_created }.not_to raise_error
|
516
|
+
expect { subject.after_created }.not_to raise_error
|
517
517
|
end
|
518
518
|
|
519
519
|
it "not raises any Argument error if frequency_modifier 2 " do
|
520
520
|
subject.frequency_modifier 2
|
521
521
|
subject.day "Mon, Sun"
|
522
|
-
expect { subject.after_created }.not_to raise_error
|
522
|
+
expect { subject.after_created }.not_to raise_error
|
523
523
|
end
|
524
524
|
|
525
525
|
it "raises argument error if frequency_modifier > 12" do
|
@@ -532,10 +532,10 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
532
532
|
expect { subject.after_created }.to raise_error("frequency_modifier value 0 is invalid. Valid values for :monthly frequency are 1 - 12, 'FIRST', 'SECOND', 'THIRD', 'FOURTH', 'LAST'.")
|
533
533
|
end
|
534
534
|
|
535
|
-
it "creates scheduled task to run task monthly on Monday and Friday of first, second and
|
535
|
+
it "creates scheduled task to run task monthly on Monday and Friday of first, second and third week of month" do
|
536
536
|
subject.frequency_modifier "first, second, third"
|
537
537
|
subject.day "Mon, Fri"
|
538
|
-
expect { subject.after_created }.not_to raise_error
|
538
|
+
expect { subject.after_created }.not_to raise_error
|
539
539
|
call_for_create_action
|
540
540
|
current_resource = call_for_load_current_resource
|
541
541
|
expect(current_resource.exists).to eq(true)
|
@@ -558,7 +558,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
558
558
|
it "creates scheduled task to run task monthly on every 6 months when frequency_modifier is 6 and to run on 1st and 2nd day of month" do
|
559
559
|
subject.frequency_modifier 6
|
560
560
|
subject.day "1, 2"
|
561
|
-
expect { subject.after_created }.not_to raise_error
|
561
|
+
expect { subject.after_created }.not_to raise_error
|
562
562
|
call_for_create_action
|
563
563
|
current_resource = call_for_load_current_resource
|
564
564
|
expect(current_resource.exists).to eq(true)
|
@@ -590,7 +590,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
590
590
|
|
591
591
|
it "creates scheduled task to run monthly to run last day of the month" do
|
592
592
|
subject.day "last"
|
593
|
-
expect { subject.after_created }.not_to raise_error
|
593
|
+
expect { subject.after_created }.not_to raise_error
|
594
594
|
call_for_create_action
|
595
595
|
current_resource = call_for_load_current_resource
|
596
596
|
expect(current_resource.exists).to eq(true)
|
@@ -611,7 +611,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
611
611
|
|
612
612
|
it "day property set as 'lastday' creates scheduled task to run monthly to run last day of the month" do
|
613
613
|
subject.day "lastday"
|
614
|
-
expect { subject.after_created }.not_to raise_error
|
614
|
+
expect { subject.after_created }.not_to raise_error
|
615
615
|
call_for_create_action
|
616
616
|
current_resource = call_for_load_current_resource
|
617
617
|
expect(current_resource.exists).to eq(true)
|
@@ -635,7 +635,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
635
635
|
it "creates scheduled task to run monthly on last week of the month" do
|
636
636
|
subject.frequency_modifier "last"
|
637
637
|
subject.day "Mon, Fri"
|
638
|
-
expect { subject.after_created }.not_to raise_error
|
638
|
+
expect { subject.after_created }.not_to raise_error
|
639
639
|
call_for_create_action
|
640
640
|
current_resource = call_for_load_current_resource
|
641
641
|
expect(current_resource.exists).to eq(true)
|
@@ -659,7 +659,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
659
659
|
context "when wild card (*) set as months" do
|
660
660
|
it "creates the scheduled task to run on 1st day of the all months" do
|
661
661
|
subject.months "*"
|
662
|
-
expect { subject.after_created }.not_to raise_error
|
662
|
+
expect { subject.after_created }.not_to raise_error
|
663
663
|
call_for_create_action
|
664
664
|
current_resource = call_for_load_current_resource
|
665
665
|
expect(current_resource.exists).to eq(true)
|
@@ -30,6 +30,7 @@ describe "knife config use-profile", :workstation do
|
|
30
30
|
knife("config", "use-profile", *cmd_args, instance_filter: lambda { |instance|
|
31
31
|
# Fake the failsafe check because this command doesn't actually process knife.rb.
|
32
32
|
$__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
|
33
|
+
allow(File).to receive(:file?).and_call_original
|
33
34
|
})
|
34
35
|
end
|
35
36
|
|
@@ -73,15 +74,56 @@ describe "knife config use-profile", :workstation do
|
|
73
74
|
|
74
75
|
context "with an argument" do
|
75
76
|
let(:cmd_args) { %w{production} }
|
77
|
+
before { file(".chef/credentials", <<~EOH) }
|
78
|
+
[production]
|
79
|
+
client_name = "testuser"
|
80
|
+
client_key = "testkey.pem"
|
81
|
+
chef_server_url = "https://example.com/organizations/testorg"
|
82
|
+
EOH
|
76
83
|
it do
|
77
84
|
is_expected.to eq "Set default profile to production\n"
|
78
85
|
expect(File.read(path_to(".chef/context"))).to eq "production\n"
|
79
86
|
end
|
80
87
|
end
|
81
88
|
|
89
|
+
context "with no credentials file" do
|
90
|
+
let(:cmd_args) { %w{production} }
|
91
|
+
subject { knife_use_profile.stderr }
|
92
|
+
it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
|
93
|
+
end
|
94
|
+
|
95
|
+
context "with an empty credentials file" do
|
96
|
+
let(:cmd_args) { %w{production} }
|
97
|
+
before { file(".chef/credentials", "") }
|
98
|
+
subject { knife_use_profile.stderr }
|
99
|
+
it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
|
100
|
+
end
|
101
|
+
|
102
|
+
context "with an wrong argument" do
|
103
|
+
let(:cmd_args) { %w{staging} }
|
104
|
+
before { file(".chef/credentials", <<~EOH) }
|
105
|
+
[production]
|
106
|
+
client_name = "testuser"
|
107
|
+
client_key = "testkey.pem"
|
108
|
+
chef_server_url = "https://example.com/organizations/testorg"
|
109
|
+
EOH
|
110
|
+
subject { knife_use_profile }
|
111
|
+
it { expect { subject }.to raise_error ChefConfig::ConfigurationError, "Profile staging doesn't exist. Please add it to #{path_to(".chef/credentials")} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles." }
|
112
|
+
end
|
113
|
+
|
82
114
|
context "with $CHEF_HOME" do
|
83
115
|
let(:cmd_args) { %w{staging} }
|
84
|
-
before
|
116
|
+
before do
|
117
|
+
ENV["CHEF_HOME"] = path_to("chefhome"); file("chefhome/tmp", "")
|
118
|
+
file("chefhome/.chef/credentials", <<~EOH
|
119
|
+
[staging]
|
120
|
+
client_name = "testuser"
|
121
|
+
client_key = "testkey.pem"
|
122
|
+
chef_server_url = "https://example.com/organizations/testorg"
|
123
|
+
EOH
|
124
|
+
)
|
125
|
+
end
|
126
|
+
|
85
127
|
it do
|
86
128
|
is_expected.to eq "Set default profile to staging\n"
|
87
129
|
expect(File.read(path_to("chefhome/.chef/context"))).to eq "staging\n"
|
@@ -91,7 +133,18 @@ describe "knife config use-profile", :workstation do
|
|
91
133
|
|
92
134
|
context "with $KNIFE_HOME" do
|
93
135
|
let(:cmd_args) { %w{development} }
|
94
|
-
|
136
|
+
|
137
|
+
before do
|
138
|
+
ENV["KNIFE_HOME"] = path_to("knifehome"); file("knifehome/tmp", "")
|
139
|
+
file("knifehome/.chef/credentials", <<~EOH
|
140
|
+
[development]
|
141
|
+
client_name = "testuser"
|
142
|
+
client_key = "testkey.pem"
|
143
|
+
chef_server_url = "https://example.com/organizations/testorg"
|
144
|
+
EOH
|
145
|
+
)
|
146
|
+
end
|
147
|
+
|
95
148
|
it do
|
96
149
|
is_expected.to eq "Set default profile to development\n"
|
97
150
|
expect(File.read(path_to("knifehome/.chef/context"))).to eq "development\n"
|