Add limit negation to VM list
When using the "state", "node", or "tag" arguments to a VM list, add support for a "negate" flag to look for all VMs *not in* the state, node, or tag state.
This commit is contained in:
@ -891,6 +891,7 @@ class API_VM_Root(Resource):
|
||||
{'name': 'node'},
|
||||
{'name': 'state'},
|
||||
{'name': 'tag'},
|
||||
{'name': 'negate'},
|
||||
])
|
||||
@Authenticator
|
||||
def get(self, reqargs):
|
||||
@ -1155,6 +1156,11 @@ class API_VM_Root(Resource):
|
||||
type: string
|
||||
required: false
|
||||
description: Limit list to VMs with this tag
|
||||
- in: query
|
||||
name: negate
|
||||
type: boolean
|
||||
required: false
|
||||
description: Negate the specified node, state, or tag limit(s)
|
||||
responses:
|
||||
200:
|
||||
description: OK
|
||||
@ -1164,10 +1170,11 @@ class API_VM_Root(Resource):
|
||||
$ref: '#/definitions/vm'
|
||||
"""
|
||||
return api_helper.vm_list(
|
||||
reqargs.get('node', None),
|
||||
reqargs.get('state', None),
|
||||
reqargs.get('tag', None),
|
||||
reqargs.get('limit', None)
|
||||
node=reqargs.get('node', None),
|
||||
state=reqargs.get('state', None),
|
||||
tag=reqargs.get('tag', None),
|
||||
limit=reqargs.get('limit', None),
|
||||
negate=bool(strtobool(reqargs.get('negate', 'False'))),
|
||||
)
|
||||
|
||||
@RequestParser([
|
||||
@ -1297,7 +1304,7 @@ class API_VM_Element(Resource):
|
||||
type: object
|
||||
id: Message
|
||||
"""
|
||||
return api_helper.vm_list(None, None, None, vm, is_fuzzy=False)
|
||||
return api_helper.vm_list(node=None, state=None, tag=None, limit=vm, is_fuzzy=False, negate=False)
|
||||
|
||||
@RequestParser([
|
||||
{'name': 'limit'},
|
||||
|
@ -354,7 +354,7 @@ def vm_state(zkhandler, vm):
|
||||
"""
|
||||
Return the state of virtual machine VM.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False, negate=False)
|
||||
|
||||
if retflag:
|
||||
if retdata:
|
||||
@ -383,7 +383,7 @@ def vm_node(zkhandler, vm):
|
||||
"""
|
||||
Return the current node of virtual machine VM.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False, negate=False)
|
||||
|
||||
if retflag:
|
||||
if retdata:
|
||||
@ -437,11 +437,11 @@ def vm_console(zkhandler, vm, lines=None):
|
||||
|
||||
@pvc_common.Profiler(config)
|
||||
@ZKConnection(config)
|
||||
def vm_list(zkhandler, node=None, state=None, tag=None, limit=None, is_fuzzy=True):
|
||||
def vm_list(zkhandler, node=None, state=None, tag=None, limit=None, is_fuzzy=True, negate=False):
|
||||
"""
|
||||
Return a list of VMs with limit LIMIT.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, node, state, tag, limit, is_fuzzy)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, node, state, tag, limit, is_fuzzy, negate)
|
||||
|
||||
if retflag:
|
||||
if retdata:
|
||||
@ -880,7 +880,7 @@ def vm_flush_locks(zkhandler, vm):
|
||||
"""
|
||||
Flush locks of a (stopped) VM.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False, negate=False)
|
||||
|
||||
if retdata[0].get('state') not in ['stop', 'disable']:
|
||||
return {"message": "VM must be stopped to flush locks"}, 400
|
||||
|
Reference in New Issue
Block a user