Re-add UUID limit matching for full UUIDs

This *was* valuable when passing a full UUID in, so go back to that.
Verify first that the limit string is an actual UUID, and then compare
against it if applicable.
This commit is contained in:
Joshua Boniface 2021-06-28 12:27:43 -04:00
parent 4e2a1c3e52
commit f91c07fdcf
1 changed files with 23 additions and 8 deletions

View File

@ -24,6 +24,8 @@ import re
import lxml.objectify import lxml.objectify
import lxml.etree import lxml.etree
from uuid import UUID
import daemon_lib.common as common import daemon_lib.common as common
import daemon_lib.ceph as ceph import daemon_lib.ceph as ceph
@ -823,7 +825,17 @@ def get_list(zkhandler, node, state, limit, is_fuzzy=True):
full_vm_list = zkhandler.children('base.domain') full_vm_list = zkhandler.children('base.domain')
# Set our limit to a sensible regex # Set our limit to a sensible regex
if limit and is_fuzzy: if limit:
# Check if the limit is a UUID
is_limit_uuid = False
try:
uuid_obj = UUID(limit, version=4)
limit = str(uuid_obj)
is_limit_uuid = True
except ValueError:
pass
if is_fuzzy and not is_limit_uuid:
try: try:
# Implcitly assume fuzzy limits # Implcitly assume fuzzy limits
if not re.match(r'\^.*', limit): if not re.match(r'\^.*', limit):
@ -842,7 +854,10 @@ def get_list(zkhandler, node, state, limit, is_fuzzy=True):
# Check on limit # Check on limit
if limit: if limit:
# Try to match the limit against the UUID (if applicable) and name
try: try:
if is_limit_uuid and re.match(limit, vm):
is_limit_match = True
if re.match(limit, name): if re.match(limit, name):
is_limit_match = True is_limit_match = True
except Exception as e: except Exception as e: