Implement functionality of the API method cloudapi/account/listVins in decort_account_info module
This commit is contained in:
@@ -77,6 +77,26 @@ class DecortController(object):
|
||||
'vinses',
|
||||
]
|
||||
|
||||
FIELDS_FOR_SORTING_ACCOUNT_VINS_LIST = [
|
||||
'computes',
|
||||
'createdBy',
|
||||
'createdTime',
|
||||
'deletedBy',
|
||||
'deletedTime',
|
||||
'externalIP',
|
||||
'extnetId',
|
||||
'freeIPs',
|
||||
'id',
|
||||
'name',
|
||||
'network',
|
||||
'priVnfDevId',
|
||||
'rgId',
|
||||
'rgName',
|
||||
'status',
|
||||
'updatedBy',
|
||||
'updatedTime',
|
||||
]
|
||||
|
||||
COMPUTE_TECH_STATUSES = [
|
||||
'BACKUP_RUNNING',
|
||||
'BACKUP_STOPPED',
|
||||
@@ -2008,6 +2028,7 @@ class DecortController(object):
|
||||
resource_consumption=False,
|
||||
resource_groups_params: None | dict = None,
|
||||
computes_params: None | dict = None,
|
||||
vinses_params: None | dict = None,
|
||||
fail_if_not_found=False):
|
||||
"""
|
||||
Find account specified by account ID or name and return
|
||||
@@ -2036,6 +2057,12 @@ class DecortController(object):
|
||||
and `**computes_params`. Result of the call will
|
||||
be added to account info dict (key `computes`).
|
||||
|
||||
@param (None | dict) vinses_params: If dict is
|
||||
specified, then the method `account_vinses`
|
||||
will be called passing founded account ID
|
||||
and `**vinses_params`. Result of the call will
|
||||
be added to account info dict (key `vinses`).
|
||||
|
||||
@param (bool) fail_if_not_found: If `True` is specified, then
|
||||
the method `self.amodule.fail_json(**self.result)` will be
|
||||
called if account is not found.
|
||||
@@ -2091,6 +2118,7 @@ class DecortController(object):
|
||||
return 0, None
|
||||
|
||||
account_details['computes_amount'] = account_details.pop('computes')
|
||||
account_details['vinses_amount'] = account_details.pop('vinses')
|
||||
|
||||
account_details['createdTime_readable'] = self.sec_to_dt_str(
|
||||
account_details['createdTime']
|
||||
@@ -2129,6 +2157,12 @@ class DecortController(object):
|
||||
**computes_params
|
||||
)
|
||||
|
||||
if vinses_params is not None:
|
||||
account_details['vinses'] = self.account_vinses(
|
||||
account_id=account_details['id'],
|
||||
**vinses_params
|
||||
)
|
||||
|
||||
return account_details['id'], account_details
|
||||
|
||||
@waypoint
|
||||
@@ -2277,6 +2311,57 @@ class DecortController(object):
|
||||
|
||||
return computes
|
||||
|
||||
@waypoint
|
||||
def account_vinses(
|
||||
self,
|
||||
account_id: int,
|
||||
ext_ip: None | str = None,
|
||||
page_number: int = 1,
|
||||
page_size: None | int = None,
|
||||
rg_id: None | int = None,
|
||||
sort_by_asc=True,
|
||||
sort_by_field: None | str = None,
|
||||
vins_id: None | int = None,
|
||||
vins_name: None | str = None,
|
||||
) -> list[dict]:
|
||||
sort_by = None
|
||||
if sort_by_field:
|
||||
if not sort_by_field in self.FIELDS_FOR_SORTING_ACCOUNT_VINS_LIST:
|
||||
self.result['msg'] = (
|
||||
f'{sort_by_field} is not valid field for sorting'
|
||||
f' account vins 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,
|
||||
'extIp': ext_ip,
|
||||
'name': vins_name,
|
||||
'page': page_number if page_size else None,
|
||||
'rgId': rg_id,
|
||||
'size': page_size,
|
||||
'sortBy': sort_by,
|
||||
'vinsId': vins_id,
|
||||
}
|
||||
|
||||
api_resp = self.decort_api_call(
|
||||
arg_req_function=requests.post,
|
||||
arg_api_name='/restmachine/cloudapi/account/listVins',
|
||||
arg_params=api_params,
|
||||
)
|
||||
|
||||
vinses = api_resp.json()['data']
|
||||
|
||||
for v in vinses:
|
||||
v['createdTime_readable'] = self.sec_to_dt_str(v['createdTime'])
|
||||
v['deletedTime_readable'] = self.sec_to_dt_str(v['deletedTime'])
|
||||
v['updatedTime_readable'] = self.sec_to_dt_str(v['updatedTime'])
|
||||
|
||||
return vinses
|
||||
|
||||
###################################
|
||||
# GPU resource manipulation methods
|
||||
###################################
|
||||
|
||||
Reference in New Issue
Block a user