wangzh21 0e01835b7f Add filter to list
1.Cyborg should support filtering queries. This patch is the
implementation of client.
2.Add UT for cyborgclient.

Change-Id: Ia4a98be93f2a32e7e818d4831a24652c78b97788
2018-08-02 10:36:21 +08:00

71 lines
2.7 KiB
Python

# Copyright (c) 2018 Intel, Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from cyborgclient.v1 import basemodels
CREATION_ATTRIBUTES = basemodels.CREATION_ATTRIBUTES
class Deployable(basemodels.BaseModel):
model_name = "Deployable"
class DeployableManager(basemodels.BaseModelManager):
api_name = "deployables"
base_url = "accelerators/deployables"
resource_class = Deployable
def deallocation(self, deployable_uuid):
"""Delete specified accelerators from instance.
:param deployable_uuid: deployable_uuid which is attached to the
instance.
"""
body = [{"op": "replace", "path": "/instance_uuid", "value": None}]
resp = self.update(deployable_uuid, body)
return resp
def allocation(self, deployable_uuid, instance_uuid):
body = [{"op": "replace", "path": "/instance_uuid",
"value": instance_uuid}]
resp = self.update(deployable_uuid, body)
return resp
def list(self, limit=None, marker=None, sort_key=None,
sort_dir=None, **add_filters):
"""List accelerators.
:param limit:The maximum number of results to return per
request, if:
1) limit > 0, the maximum number of accelerators to return.
2) limit == 0, return the entire list of accelerators.
3) limit param is NOT specified (None), the number of items
returned respect the maximum imposed by the Cyborg API
(see Cyborg's api.max_limit option).
:param sort_key: Optional, field used for sorting.
:param sort_dir: Optional, direction of sorting, either 'asc' (the
default) or 'desc'.
:param extra_filters: Optional, additional filter parameters for query
deployable, such as interface_type=pci, host=node-1.
:return:A list of accelerators.
"""
res = super(DeployableManager, self).list(limit=limit, marker=marker,
sort_key=sort_key,
sort_dir=sort_dir,
**add_filters)
return res