Implement functionality of the API method cloudapi/account/listTemplates
This commit is contained in:
@@ -73,6 +73,18 @@ class DecortController(object):
|
||||
'type',
|
||||
]
|
||||
|
||||
FIELDS_FOR_SORTING_ACCOUNT_IMAGE_LIST = [
|
||||
'UNCPath',
|
||||
'desc',
|
||||
'id',
|
||||
'name',
|
||||
'public',
|
||||
'size',
|
||||
'status',
|
||||
'type',
|
||||
'username',
|
||||
]
|
||||
|
||||
FIELDS_FOR_SORTING_ACCOUNT_RG_LIST = [
|
||||
'createdBy',
|
||||
'createdTime',
|
||||
@@ -123,6 +135,14 @@ class DecortController(object):
|
||||
|
||||
DISK_TYPES = ['B', 'D']
|
||||
|
||||
IMAGE_TYPES = [
|
||||
'cdrom',
|
||||
'linux',
|
||||
'other',
|
||||
'virtual',
|
||||
'windows',
|
||||
]
|
||||
|
||||
RESOURCE_GROUP_STATUSES = [
|
||||
'CREATED',
|
||||
'DELETED',
|
||||
@@ -2059,6 +2079,7 @@ class DecortController(object):
|
||||
computes_args: None | dict = None,
|
||||
disks_args: None | dict = None,
|
||||
fail_if_not_found=False,
|
||||
images_args: None | dict = None,
|
||||
resource_consumption=False,
|
||||
resource_groups_args: None | dict = None,
|
||||
vinses_args: None | dict = None,
|
||||
@@ -2087,6 +2108,12 @@ class DecortController(object):
|
||||
the method `self.amodule.fail_json(**self.result)` will be
|
||||
called if account is not found.
|
||||
|
||||
@param (None | dict) images_args: If dict is
|
||||
specified, then the method `self.account_images`
|
||||
will be called passing founded account ID
|
||||
and `**images_args`. Result of the call will
|
||||
be added to account info dict (key `images`).
|
||||
|
||||
@param (bool) resource_consumption: If `True` is specified,
|
||||
then the method `self.account_resource_consumption`
|
||||
will be called passing founded account ID and result of
|
||||
@@ -2208,6 +2235,13 @@ class DecortController(object):
|
||||
**disks_args
|
||||
)
|
||||
|
||||
if images_args is not None:
|
||||
account_details['images'] =\
|
||||
self.account_images(
|
||||
account_id=account_details['id'],
|
||||
**images_args
|
||||
)
|
||||
|
||||
return account_details['id'], account_details
|
||||
|
||||
@waypoint
|
||||
@@ -2492,6 +2526,66 @@ class DecortController(object):
|
||||
|
||||
return disks
|
||||
|
||||
@waypoint
|
||||
def account_images(
|
||||
self,
|
||||
account_id: int,
|
||||
deleted: bool = False,
|
||||
image_id: None | int = None,
|
||||
image_name: None | str = None,
|
||||
image_type: None | str = None,
|
||||
page_number: int = 1,
|
||||
page_size: None | int = None,
|
||||
sort_by_asc=True,
|
||||
sort_by_field: None | str = None,
|
||||
) -> list[dict]:
|
||||
"""
|
||||
Implementation of functionality of the API method
|
||||
`/cloudapi/account/listTemplates`.
|
||||
"""
|
||||
|
||||
if image_type and (
|
||||
not image_type in self.IMAGE_TYPES
|
||||
):
|
||||
self.result['msg'] = (
|
||||
f'{image_type} is not valid image type'
|
||||
f' for filtering account image list.'
|
||||
)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
sort_by = None
|
||||
if sort_by_field:
|
||||
if not sort_by_field in self.FIELDS_FOR_SORTING_ACCOUNT_IMAGE_LIST:
|
||||
self.result['msg'] = (
|
||||
f'{sort_by_field} is not valid field for sorting'
|
||||
f' account image list.'
|
||||
)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
sort_by_prefix = '+' if sort_by_asc else '-'
|
||||
sort_by = f'{sort_by_prefix}{sort_by_field}'
|
||||
|
||||
api_params = {
|
||||
'accountId': account_id,
|
||||
'imageId': image_id,
|
||||
'includedeleted': deleted,
|
||||
'name': image_name,
|
||||
'page': page_number if page_size else None,
|
||||
'size': page_size,
|
||||
'sortBy': sort_by,
|
||||
'type': image_type,
|
||||
}
|
||||
|
||||
api_resp = self.decort_api_call(
|
||||
arg_req_function=requests.post,
|
||||
arg_api_name='/restmachine/cloudapi/account/listTemplates',
|
||||
arg_params=api_params,
|
||||
)
|
||||
|
||||
images = api_resp.json()['data']
|
||||
|
||||
return images
|
||||
|
||||
###################################
|
||||
# GPU resource manipulation methods
|
||||
###################################
|
||||
|
||||
Reference in New Issue
Block a user