Skip to content

Commit 5d13e05

Browse files
authored
feat: Audit registered IPs for a specific tag
PR #322
1 parent 8d44951 commit 5d13e05

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

panos/userid.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,41 @@ def clear_registered_ip(self, ip=None, tags=None, prefix=None):
414414
self.unregister(ip, tags)
415415
self.batch_end()
416416

417+
def audit_registered_ip_for_tag(self, tag, ip_addresses):
418+
"""Synchronize the current registered-ip tag to tag only the specificied IP addresses.
419+
420+
Sets the registered-ip list for a single tag on the device. Regardless
421+
of the current state of the registered-ip tag list when this method is
422+
called, at the end of the method the list for the specified tag will
423+
contain only the ip addresses passed in the argument. The current state
424+
of the list is retrieved to reduce the number of operations needed. If
425+
the list for this tag is currently in the requested state, no API call
426+
is made after retrieving the list.
427+
428+
**Support:** PAN-OS 6.0 and higher
429+
430+
Warning: This will clear any batch without it being sent, and can't be
431+
used as part of a batch.
432+
433+
Args:
434+
tag (string): Tag to audit
435+
ip_addresses(list): List of IP addresses that should have the tag
436+
437+
"""
438+
device_list = self.get_registered_ip(tags=tag, prefix=self.prefix)
439+
self.batch_start()
440+
registered_ips = device_list.keys()
441+
tag = self.prefix + tag
442+
for ip in registered_ips:
443+
if ip not in ip_addresses:
444+
# The IP is not requested, unregister it for this tag
445+
self.unregister(ip, tag)
446+
for ip in ip_addresses:
447+
if ip not in registered_ips:
448+
# The IP is requested, register it with this tag
449+
self.register(ip, tag)
450+
self.batch_end()
451+
417452
def audit_registered_ip(self, ip_tags_pairs):
418453
"""Synchronize the current registered-ip tag list to this exact set of ip-tags
419454

0 commit comments

Comments
 (0)