proxmox_kvm: Fix ZFS device string parsing (#2841) (#2846)

ZFS-backed block devices may contain just the bare device name and
not have extra options like `,size=foo`, `,format=qcow2` etc. This
breaks an assumption in existing regex (which expects a comma).

Support such device strings and add a couple of testcases to validate.

(cherry picked from commit db713bd0f5)

Co-authored-by: Anup Chenthamarakshan <anupcshan@users.noreply.github.com>
This commit is contained in:
patchback[bot] 2021-06-20 13:05:16 +02:00 committed by GitHub
parent 830734d6cf
commit 29636c1cc8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 9 deletions

View file

@ -818,23 +818,25 @@ def get_vminfo(module, proxmox, node, vmid, **kwargs):
# Split information by type
re_net = re.compile(r'net[0-9]')
re_dev = re.compile(r'(virtio|ide|scsi|sata)[0-9]')
for k, v in kwargs.items():
for k in kwargs.keys():
if re_net.match(k):
interface = k
k = vm[k]
k = re.search('=(.*?),', k).group(1)
mac[interface] = k
mac[k] = parse_mac(vm[k])
elif re_dev.match(k):
device = k
k = vm[k]
k = re.search('(.*?),', k).group(1)
devices[device] = k
devices[k] = parse_dev(vm[k])
results['mac'] = mac
results['devices'] = devices
results['vmid'] = int(vmid)
def parse_mac(netstr):
return re.search('=(.*?),', netstr).group(1)
def parse_dev(devstr):
return re.search('(.*?)(,|$)', devstr).group(1)
def settings(proxmox, vmid, node, **kwargs):
proxmox_node = proxmox.nodes(node)