if user is None:
user = misc.get_user()
name = misc.canonicalize_hostname(name, user=None)
- if not provision.destroy_if_vm(ctx, name):
+ if not provision.destroy_if_vm(ctx, name, user):
log.error('downburst destroy failed for %s', name)
request = dict(name=name, locked=False, locked_by=user, description=None)
uri = os.path.join(config.lock_server, 'nodes', name, 'lock', '')
return True
-def destroy_if_vm(ctx, machine_name):
+def destroy_if_vm(ctx, machine_name, user=None):
"""
Use downburst to destroy a virtual machine
status_info = get_status(machine_name)
if not status_info or not status_info.get('is_vm', False):
return True
+ if user is not None and user != status_info['locked_by']:
+ log.error("Tried to destroy {node} as {as_user} but it is locked by {locked_by}".format(
+ node=machine_name, as_user=user, locked_by=status_info['locked_by']))
+ return False
phys_host = decanonicalize_hostname(status_info['vm_host']['name'])
destroyMe = decanonicalize_hostname(machine_name)
dbrst = _get_downburst_exec()