summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2020-03-18 08:49:42 -0700
committerGitHub <noreply@github.com>2020-03-18 08:49:42 -0700
commit8459c5a06b5168e17680fce3f29a485e1c16f904 (patch)
treedbba3f839ce5b1257f2a98f637b9142c15cd8a9d
parentda6c80ea71906aa73c605c03bfd8d0b0092490e3 (diff)
parent1b0f23f759da51a4b31ed761b83af73795967d50 (diff)
downloadchef-8459c5a06b5168e17680fce3f29a485e1c16f904.tar.gz
Merge pull request #8729 from pschaumburg/ps/windows_firewall_rule-group
add group to windows_firewall_rule resource
-rw-r--r--lib/chef/resource/windows_firewall_rule.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/chef/resource/windows_firewall_rule.rb b/lib/chef/resource/windows_firewall_rule.rb
index a040bdb06b..42b3c031f6 100644
--- a/lib/chef/resource/windows_firewall_rule.rb
+++ b/lib/chef/resource/windows_firewall_rule.rb
@@ -37,6 +37,10 @@ class Chef
default: "Firewall rule",
description: "The description to assign to the firewall rule."
+ property :group, String,
+ description: "Specifies that only matching firewall rules of the indicated group association are copied.",
+ introduced: "15.9"
+
property :local_address, String,
description: "The local address the firewall rule applies to."
@@ -106,6 +110,7 @@ class Chef
else
state = Chef::JSONCompat.from_json(output.stdout)
end
+ group state["group"]
local_address state["local_address"]
local_port Array(state["local_port"]).sort
remote_address state["remote_address"]
@@ -129,6 +134,11 @@ class Chef
cmd = firewall_command("Set")
powershell_out!(cmd)
end
+ converge_if_changed :group do
+ powershell_out!("Remove-NetFirewallRule -Name '#{new_resource.rule_name}'")
+ cmd = firewall_command("New")
+ powershell_out!(cmd)
+ end
else
converge_by("create firewall rule #{new_resource.rule_name}") do
cmd = firewall_command("New")
@@ -155,6 +165,7 @@ class Chef
def firewall_command(cmdlet_type)
cmd = "#{cmdlet_type}-NetFirewallRule -Name '#{new_resource.rule_name}'"
cmd << " -DisplayName '#{new_resource.rule_name}'" if cmdlet_type == "New"
+ cmd << " -Group '#{new_resource.group}'" if new_resource.group && cmdlet_type == "New"
cmd << " -Description '#{new_resource.description}'" if new_resource.description
cmd << " -LocalAddress '#{new_resource.local_address}'" if new_resource.local_address
cmd << " -LocalPort '#{new_resource.local_port.join("', '")}'" if new_resource.local_port
@@ -189,6 +200,7 @@ class Chef
([PSCustomObject]@{
rule_name = $rule.Name
description = $rule.Description
+ group = $rule.Group
local_address = $addressFilter.LocalAddress
local_port = $portFilter.LocalPort
remote_address = $addressFilter.RemoteAddress