Allow modification of a VM profile
And fix some bugs around this. Fixes #76
This commit is contained in:
@ -120,37 +120,30 @@ def vm_modify(config, vm, xml, restart):
|
||||
|
||||
return retstatus, response.json()['message']
|
||||
|
||||
def vm_metadata(config, vm, node_limit, node_selector, node_autostart):
|
||||
def vm_metadata(config, vm, node_limit, node_selector, node_autostart, provisioner_profile):
|
||||
"""
|
||||
Modify PVC metadata of a VM
|
||||
|
||||
API endpoint: GET /vm/{vm}/meta, POST /vm/{vm}/meta
|
||||
API arguments: limit={node_limit}, selector={node_selector}, autostart={node_autostart}
|
||||
API arguments: limit={node_limit}, selector={node_selector}, autostart={node_autostart}, profile={provisioner_profile}
|
||||
API schema: {"message":"{data}"}
|
||||
"""
|
||||
response = call_api(config, 'get', '/vm/{vm}/meta'.format(vm=vm))
|
||||
|
||||
metadata = response.json()
|
||||
params = dict()
|
||||
|
||||
# Update any params that we've sent
|
||||
if node_limit is not None:
|
||||
metadata['node_limit'] = node_limit
|
||||
else:
|
||||
# Collapse the existing list back down to a CSV
|
||||
metadata['node_limit'] = ','.join(metadata['node_limit'])
|
||||
params['limit'] = node_limit
|
||||
|
||||
if node_selector is not None:
|
||||
metadata['node_selector'] = node_selector
|
||||
params['selector'] = node_selector
|
||||
|
||||
if node_autostart is not None:
|
||||
metadata['node_autostart'] = node_autostart
|
||||
params['autostart'] = node_autostart
|
||||
|
||||
if provisioner_profile is not None:
|
||||
params['profile'] = provisioner_profile
|
||||
|
||||
# Write the new metadata
|
||||
params={
|
||||
'limit': metadata['node_limit'],
|
||||
'selector': metadata['node_selector'],
|
||||
'autostart': metadata['node_autostart']
|
||||
}
|
||||
response = call_api(config, 'post', '/vm/{vm}/meta'.format(vm=vm), params=params)
|
||||
|
||||
if response.status_code == 200:
|
||||
|
@ -547,18 +547,22 @@ def vm_define(vmconfig, target_node, node_limit, node_selector, node_autostart):
|
||||
'-a/-A', '--autostart/--no-autostart', 'node_autostart', is_flag=True, default=None,
|
||||
help='Start VM automatically on next unflush/ready state of home node; unset by daemon once used.'
|
||||
)
|
||||
@click.option(
|
||||
'-p', '--profile', 'provisioner_profile', default=None, show_default=False,
|
||||
help='PVC provisioner profile name for VM.'
|
||||
)
|
||||
@click.argument(
|
||||
'domain'
|
||||
)
|
||||
def vm_meta(domain, node_limit, node_selector, node_autostart):
|
||||
def vm_meta(domain, node_limit, node_selector, node_autostart, provisioner_profile):
|
||||
"""
|
||||
Modify the PVC metadata of existing virtual machine DOMAIN. At least one option to update must be specified. DOMAIN may be a UUID or name.
|
||||
"""
|
||||
|
||||
if node_limit is None and node_selector is None and node_autostart is None:
|
||||
if node_limit is None and node_selector is None and node_autostart is None and provisioner_profile is None:
|
||||
cleanup(False, 'At least one metadata option must be specified to update.')
|
||||
|
||||
retcode, retmsg = pvc_vm.vm_metadata(config, domain, node_limit, node_selector, node_autostart)
|
||||
retcode, retmsg = pvc_vm.vm_metadata(config, domain, node_limit, node_selector, node_autostart, provisioner_profile)
|
||||
cleanup(retcode, retmsg)
|
||||
|
||||
###############################################################################
|
||||
|
Reference in New Issue
Block a user