PaloAltoNetworks / pan-os-python

The PAN-OS SDK for Python is a package to help interact with Palo Alto Networks devices (including physical and virtualized Next-generation Firewalls and Panorama). The pan-os-python SDK is object oriented and mimics the traditional interaction with the device via the GUI or CLI/API.
https://pan-os-python.readthedocs.io
ISC License
339 stars 166 forks source link

default_icmp_type ApplicationObject incorrect vartype #560

Open Inbethath opened 3 months ago

Inbethath commented 3 months ago

Describe the bug

Failure to parse XML with refresh all on device groups.

Specifically the child object that fails is the ApplicationObject -> "default_icmp_type" VersionedParamPath.

This particular code piece fails:

elif self.vartype == "int":
    settings[self.param] = int(elm.text)

Under panos.base.ParamPath.parse_value_from_xml_last_tag line 3306.

The elm.text field fails to be translated to an integer with

Expected behavior

Parsing completes successfully.

Current behavior

`Traceback (most recent call last): File "c:\git\Pan_OS_Tests\env\Lib\site-packages\panos\base.py", line 3307, in parse_value_from_xml_last_tag settings[self.param] = int(elm.text) ^^^^^^^^^^^^^ ValueError: invalid literal for int() with base 10: '13,14'

Possible solution

Depending on how these params are handled downstream we can either:

  1. Handle the exception for this particular conversion and instead save it as a string ignoring param types
  2. Define appropriate param versions (set to None) for default_icmp_type for all affected Panorama versions.

Steps to reproduce

  1. Build Panorama Object
  2. Get all DeviceGroup Objects
    pa = Panorama("", api_username="",  api_password="") 

    dg_test = DeviceGroup()

    # Building device group as a child of Panorama
    pa.add(dg_test)

    # Get all device groups:
    device_groups = DeviceGroup.refreshall(dg_test)

Specifically this affects filters associated with icmp-timestamp. (Since that's both ICMP type 13 & 14).

Screenshots

N/A

Context

Just trying to get all devicegroups from Panorama.

Your Environment