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
@@ -25,19 +25,31 @@ class Chef
|
|
25
25
|
provides :powershell_script, os: "windows"
|
26
26
|
|
27
27
|
property :flags, String,
|
28
|
-
description: "A string that is passed to the Windows PowerShell command"
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
description: "A string that is passed to the Windows PowerShell command"
|
29
|
+
|
30
|
+
property :convert_boolean_return, [true, false],
|
31
|
+
default: false,
|
32
|
+
description: <<~DESC
|
33
|
+
Return `0` if the last line of a command is evaluated to be true or to return `1` if the last line is evaluated to be false.
|
34
|
+
|
35
|
+
When the `guard_interpreter` common attribute is set to `:powershell_script`, a string command will be evaluated as if this value were set to `true`. This is because the behavior of this attribute is similar to the value of the `"$?"` expression common in UNIX interpreters. For example, this:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
powershell_script 'make_safe_backup' do
|
39
|
+
guard_interpreter :powershell_script
|
40
|
+
code 'cp ~/data/nodes.json ~/data/nodes.bak'
|
41
|
+
not_if 'test-path ~/data/nodes.bak'
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
is similar to:
|
46
|
+
```ruby
|
47
|
+
bash 'make_safe_backup' do
|
48
|
+
code 'cp ~/data/nodes.json ~/data/nodes.bak'
|
49
|
+
not_if 'test -e ~/data/nodes.bak'
|
39
50
|
end
|
40
|
-
|
51
|
+
```
|
52
|
+
DESC
|
41
53
|
|
42
54
|
description "Use the **powershell_script** resource to execute a script using the Windows PowerShell"\
|
43
55
|
" interpreter, much like how the script and script-based resources—bash, csh, perl, python,"\
|
@@ -52,15 +64,6 @@ class Chef
|
|
52
64
|
super
|
53
65
|
@interpreter = "powershell.exe"
|
54
66
|
@default_guard_interpreter = resource_name
|
55
|
-
@convert_boolean_return = false
|
56
|
-
end
|
57
|
-
|
58
|
-
def convert_boolean_return(arg = nil)
|
59
|
-
set_or_return(
|
60
|
-
:convert_boolean_return,
|
61
|
-
arg,
|
62
|
-
kind_of: [ FalseClass, TrueClass ]
|
63
|
-
)
|
64
67
|
end
|
65
68
|
|
66
69
|
# Allow callers evaluating guards to request default
|
@@ -73,15 +76,6 @@ class Chef
|
|
73
76
|
def self.get_default_attributes(opts)
|
74
77
|
{ convert_boolean_return: true }
|
75
78
|
end
|
76
|
-
|
77
|
-
# Options that will be passed to Windows PowerShell command
|
78
|
-
#
|
79
|
-
# @returns [String]
|
80
|
-
def default_flags
|
81
|
-
# Set InputFormat to None as PowerShell will hang if STDIN is redirected
|
82
|
-
# http://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is-redirected
|
83
|
-
"-NoLogo -NonInteractive -NoProfile -ExecutionPolicy Bypass -InputFormat None"
|
84
|
-
end
|
85
79
|
end
|
86
80
|
end
|
87
81
|
end
|
data/lib/chef/resource/sudo.rb
CHANGED
@@ -255,7 +255,7 @@ class Chef
|
|
255
255
|
end
|
256
256
|
|
257
257
|
def visudo_content(path)
|
258
|
-
if ::File.
|
258
|
+
if ::File.exist?(path)
|
259
259
|
"cat #{new_resource.config_prefix}/sudoers | #{new_resource.visudo_binary} -cf - && #{new_resource.visudo_binary} -cf %{path}"
|
260
260
|
else
|
261
261
|
"cat #{new_resource.config_prefix}/sudoers %{path} | #{new_resource.visudo_binary} -cf -"
|
data/lib/chef/resource/sysctl.rb
CHANGED
@@ -128,11 +128,11 @@ class Chef
|
|
128
128
|
end
|
129
129
|
|
130
130
|
load_current_value do
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
|
132
|
+
value get_sysctl_value(key)
|
133
|
+
rescue
|
134
|
+
current_value_does_not_exist!
|
135
|
+
|
136
136
|
end
|
137
137
|
|
138
138
|
action :apply do
|
@@ -82,6 +82,9 @@ class Chef
|
|
82
82
|
"User / Device Claims",
|
83
83
|
"User Account Management",
|
84
84
|
].freeze
|
85
|
+
|
86
|
+
unified_mode true
|
87
|
+
|
85
88
|
provides :windows_audit_policy
|
86
89
|
|
87
90
|
description "Use the **windows_audit_policy** resource to configure system level and per-user Windows advanced audit policy settings."
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsAutorun < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides(:windows_auto_run) { true }
|
25
27
|
|
26
28
|
description "Use the **windows_auto_run** resource to set applications to run at login."
|
@@ -26,6 +26,8 @@ require_relative "../dist"
|
|
26
26
|
class Chef
|
27
27
|
class Resource
|
28
28
|
class WindowsCertificate < Chef::Resource
|
29
|
+
unified_mode true
|
30
|
+
|
29
31
|
provides :windows_certificate
|
30
32
|
|
31
33
|
description "Use the **windows_certificate** resource to install a certificate into the Windows certificate store from a file. The resource grants read-only access to the private key for designated accounts. Due to current limitations in WinRM, installing certificates remotely may not work if the operation requires a user profile. Operations on the local machine store should still work."
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDfsFolder < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides :windows_dfs_folder
|
25
27
|
|
26
28
|
description "Use the **windows_dfs_folder** resource to creates a folder within DFS as many levels deep as required."
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDfsNamespace < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides :windows_dfs_namespace
|
25
27
|
|
26
28
|
description "Use the **windows_dfs_namespace** resource to creates a share and DFS namespace on a Windows server."
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDnsRecord < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides :windows_dns_record
|
25
27
|
|
26
28
|
description "The windows_dns_record resource creates a DNS record for the given domain."
|
@@ -54,10 +56,9 @@ class Chef
|
|
54
56
|
not_if new_resource.dns_server.casecmp?("localhost")
|
55
57
|
end
|
56
58
|
|
57
|
-
powershell_package "xDnsServer"
|
58
|
-
end
|
59
|
+
powershell_package "xDnsServer"
|
59
60
|
|
60
|
-
|
61
|
+
run_dsc_resource "Present"
|
61
62
|
end
|
62
63
|
|
63
64
|
action :delete do
|
@@ -67,14 +68,16 @@ class Chef
|
|
67
68
|
not_if new_resource.dns_server.casecmp?("localhost")
|
68
69
|
end
|
69
70
|
|
70
|
-
powershell_package "xDnsServer"
|
71
|
-
end
|
71
|
+
powershell_package "xDnsServer"
|
72
72
|
|
73
|
-
|
73
|
+
run_dsc_resource "Absent"
|
74
74
|
end
|
75
75
|
|
76
76
|
action_class do
|
77
|
-
|
77
|
+
private
|
78
|
+
|
79
|
+
# @api private
|
80
|
+
def run_dsc_resource(ensure_prop)
|
78
81
|
dsc_resource "xDnsRecord #{new_resource.record_name}.#{new_resource.zone} #{ensure_prop}" do
|
79
82
|
module_name "xDnsServer"
|
80
83
|
resource :xDnsRecord
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDnsZone < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides :windows_dns_zone
|
25
27
|
|
26
28
|
description "The windows_dns_zone resource creates an Active Directory Integrated DNS Zone on the local server."
|
@@ -41,21 +43,24 @@ class Chef
|
|
41
43
|
action :create do
|
42
44
|
description "Creates and updates a DNS Zone."
|
43
45
|
|
44
|
-
powershell_package "xDnsServer"
|
45
|
-
|
46
|
-
|
46
|
+
powershell_package "xDnsServer"
|
47
|
+
|
48
|
+
run_dsc_resource "Present"
|
47
49
|
end
|
48
50
|
|
49
51
|
action :delete do
|
50
52
|
description "Deletes a DNS Zone."
|
51
53
|
|
52
|
-
powershell_package "xDnsServer"
|
53
|
-
|
54
|
-
|
54
|
+
powershell_package "xDnsServer"
|
55
|
+
|
56
|
+
run_dsc_resource "Absent"
|
55
57
|
end
|
56
58
|
|
57
59
|
action_class do
|
58
|
-
|
60
|
+
private
|
61
|
+
|
62
|
+
# @api private
|
63
|
+
def run_dsc_resource(ensure_prop)
|
59
64
|
if new_resource.server_type == "Domain"
|
60
65
|
dsc_resource "xDnsServerADZone #{new_resource.zone_name} #{ensure_prop}" do
|
61
66
|
module_name "xDnsServer"
|
@@ -22,6 +22,8 @@ require_relative "../platform/query_helpers"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class WindowsFeatureDism < Chef::Resource
|
25
|
+
unified_mode true
|
26
|
+
|
25
27
|
provides(:windows_feature_dism) { true }
|
26
28
|
|
27
29
|
description "Use the **windows_feature_dism** resource to add, remove, or entirely delete Windows features and roles using DISM."
|
@@ -125,6 +127,8 @@ class Chef
|
|
125
127
|
end
|
126
128
|
|
127
129
|
action_class do
|
130
|
+
private
|
131
|
+
|
128
132
|
# @return [Array] features the user has requested to install which need installation
|
129
133
|
def features_to_install
|
130
134
|
@install ||= begin
|
@@ -171,6 +175,12 @@ class Chef
|
|
171
175
|
raise "The Windows feature#{"s" if unavailable.count > 1} #{unavailable.join(",")} #{unavailable.count > 1 ? "are" : "is"} not available on this version of Windows. Run 'dism /online /Get-Features' to see the list of available feature names." unless unavailable.empty?
|
172
176
|
end
|
173
177
|
|
178
|
+
#
|
179
|
+
# FIXME FIXME FIXME
|
180
|
+
# The node object should not be used for caching state like this and this is not a public API and may break.
|
181
|
+
# FIXME FIXME FIXME
|
182
|
+
#
|
183
|
+
|
174
184
|
# run dism.exe to get a list of all available features and their state
|
175
185
|
# and save that to the node at node.override level.
|
176
186
|
# We do this because getting a list of features in dism takes at least a second
|
@@ -23,6 +23,8 @@ require_relative "../platform/query_helpers"
|
|
23
23
|
class Chef
|
24
24
|
class Resource
|
25
25
|
class WindowsFeaturePowershell < Chef::Resource
|
26
|
+
unified_mode true
|
27
|
+
|
26
28
|
provides(:windows_feature_powershell) { true }
|
27
29
|
|
28
30
|
description "Use the **windows_feature_powershell** resource to add, remove, or entirely delete Windows features and roles using PowerShell. This resource offers significant speed benefits over the windows_feature_dism resource, but requires installation of the Remote Server Administration Tools on non-server releases of Windows."
|
@@ -141,8 +143,12 @@ class Chef
|
|
141
143
|
action_class do
|
142
144
|
# @return [Array] features the user has requested to install which need installation
|
143
145
|
def features_to_install
|
144
|
-
# the intersection of the features to install & disabled features are what needs installing
|
145
|
-
@
|
146
|
+
# the intersection of the features to install & disabled/removed features are what needs installing
|
147
|
+
@features_to_install ||= begin
|
148
|
+
features = node["powershell_features_cache"]["disabled"]
|
149
|
+
features |= node["powershell_features_cache"]["removed"] if new_resource.source
|
150
|
+
new_resource.feature_name & features
|
151
|
+
end
|
146
152
|
end
|
147
153
|
|
148
154
|
# @return [Array] features the user has requested to remove which need removing
|
@@ -182,6 +188,12 @@ class Chef
|
|
182
188
|
# @return [void]
|
183
189
|
def reload_cached_powershell_data
|
184
190
|
Chef::Log.debug("Caching Windows features available via Get-WindowsFeature.")
|
191
|
+
|
192
|
+
#
|
193
|
+
# FIXME FIXME FIXME
|
194
|
+
# The node object should not be used for caching state like this and this is not a public API and may break.
|
195
|
+
# FIXME FIXME FIXME
|
196
|
+
#
|
185
197
|
node.override["powershell_features_cache"] = Mash.new
|
186
198
|
node.override["powershell_features_cache"]["enabled"] = []
|
187
199
|
node.override["powershell_features_cache"]["disabled"] = []
|
@@ -19,6 +19,8 @@
|
|
19
19
|
class Chef
|
20
20
|
class Resource
|
21
21
|
class WindowsFirewallProfile < Chef::Resource
|
22
|
+
unified_mode true
|
23
|
+
|
22
24
|
provides :windows_firewall_profile
|
23
25
|
description "Use the **windows_firewall_profile** resource to enable, disable, and configure the Windows firewall."
|
24
26
|
introduced "16.3"
|
@@ -185,9 +187,9 @@ class Chef
|
|
185
187
|
} else {return $false}
|
186
188
|
CODE
|
187
189
|
firewall_status = powershell_out(cmd).stdout
|
188
|
-
if
|
190
|
+
if /True/.match?(firewall_status)
|
189
191
|
true
|
190
|
-
elsif
|
192
|
+
elsif /False/.match?(firewall_status)
|
191
193
|
false
|
192
194
|
end
|
193
195
|
end
|
@@ -24,6 +24,8 @@ require_relative "../json_compat"
|
|
24
24
|
class Chef
|
25
25
|
class Resource
|
26
26
|
class WindowsFirewallRule < Chef::Resource
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :windows_firewall_rule
|
28
30
|
|
29
31
|
description "Use the **windows_firewall_rule** resource to create, change or remove Windows firewall rules."
|
@@ -273,11 +275,11 @@ class Chef
|
|
273
275
|
requirements.assert(:create) do |a|
|
274
276
|
a.assertion do
|
275
277
|
if new_resource.icmp_type.is_a?(Integer)
|
276
|
-
(0..255).
|
278
|
+
(0..255).cover?(new_resource.icmp_type)
|
277
279
|
elsif new_resource.icmp_type.is_a?(String) && !new_resource.icmp_type.include?(":") && new_resource.protocol.start_with?("ICMP")
|
278
|
-
(0..255).
|
280
|
+
(0..255).cover?(new_resource.icmp_type.to_i)
|
279
281
|
elsif new_resource.icmp_type.is_a?(String) && new_resource.icmp_type.include?(":") && new_resource.protocol.start_with?("ICMP")
|
280
|
-
new_resource.icmp_type.split(":").all? { |type| (0..255).
|
282
|
+
new_resource.icmp_type.split(":").all? { |type| (0..255).cover?(type.to_i) }
|
281
283
|
else
|
282
284
|
true
|
283
285
|
end
|
@@ -21,6 +21,7 @@ class Chef
|
|
21
21
|
class Resource
|
22
22
|
class WindowsFont < Chef::Resource
|
23
23
|
require_relative "../util/path_helper"
|
24
|
+
unified_mode true
|
24
25
|
|
25
26
|
provides(:windows_font) { true }
|
26
27
|
|
@@ -98,8 +99,9 @@ class Chef
|
|
98
99
|
def font_exists?
|
99
100
|
require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
100
101
|
fonts_dir = WIN32OLE.new("WScript.Shell").SpecialFolders("Fonts")
|
102
|
+
fonts_dir_local = Chef::Util::PathHelper.join(ENV["home"], "AppData/Local/Microsoft/Windows/fonts")
|
101
103
|
logger.trace("Seeing if the font at #{Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)} exists")
|
102
|
-
::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name))
|
104
|
+
::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)) || ::File.exist?(Chef::Util::PathHelper.join(fonts_dir_local, new_resource.font_name))
|
103
105
|
end
|
104
106
|
|
105
107
|
# Parse out the schema provided to us to see if it's one we support via remote_file.
|
@@ -20,6 +20,8 @@ require_relative "../resource"
|
|
20
20
|
class Chef
|
21
21
|
class Resource
|
22
22
|
class WindowsPagefile < Chef::Resource
|
23
|
+
unified_mode true
|
24
|
+
|
23
25
|
provides(:windows_pagefile) { true }
|
24
26
|
|
25
27
|
description "Use the **windows_pagefile** resource to configure pagefile settings on Windows."
|
@@ -109,6 +111,8 @@ class Chef
|
|
109
111
|
end
|
110
112
|
|
111
113
|
action_class do
|
114
|
+
private
|
115
|
+
|
112
116
|
# make sure the provided name property matches the appropriate format
|
113
117
|
# we do this here and not in the property itself because if automatic_managed
|
114
118
|
# is set then this validation is not necessary / doesn't make sense at all
|
@@ -22,6 +22,8 @@ require_relative "../resource"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class WindowsPrinter < Chef::Resource
|
25
|
+
unified_mode true
|
26
|
+
|
25
27
|
require "resolv"
|
26
28
|
|
27
29
|
provides(:windows_printer) { true }
|
@@ -79,31 +81,17 @@ class Chef
|
|
79
81
|
validation_message: "The ipv4_address property must be in the IPv4 format of `WWW.XXX.YYY.ZZZ`",
|
80
82
|
regex: Resolv::IPv4::Regex
|
81
83
|
|
82
|
-
property :exists, [TrueClass, FalseClass],
|
83
|
-
skip_docs: true
|
84
|
-
|
85
84
|
PRINTERS_REG_KEY = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\\'.freeze unless defined?(PRINTERS_REG_KEY)
|
86
85
|
|
87
|
-
# does the printer exist
|
88
|
-
#
|
89
|
-
# @param [String] name the name of the printer
|
90
|
-
# @return [Boolean]
|
91
|
-
def printer_exists?(name)
|
92
|
-
printer_reg_key = PRINTERS_REG_KEY + name
|
93
|
-
logger.trace "Checking to see if this reg key exists: '#{printer_reg_key}'"
|
94
|
-
registry_key_exists?(printer_reg_key)
|
95
|
-
end
|
96
|
-
|
97
86
|
# @todo Set @current_resource printer properties from registry
|
98
87
|
load_current_value do |desired|
|
99
88
|
name desired.name
|
100
|
-
exists printer_exists?(desired.name)
|
101
89
|
end
|
102
90
|
|
103
91
|
action :create do
|
104
92
|
description "Create a new printer and a printer port if one doesn't already exist."
|
105
93
|
|
106
|
-
if
|
94
|
+
if printer_exists?
|
107
95
|
Chef::Log.info "#{@new_resource} already exists - nothing to do."
|
108
96
|
else
|
109
97
|
converge_by("Create #{@new_resource}") do
|
@@ -115,7 +103,7 @@ class Chef
|
|
115
103
|
action :delete do
|
116
104
|
description "Delete an existing printer. Note this does not delete the associated printer port."
|
117
105
|
|
118
|
-
if
|
106
|
+
if printer_exists?
|
119
107
|
converge_by("Delete #{@new_resource}") do
|
120
108
|
delete_printer
|
121
109
|
end
|
@@ -125,11 +113,22 @@ class Chef
|
|
125
113
|
end
|
126
114
|
|
127
115
|
action_class do
|
116
|
+
private
|
117
|
+
|
118
|
+
# does the printer exist
|
119
|
+
#
|
120
|
+
# @param [String] name the name of the printer
|
121
|
+
# @return [Boolean]
|
122
|
+
def printer_exists?
|
123
|
+
printer_reg_key = PRINTERS_REG_KEY + new_resource.name
|
124
|
+
logger.trace "Checking to see if this reg key exists: '#{printer_reg_key}'"
|
125
|
+
registry_key_exists?(printer_reg_key)
|
126
|
+
end
|
127
|
+
|
128
128
|
# creates the printer port and then the printer
|
129
129
|
def create_printer
|
130
130
|
# Create the printer port first
|
131
|
-
windows_printer_port new_resource.ipv4_address
|
132
|
-
end
|
131
|
+
windows_printer_port new_resource.ipv4_address
|
133
132
|
|
134
133
|
port_name = "IP_#{new_resource.ipv4_address}"
|
135
134
|
|