chef 16.3.45-universal-mingw32 → 16.4.35-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|