Skip to content

Commit

Permalink
feat(panos_vlan): Add network resource module states
Browse files Browse the repository at this point in the history
  • Loading branch information
shinmog committed Jul 26, 2022
1 parent 532c36c commit abe3977
Showing 1 changed file with 7 additions and 68 deletions.
75 changes: 7 additions & 68 deletions plugins/modules/panos_vlan.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
- pandevice
extends_documentation_fragment:
- paloaltonetworks.panos.fragments.transitional_provider
- paloaltonetworks.panos.fragments.state
- paloaltonetworks.panos.fragments.network_resource_module_state
- paloaltonetworks.panos.fragments.vsys_import
- paloaltonetworks.panos.fragments.full_template_support
notes:
Expand Down Expand Up @@ -74,11 +74,9 @@
)

try:
from panos.errors import PanDeviceError
from panos.network import Vlan
except ImportError:
try:
from pandevice.errors import PanDeviceError
from pandevice.network import Vlan
except ImportError:
pass
Expand All @@ -89,12 +87,12 @@ def main():
vsys_importable=True,
template=True,
template_stack=True,
with_state=True,
with_network_resource_module_state=True,
with_classic_provider_spec=True,
argument_spec=dict(
name=dict(
required=True,
),
with_set_vsys_reference=True,
sdk_cls=Vlan,
sdk_params=dict(
name=dict(required=True),
interface=dict(type="list", elements="str"),
virtual_interface=dict(),
),
Expand All @@ -106,66 +104,7 @@ def main():
required_one_of=helper.required_one_of,
)

parent = helper.get_pandevice_parent(module)

spec = {
"name": module.params["name"],
"interface": module.params["interface"],
"virtual_interface": module.params["virtual_interface"],
}
obj = Vlan(**spec)

try:
listing = Vlan.refreshall(parent, matching_vsys=False)
except PanDeviceError as e:
module.fail_json(msg="Failed refresh: {0}".format(e))

reference_params = {
"refresh": True,
"update": not module.check_mode,
"return_type": "bool",
}
parent.add(obj)

changed = False
if module.params["state"] == "present":
for vlan in listing:
if vlan.name != obj.name:
continue
if not vlan.equal(obj, compare_children=False):
changed = True
obj.extend(vlan.children)
if not module.check_mode:
try:
obj.apply()
except PanDeviceError as e:
module.fail_json(msg="Failed apply: {0}".format(e))
break
else:
changed = True
if not module.check_mode:
try:
obj.create()
except PanDeviceError as e:
module.fail_json(msg="Failed create: {0}".format(e))
try:
changed |= obj.set_vsys(module.params["vsys"], **reference_params)
except PanDeviceError as e:
module.fail_json(msg="Failed setref: {0}".format(e))
elif module.params["state"] == "absent":
try:
changed |= obj.set_vsys(None, **reference_params)
except PanDeviceError as e:
module.fail_json(msg="Failed setref: {0}".format(e))
if obj.name in [x.name for x in listing]:
changed = True
if not module.check_mode:
try:
obj.delete()
except PanDeviceError as e:
module.fail_json(msg="Failed delete: {0}".format(e))

module.exit_json(changed=changed, msg="done")
helper.process(module)


if __name__ == "__main__":
Expand Down

0 comments on commit abe3977

Please sign in to comment.