From 4c6fd86ed01f3b02b11b7b3b5c150641e31390e7 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 22 Dec 2022 13:03:32 +0000 Subject: [PATCH 1/2] Add admins parameter to Panorama push --- panos/panorama.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/panos/panorama.py b/panos/panorama.py index 91209b77..59c4b82b 100644 --- a/panos/panorama.py +++ b/panos/panorama.py @@ -1057,6 +1057,7 @@ class PanoramaCommitAll(object): name (str): The name of the location to push the config to (e.g. - name of the device group, name of the template, etc). description (str): The commit message. + admins (list): (PAN-OS 10.2+) List of admins whose changes are to be pushed. include_template (bool): (For `device group` style commits) Set to True to include template changes. force_template_values (bool): (For `device group`, `template`, or `template stack` @@ -1077,6 +1078,7 @@ def __init__( style, name, description=None, + admins=None, include_template=None, force_template_values=None, devices=None, @@ -1092,10 +1094,13 @@ def __init__( raise ValueError("Invalid style {0}".format(style)) if devices and not isinstance(devices, list): raise ValueError("devices must be a list") + if admins and not isinstance(admins, list): + raise ValueError("admins must be a list") self.style = style self.name = name self.description = description + self.admins = admins self.include_template = include_template self.force_template_values = force_template_values self.devices = devices @@ -1126,6 +1131,10 @@ def element(self): ET.SubElement(de, "entry", {"name": x}) if self.description: ET.SubElement(body, "description").text = self.description + if self.admins: + adms = ET.SubElement(body, "admin") + for user in self.admins: + ET.SubElement(adms, "member").text = user if self.include_template: ET.SubElement(body, "include-template").text = "yes" elif self.include_template is False: From 14fb719b45ffa5511ccb30ca7bf54e5a7b30ef04 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 22 Dec 2022 13:08:17 +0000 Subject: [PATCH 2/2] Including coverage for templates and stacks --- panos/panorama.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/panos/panorama.py b/panos/panorama.py index 59c4b82b..1a876a5e 100644 --- a/panos/panorama.py +++ b/panos/panorama.py @@ -1148,6 +1148,10 @@ def element(self): ET.SubElement(body, "name").text = self.name if self.description: ET.SubElement(body, "description").text = self.description + if self.admins: + adms = ET.SubElement(body, "admin") + for user in self.admins: + ET.SubElement(adms, "member").text = user if self.force_template_values: ET.SubElement(body, "force-template-values").text = "yes" elif self.force_template_values is False: @@ -1161,6 +1165,10 @@ def element(self): ET.SubElement(body, "name").text = self.name if self.description: ET.SubElement(body, "description").text = self.description + if self.admins: + adms = ET.SubElement(body, "admin") + for user in self.admins: + ET.SubElement(adms, "member").text = user if self.force_template_values: ET.SubElement(body, "force-template-values").text = "yes" elif self.force_template_values is False: