Skip to content

Commit

Permalink
voxpupuli#134 Added feature for purging unmanaged firewalld zones
Browse files Browse the repository at this point in the history
  • Loading branch information
yachub committed Jan 13, 2020
1 parent 3de2523 commit a21fc9f
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class { 'firewalld': }
* `purge_direct_rules`: True or false, whether to purge [firewalld direct rules](#firewalld-direct-rules)
* `purge_direct_chains`: True or false, whether to purge [firewalld direct chains](#firewalld-direct-chains)
* `purge_direct_passthroughs`: True or false, whether to purge [firewalld direct passthroughs](#firewalld-direct-passthroughs)
* `purge_zones`: True or false, whether to purge unmanaged firewalld zones (default: false)



Expand Down
26 changes: 25 additions & 1 deletion lib/puppet/provider/firewalld_zone/firewall_cmd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,31 @@
) do
desc 'Interact with firewall-cmd'

mk_resource_methods

def self.instances
zones = execute_firewall_cmd(['--get-zones'], nil).split(' ')
zones.map do |zone|
debug("Zone: #{zone}")
new(
{
ensure: :present,
name: zone,
}
)
end
end

def self.prefetch(resources)
instances.each do |prov|
if (resource = resources[prov.name])
resource.provider = prov
end
end
end

def exists?
@property_hash[:ensure] == :present
@resource[:zone] = @resource[:name]
execute_firewall_cmd(['--get-zones'], nil).split(' ').include?(@resource[:name])
end
Expand All @@ -35,7 +59,7 @@ def target
# The firewall-cmd may or may not return the target surrounded by
# %% depending on the version. See:
# https://github.com/crayfishx/puppet-firewalld/issues/111
return @resource[:target] if @resource[:target].delete('%') == zone_target
return @resource[:target] if @resource[:target].delete('%') == zone_target unless @resource[:target].nil?
zone_target
end

Expand Down
8 changes: 8 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
Boolean $purge_direct_chains = false,
Boolean $purge_direct_passthroughs = false,
Boolean $purge_unknown_ipsets = false,
Boolean $purge_zones = false,
Optional[String] $default_zone = undef,
Optional[Enum['off','all','unicast','broadcast','multicast']] $log_denied = undef,
Optional[Enum['yes', 'no']] $cleanup_on_exit = undef,
Expand Down Expand Up @@ -255,4 +256,11 @@
purge => true,
}
}

if $purge_zones {
resources { 'firewalld_zone':
purge => true,
notify => Exec['firewalld::reload'],
}
}
}
8 changes: 7 additions & 1 deletion spec/classes/init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
purge_direct_rules: true,
purge_direct_chains: true,
purge_direct_passthroughs: true,
purge_unknown_ipsets: true
purge_unknown_ipsets: true,
purge_zones: true
}
end

Expand All @@ -51,6 +52,11 @@
is_expected.to contain_resources('firewalld_ipset').
with_purge(true)
end

it do
is_expected.to contain_resources('firewalld_zone').
with_purge(true)
end
end

context 'with parameter ports' do
Expand Down

0 comments on commit a21fc9f

Please sign in to comment.