Skip to content

Commit bf26305

Browse files
feat: Add per-admin push for Panorama (#485)
Add admins parameter to Panorama push, which supports pushing only changes from specific PAN-OS administrators
1 parent 3e2e926 commit bf26305

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

panos/panorama.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,7 @@ class PanoramaCommitAll(object):
10571057
name (str): The name of the location to push the config to (e.g. - name
10581058
of the device group, name of the template, etc).
10591059
description (str): The commit message.
1060+
admins (list): (PAN-OS 10.2+) List of admins whose changes are to be pushed.
10601061
include_template (bool): (For `device group` style commits) Set to True to include
10611062
template changes.
10621063
force_template_values (bool): (For `device group`, `template`, or `template stack`
@@ -1077,6 +1078,7 @@ def __init__(
10771078
style,
10781079
name,
10791080
description=None,
1081+
admins=None,
10801082
include_template=None,
10811083
force_template_values=None,
10821084
devices=None,
@@ -1092,10 +1094,13 @@ def __init__(
10921094
raise ValueError("Invalid style {0}".format(style))
10931095
if devices and not isinstance(devices, list):
10941096
raise ValueError("devices must be a list")
1097+
if admins and not isinstance(admins, list):
1098+
raise ValueError("admins must be a list")
10951099

10961100
self.style = style
10971101
self.name = name
10981102
self.description = description
1103+
self.admins = admins
10991104
self.include_template = include_template
11001105
self.force_template_values = force_template_values
11011106
self.devices = devices
@@ -1126,6 +1131,10 @@ def element(self):
11261131
ET.SubElement(de, "entry", {"name": x})
11271132
if self.description:
11281133
ET.SubElement(body, "description").text = self.description
1134+
if self.admins:
1135+
adms = ET.SubElement(body, "admin")
1136+
for user in self.admins:
1137+
ET.SubElement(adms, "member").text = user
11291138
if self.include_template:
11301139
ET.SubElement(body, "include-template").text = "yes"
11311140
elif self.include_template is False:
@@ -1139,6 +1148,10 @@ def element(self):
11391148
ET.SubElement(body, "name").text = self.name
11401149
if self.description:
11411150
ET.SubElement(body, "description").text = self.description
1151+
if self.admins:
1152+
adms = ET.SubElement(body, "admin")
1153+
for user in self.admins:
1154+
ET.SubElement(adms, "member").text = user
11421155
if self.force_template_values:
11431156
ET.SubElement(body, "force-template-values").text = "yes"
11441157
elif self.force_template_values is False:
@@ -1152,6 +1165,10 @@ def element(self):
11521165
ET.SubElement(body, "name").text = self.name
11531166
if self.description:
11541167
ET.SubElement(body, "description").text = self.description
1168+
if self.admins:
1169+
adms = ET.SubElement(body, "admin")
1170+
for user in self.admins:
1171+
ET.SubElement(adms, "member").text = user
11551172
if self.force_template_values:
11561173
ET.SubElement(body, "force-template-values").text = "yes"
11571174
elif self.force_template_values is False:

0 commit comments

Comments
 (0)