Add VM list filtering by tag
Uses same method as state or node filtering, rather than altering how the main LIMIT field works.
This commit is contained in:
@ -592,7 +592,7 @@ class API_Node_Root(Resource):
|
||||
name: limit
|
||||
type: string
|
||||
required: false
|
||||
description: A search limit; fuzzy by default, use ^/$ to force exact matches
|
||||
description: A search limit in the name, tags, or an exact UUID; fuzzy by default, use ^/$ to force exact matches
|
||||
- in: query
|
||||
name: daemon_state
|
||||
type: string
|
||||
@ -844,6 +844,7 @@ class API_VM_Root(Resource):
|
||||
{'name': 'limit'},
|
||||
{'name': 'node'},
|
||||
{'name': 'state'},
|
||||
{'name': 'tag'},
|
||||
])
|
||||
@Authenticator
|
||||
def get(self, reqargs):
|
||||
@ -1092,7 +1093,7 @@ class API_VM_Root(Resource):
|
||||
name: limit
|
||||
type: string
|
||||
required: false
|
||||
description: A name search limit; fuzzy by default, use ^/$ to force exact matches
|
||||
description: A search limit in the name, tags, or an exact UUID; fuzzy by default, use ^/$ to force exact matches
|
||||
- in: query
|
||||
name: node
|
||||
type: string
|
||||
@ -1103,6 +1104,11 @@ class API_VM_Root(Resource):
|
||||
type: string
|
||||
required: false
|
||||
description: Limit list to VMs in this state
|
||||
- in: query
|
||||
name: tag
|
||||
type: string
|
||||
required: false
|
||||
description: Limit list to VMs with this tag
|
||||
responses:
|
||||
200:
|
||||
description: OK
|
||||
@ -1114,6 +1120,7 @@ class API_VM_Root(Resource):
|
||||
return api_helper.vm_list(
|
||||
reqargs.get('node', None),
|
||||
reqargs.get('state', None),
|
||||
reqargs.get('tag', None),
|
||||
reqargs.get('limit', None)
|
||||
)
|
||||
|
||||
@ -1244,7 +1251,7 @@ class API_VM_Element(Resource):
|
||||
type: object
|
||||
id: Message
|
||||
"""
|
||||
return api_helper.vm_list(None, None, vm, is_fuzzy=False)
|
||||
return api_helper.vm_list(None, None, None, vm, is_fuzzy=False)
|
||||
|
||||
@RequestParser([
|
||||
{'name': 'limit'},
|
||||
|
@ -326,7 +326,7 @@ def vm_state(zkhandler, vm):
|
||||
"""
|
||||
Return the state of virtual machine VM.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, vm, is_fuzzy=False)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False)
|
||||
|
||||
if retflag:
|
||||
if retdata:
|
||||
@ -355,7 +355,7 @@ def vm_node(zkhandler, vm):
|
||||
"""
|
||||
Return the current node of virtual machine VM.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, vm, is_fuzzy=False)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=False)
|
||||
|
||||
if retflag:
|
||||
if retdata:
|
||||
@ -409,11 +409,11 @@ def vm_console(zkhandler, vm, lines=None):
|
||||
|
||||
@pvc_common.Profiler(config)
|
||||
@ZKConnection(config)
|
||||
def vm_list(zkhandler, node=None, state=None, limit=None, is_fuzzy=True):
|
||||
def vm_list(zkhandler, node=None, state=None, tag=None, limit=None, is_fuzzy=True):
|
||||
"""
|
||||
Return a list of VMs with limit LIMIT.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, node, state, limit, is_fuzzy)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, node, state, tag, limit, is_fuzzy)
|
||||
|
||||
if retflag:
|
||||
if retdata:
|
||||
@ -800,7 +800,7 @@ def vm_flush_locks(zkhandler, vm):
|
||||
"""
|
||||
Flush locks of a (stopped) VM.
|
||||
"""
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, vm, is_fuzzy=False)
|
||||
retflag, retdata = pvc_vm.get_list(zkhandler, None, None, None, vm, is_fuzzy=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