chef 16.3.45-universal-mingw32 → 16.4.35-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/chef-universal-mingw32.gemspec +0 -1
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +1 -1
- data/lib/chef/application/apply.rb +5 -5
- data/lib/chef/application/windows_service.rb +27 -27
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/client.rb +11 -11
- data/lib/chef/data_collector/run_end_message.rb +11 -1
- data/lib/chef/dsl/platform_introspection.rb +8 -8
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/exceptions.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/http.rb +2 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +2 -2
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +23 -23
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +32 -24
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/ssh.rb +6 -6
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/deep_merge.rb +35 -6
- data/lib/chef/mixin/openssl_helper.rb +3 -1
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/platform/service_helpers.rb +1 -1
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/git.rb +5 -5
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +1 -1
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/route.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +9 -9
- data/lib/chef/provider/windows_task.rb +0 -3
- data/lib/chef/provider/zypper_repository.rb +0 -1
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/recipe.rb +1 -1
- data/lib/chef/resource.rb +6 -10
- data/lib/chef/resource/apt_repository.rb +1 -10
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +13 -13
- data/lib/chef/resource/execute.rb +2 -3
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/openssl_dhparam.rb +2 -0
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +24 -21
- data/lib/chef/resource/openssl_x509_crl.rb +2 -0
- data/lib/chef/resource/openssl_x509_request.rb +23 -20
- data/lib/chef/resource/osx_profile.rb +227 -5
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/sudo.rb +1 -1
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/windows_ad_join.rb +2 -0
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +2 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +10 -7
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +4 -2
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +17 -18
- data/lib/chef/resource/windows_printer_port.rb +14 -13
- data/lib/chef/resource/windows_security_policy.rb +2 -0
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +2 -0
- data/lib/chef/resource/windows_workgroup.rb +2 -3
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +20 -20
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +11 -11
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/group_spec.rb +6 -6
- data/spec/functional/resource/insserv_spec.rb +4 -4
- data/spec/functional/resource/link_spec.rb +20 -20
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
- data/spec/functional/run_lock_spec.rb +24 -24
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_get_profile_spec.rb +69 -68
- data/spec/integration/knife/config_get_spec.rb +126 -125
- data/spec/integration/knife/config_list_profiles_spec.rb +181 -180
- data/spec/integration/knife/config_use_profile_spec.rb +110 -109
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/spec_helper.rb +6 -6
- data/spec/support/platform_helpers.rb +9 -9
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -20
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/unit/data_collector_spec.rb +22 -0
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/knife/bootstrap_spec.rb +14 -14
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +6 -2
- data/spec/unit/node_spec.rb +5 -5
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/execute_spec.rb +113 -118
- data/spec/unit/resource/osx_profile_spec.rb +233 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/role_spec.rb +11 -11
- data/tasks/rspec.rb +1 -1
- metadata +7 -22
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -22,92 +22,93 @@ describe "knife config get-profile", :workstation do
|
|
22
22
|
include KnifeSupport
|
23
23
|
|
24
24
|
include_context "default config options"
|
25
|
-
include_context "with a chef repo"
|
26
25
|
|
27
26
|
let(:cmd_args) { [] }
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
around do |ex|
|
38
|
-
# Store and reset the value of some env vars.
|
39
|
-
old_chef_home = ENV["CHEF_HOME"]
|
40
|
-
old_knife_home = ENV["KNIFE_HOME"]
|
41
|
-
old_home = ENV["HOME"]
|
42
|
-
old_wd = Dir.pwd
|
43
|
-
ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME"
|
44
|
-
# Clear these out because they are cached permanently.
|
45
|
-
ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
|
46
|
-
Chef::Knife::ConfigGetProfile.reset_config_loader!
|
47
|
-
begin
|
48
|
-
ex.run
|
49
|
-
ensure
|
50
|
-
ENV["CHEF_HOME"] = old_chef_home
|
51
|
-
ENV["KNIFE_HOME"] = old_knife_home
|
52
|
-
ENV["HOME"] = old_home
|
53
|
-
Dir.chdir(old_wd)
|
54
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
55
|
-
ChefConfig::PathHelper.per_tool_home_environment = nil
|
28
|
+
when_the_repository("has a custom env") do
|
29
|
+
subject do
|
30
|
+
cmd = knife("config", "get-profile", *cmd_args, instance_filter: lambda { |instance|
|
31
|
+
# Fake the failsafe check because this command doesn't actually process knife.rb.
|
32
|
+
$__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
|
33
|
+
})
|
34
|
+
cmd.stdout
|
56
35
|
end
|
57
|
-
end
|
58
|
-
|
59
|
-
before do
|
60
|
-
# Always run from the temp folder. This can't be in the `around` block above
|
61
|
-
# because it has to run after the before set in the "with a chef repo" shared context.
|
62
|
-
directory("repo")
|
63
|
-
Dir.chdir(path_to("repo"))
|
64
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
65
|
-
ENV["HOME"] = path_to(".")
|
66
|
-
end
|
67
|
-
|
68
|
-
context "with no configuration" do
|
69
|
-
it { is_expected.to eq "default\n" }
|
70
|
-
end
|
71
36
|
|
72
|
-
context "with --profile" do
|
73
|
-
let(:cmd_args) { %w{--profile production} }
|
74
|
-
it { is_expected.to eq "production\n" }
|
75
|
-
end
|
76
|
-
|
77
|
-
context "with an environment variable" do
|
78
37
|
around do |ex|
|
79
|
-
|
38
|
+
# Store and reset the value of some env vars.
|
39
|
+
old_chef_home = ENV["CHEF_HOME"]
|
40
|
+
old_knife_home = ENV["KNIFE_HOME"]
|
41
|
+
old_home = ENV["HOME"]
|
42
|
+
old_wd = Dir.pwd
|
43
|
+
ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME"
|
44
|
+
# Clear these out because they are cached permanently.
|
45
|
+
ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
|
46
|
+
Chef::Knife::ConfigGetProfile.reset_config_loader!
|
80
47
|
begin
|
81
|
-
ENV["CHEF_PROFILE"] = "staging"
|
82
48
|
ex.run
|
83
49
|
ensure
|
84
|
-
ENV["
|
50
|
+
ENV["CHEF_HOME"] = old_chef_home
|
51
|
+
ENV["KNIFE_HOME"] = old_knife_home
|
52
|
+
ENV["HOME"] = old_home
|
53
|
+
Dir.chdir(old_wd)
|
54
|
+
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
55
|
+
ChefConfig::PathHelper.per_tool_home_environment = nil
|
85
56
|
end
|
86
57
|
end
|
87
58
|
|
88
|
-
|
89
|
-
|
59
|
+
before do
|
60
|
+
# Always run from the temp folder. This can't be in the `around` block above
|
61
|
+
# because it has to run after the before set in the "with a chef repo" shared context.
|
62
|
+
directory("repo")
|
63
|
+
Dir.chdir(path_to("repo"))
|
64
|
+
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
65
|
+
ENV["HOME"] = path_to(".")
|
66
|
+
end
|
90
67
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
68
|
+
context "with no configuration" do
|
69
|
+
it { is_expected.to eq "default\n" }
|
70
|
+
end
|
95
71
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
ENV["CHEF_HOME"] = path_to("chefhome")
|
72
|
+
context "with --profile" do
|
73
|
+
let(:cmd_args) { %w{--profile production} }
|
74
|
+
it { is_expected.to eq "production\n" }
|
100
75
|
end
|
101
76
|
|
102
|
-
|
103
|
-
|
77
|
+
context "with an environment variable" do
|
78
|
+
around do |ex|
|
79
|
+
old_chef_profile = ENV["CHEF_PROFILE"]
|
80
|
+
begin
|
81
|
+
ENV["CHEF_PROFILE"] = "staging"
|
82
|
+
ex.run
|
83
|
+
ensure
|
84
|
+
ENV["CHEF_PROFILE"] = old_chef_profile
|
85
|
+
end
|
86
|
+
end
|
104
87
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
88
|
+
it { is_expected.to eq "staging\n" }
|
89
|
+
end
|
90
|
+
|
91
|
+
context "with a context file" do
|
92
|
+
before { file(".chef/context", "development\n") }
|
93
|
+
it { is_expected.to eq "development\n" }
|
109
94
|
end
|
110
95
|
|
111
|
-
|
96
|
+
context "with a context file under $CHEF_HOME" do
|
97
|
+
before do
|
98
|
+
file("chefhome/.chef/context", "other\n")
|
99
|
+
ENV["CHEF_HOME"] = path_to("chefhome")
|
100
|
+
end
|
101
|
+
|
102
|
+
it { is_expected.to eq "other\n" }
|
103
|
+
end
|
104
|
+
|
105
|
+
context "with a context file under $KNIFE_HOME" do
|
106
|
+
before do
|
107
|
+
file("knifehome/.chef/context", "other\n")
|
108
|
+
ENV["KNIFE_HOME"] = path_to("knifehome")
|
109
|
+
end
|
110
|
+
|
111
|
+
it { is_expected.to eq "other\n" }
|
112
|
+
end
|
112
113
|
end
|
113
114
|
end
|
@@ -22,170 +22,171 @@ describe "knife config get", :workstation do
|
|
22
22
|
include KnifeSupport
|
23
23
|
|
24
24
|
include_context "default config options"
|
25
|
-
include_context "with a chef repo"
|
26
25
|
|
27
26
|
let(:cmd_args) { [] }
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
28
|
+
when_the_repository("has a custom env") do
|
29
|
+
subject do
|
30
|
+
cmd = knife("config", "get", *cmd_args, instance_filter: lambda { |instance|
|
31
|
+
# Clear the stub set up in KnifeSupport.
|
32
|
+
allow(File).to receive(:file?).and_call_original
|
33
|
+
# Lies, damn lies, and config files. We need to allow normal config loading
|
34
|
+
# behavior to be able to test stuff.
|
35
|
+
instance.config.delete(:config_file)
|
36
|
+
$__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
|
37
|
+
})
|
38
|
+
cmd.stdout
|
39
|
+
end
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
41
|
+
around do |ex|
|
42
|
+
# Store and reset the value of some env vars.
|
43
|
+
old_chef_home = ENV["CHEF_HOME"]
|
44
|
+
old_knife_home = ENV["KNIFE_HOME"]
|
45
|
+
old_home = ENV["HOME"]
|
46
|
+
old_wd = Dir.pwd
|
47
|
+
ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME"
|
48
|
+
# Clear these out because they are cached permanently.
|
49
|
+
ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
|
50
|
+
Chef::Knife::ConfigGet.reset_config_loader!
|
51
|
+
begin
|
52
|
+
ex.run
|
53
|
+
ensure
|
54
|
+
ENV["CHEF_HOME"] = old_chef_home
|
55
|
+
ENV["KNIFE_HOME"] = old_knife_home
|
56
|
+
ENV["HOME"] = old_home
|
57
|
+
Dir.chdir(old_wd)
|
58
|
+
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
59
|
+
ChefConfig::PathHelper.per_tool_home_environment = nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
before do
|
64
|
+
# Always run from the temp folder. This can't be in the `around` block above
|
65
|
+
# because it has to run after the before set in the "with a chef repo" shared context.
|
66
|
+
directory("repo")
|
67
|
+
Dir.chdir(path_to("repo"))
|
58
68
|
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
59
|
-
|
69
|
+
ENV["HOME"] = path_to(".")
|
60
70
|
end
|
61
|
-
end
|
62
71
|
|
63
|
-
|
64
|
-
|
65
|
-
# because it has to run after the before set in the "with a chef repo" shared context.
|
66
|
-
directory("repo")
|
67
|
-
Dir.chdir(path_to("repo"))
|
68
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
69
|
-
ENV["HOME"] = path_to(".")
|
70
|
-
end
|
72
|
+
context "with a global knife.rb" do
|
73
|
+
before { file(".chef/knife.rb", "node_name 'one'\n") }
|
71
74
|
|
72
|
-
|
73
|
-
|
75
|
+
it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/.chef/knife.rb$}) }
|
76
|
+
it { is_expected.to match(/^node_name:\s+one$/) }
|
77
|
+
end
|
74
78
|
|
75
|
-
|
76
|
-
|
77
|
-
end
|
79
|
+
context "with a repo knife.rb" do
|
80
|
+
before { file("repo/.chef/knife.rb", "node_name 'two'\n") }
|
78
81
|
|
79
|
-
|
80
|
-
|
82
|
+
it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/repo/.chef/knife.rb$}) }
|
83
|
+
it { is_expected.to match(/^node_name:\s+two$/) }
|
84
|
+
end
|
81
85
|
|
82
|
-
|
83
|
-
|
84
|
-
|
86
|
+
context "with both knife.rb" do
|
87
|
+
before do
|
88
|
+
file(".chef/knife.rb", "node_name 'one'\n")
|
89
|
+
file("repo/.chef/knife.rb", "node_name 'two'\n")
|
90
|
+
end
|
85
91
|
|
86
|
-
|
87
|
-
|
88
|
-
file(".chef/knife.rb", "node_name 'one'\n")
|
89
|
-
file("repo/.chef/knife.rb", "node_name 'two'\n")
|
92
|
+
it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/repo/.chef/knife.rb$}) }
|
93
|
+
it { is_expected.to match(/^node_name:\s+two$/) }
|
90
94
|
end
|
91
95
|
|
92
|
-
|
93
|
-
|
94
|
-
end
|
96
|
+
context "with a credentials file" do
|
97
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
95
98
|
|
96
|
-
|
97
|
-
|
99
|
+
it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/.chef/credentials$}) }
|
100
|
+
it { is_expected.to match(/^node_name:\s+three$/) }
|
101
|
+
end
|
98
102
|
|
99
|
-
|
100
|
-
|
101
|
-
|
103
|
+
context "with a credentials file and knife.rb" do
|
104
|
+
before do
|
105
|
+
file(".chef/knife.rb", "node_name 'one'\n")
|
106
|
+
file(".chef/credentials", "[default]\nclient_name = \"three\"\n")
|
107
|
+
end
|
102
108
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
file(".chef/credentials", "[default]\nclient_name = \"three\"\n")
|
109
|
+
it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/.chef/knife.rb$}) }
|
110
|
+
it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/.chef/credentials$}) }
|
111
|
+
it { is_expected.to match(/^node_name:\s+one$/) }
|
107
112
|
end
|
108
113
|
|
109
|
-
|
110
|
-
|
111
|
-
it { is_expected.to match(/^node_name:\s+one$/) }
|
112
|
-
end
|
114
|
+
context "with a config dot d files" do
|
115
|
+
before { file(".chef/config.d/abc.rb", "node_name 'one'\n") }
|
113
116
|
|
114
|
-
|
115
|
-
|
117
|
+
it { is_expected.to match(%r{^Loading from .d/ configuration file .*/#{File.basename(path_to("."))}/.chef/config.d/abc.rb$}) }
|
118
|
+
it { is_expected.to match(/^node_name:\s+one$/) }
|
119
|
+
end
|
116
120
|
|
117
|
-
|
118
|
-
|
119
|
-
|
121
|
+
context "with a credentials file and CHEF_HOME" do
|
122
|
+
before do
|
123
|
+
file(".chef/credentials", "[default]\nclient_name = \"three\"\n")
|
124
|
+
file("foo/.chef/credentials", "[default]\nclient_name = \"four\"\n")
|
125
|
+
ENV["CHEF_HOME"] = path_to("foo")
|
126
|
+
end
|
120
127
|
|
121
|
-
|
122
|
-
|
123
|
-
file(".chef/credentials", "[default]\nclient_name = \"three\"\n")
|
124
|
-
file("foo/.chef/credentials", "[default]\nclient_name = \"four\"\n")
|
125
|
-
ENV["CHEF_HOME"] = path_to("foo")
|
128
|
+
it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/foo/.chef/credentials$}) }
|
129
|
+
it { is_expected.to match(/^node_name:\s+four$/) }
|
126
130
|
end
|
127
131
|
|
128
|
-
|
129
|
-
|
130
|
-
|
132
|
+
context "with a credentials file and KNIFE_HOME" do
|
133
|
+
before do
|
134
|
+
file(".chef/credentials", "[default]\nclient_name = \"three\"\n")
|
135
|
+
file("bar/.chef/credentials", "[default]\nclient_name = \"four\"\n")
|
136
|
+
ENV["KNIFE_HOME"] = path_to("bar")
|
137
|
+
end
|
131
138
|
|
132
|
-
|
133
|
-
|
134
|
-
file(".chef/credentials", "[default]\nclient_name = \"three\"\n")
|
135
|
-
file("bar/.chef/credentials", "[default]\nclient_name = \"four\"\n")
|
136
|
-
ENV["KNIFE_HOME"] = path_to("bar")
|
139
|
+
it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/bar/.chef/credentials$}) }
|
140
|
+
it { is_expected.to match(/^node_name:\s+four$/) }
|
137
141
|
end
|
138
142
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
context "with single argument" do
|
144
|
-
let(:cmd_args) { %w{node_name} }
|
145
|
-
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
143
|
+
context "with single argument" do
|
144
|
+
let(:cmd_args) { %w{node_name} }
|
145
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
146
146
|
|
147
|
-
|
148
|
-
|
147
|
+
it { is_expected.to match(/^node_name:\s+three\Z/) }
|
148
|
+
end
|
149
149
|
|
150
|
-
|
151
|
-
|
152
|
-
|
150
|
+
context "with two arguments" do
|
151
|
+
let(:cmd_args) { %w{node_name client_key} }
|
152
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\nclient_key = \"three.pem\"") }
|
153
153
|
|
154
|
-
|
155
|
-
|
154
|
+
it { is_expected.to match(%r{^client_key:\s+\S*/.chef/three.pem\nnode_name:\s+three\Z}) }
|
155
|
+
end
|
156
156
|
|
157
|
-
|
158
|
-
|
159
|
-
|
157
|
+
context "with a dotted argument" do
|
158
|
+
let(:cmd_args) { %w{knife.ssh_user} }
|
159
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n[default.knife]\nssh_user = \"foo\"\n") }
|
160
160
|
|
161
|
-
|
162
|
-
|
161
|
+
it { is_expected.to match(/^knife.ssh_user:\s+foo\Z/) }
|
162
|
+
end
|
163
163
|
|
164
|
-
|
165
|
-
|
166
|
-
|
164
|
+
context "with regex argument" do
|
165
|
+
let(:cmd_args) { %w{/name/} }
|
166
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
167
167
|
|
168
|
-
|
169
|
-
|
168
|
+
it { is_expected.to match(/^node_name:\s+three\Z/) }
|
169
|
+
end
|
170
170
|
|
171
|
-
|
172
|
-
|
173
|
-
|
171
|
+
context "with --all" do
|
172
|
+
let(:cmd_args) { %w{-a /key_contents/} }
|
173
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
174
174
|
|
175
|
-
|
176
|
-
|
175
|
+
it { is_expected.to match(/^client_key_contents:\s+\nvalidation_key_contents:\s+\Z/) }
|
176
|
+
end
|
177
177
|
|
178
|
-
|
179
|
-
|
180
|
-
|
178
|
+
context "with --raw" do
|
179
|
+
let(:cmd_args) { %w{-r node_name} }
|
180
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
181
181
|
|
182
|
-
|
183
|
-
|
182
|
+
it { is_expected.to eq("three\n") }
|
183
|
+
end
|
184
184
|
|
185
|
-
|
186
|
-
|
187
|
-
|
185
|
+
context "with --format=json" do
|
186
|
+
let(:cmd_args) { %w{--format=json node_name} }
|
187
|
+
before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") }
|
188
188
|
|
189
|
-
|
189
|
+
it { expect(JSON.parse(subject)).to eq({ "node_name" => "three" }) }
|
190
|
+
end
|
190
191
|
end
|
191
192
|
end
|