@ -63,6 +63,16 @@ class DecortController(object):
' vinsConnected ' ,
' vinsConnected ' ,
]
]
FIELDS_FOR_SORTING_ACCOUNT_DISK_LIST = [
' id ' ,
' name ' ,
' pool ' ,
' sepId ' ,
' shareable ' ,
' sizeMax ' ,
' type ' ,
]
FIELDS_FOR_SORTING_ACCOUNT_RG_LIST = [
FIELDS_FOR_SORTING_ACCOUNT_RG_LIST = [
' createdBy ' ,
' createdBy ' ,
' createdTime ' ,
' createdTime ' ,
@ -2045,6 +2055,7 @@ class DecortController(object):
account_id = 0 ,
account_id = 0 ,
account_name : str = ' ' ,
account_name : str = ' ' ,
computes_args : None | dict = None ,
computes_args : None | dict = None ,
disks_args : None | dict = None ,
fail_if_not_found = False ,
fail_if_not_found = False ,
resource_consumption = False ,
resource_consumption = False ,
resource_groups_args : None | dict = None ,
resource_groups_args : None | dict = None ,
@ -2064,6 +2075,12 @@ class DecortController(object):
and ` * * computes_args ` . Result of the call will
and ` * * computes_args ` . Result of the call will
be added to account info dict ( key ` computes ` ) .
be added to account info dict ( key ` computes ` ) .
@param ( None | dict ) disks_args : If dict is
specified , then the method ` self . account_disks `
will be called passing founded account ID
and ` * * disks_args ` . Result of the call will
be added to account info dict ( key ` disks ` ) .
@param ( bool ) fail_if_not_found : If ` True ` is specified , then
@param ( bool ) fail_if_not_found : If ` True ` is specified , then
the method ` self . amodule . fail_json ( * * self . result ) ` will be
the method ` self . amodule . fail_json ( * * self . result ) ` will be
called if account is not found .
called if account is not found .
@ -2182,6 +2199,13 @@ class DecortController(object):
* * vinses_args
* * vinses_args
)
)
if disks_args is not None :
account_details [ ' disks ' ] = \
self . account_disks (
account_id = account_details [ ' id ' ] ,
* * disks_args
)
return account_details [ ' id ' ] , account_details
return account_details [ ' id ' ] , account_details
@waypoint
@waypoint
@ -2406,6 +2430,57 @@ class DecortController(object):
return vinses
return vinses
@waypoint
def account_disks (
self ,
account_id : int ,
disk_id : None | int = None ,
disk_name : None | str = None ,
disk_size : None | int = None ,
disk_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 / listDisks ` .
"""
sort_by = None
if sort_by_field :
if not sort_by_field in self . FIELDS_FOR_SORTING_ACCOUNT_DISK_LIST :
self . result [ ' msg ' ] = (
f ' { sort_by_field } is not valid field for sorting '
f ' account disks 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 ,
' diskId ' : disk_id ,
' diskMaxSize ' : disk_size ,
' name ' : disk_name ,
' page ' : page_number if page_size else None ,
' size ' : page_size ,
' sortBy ' : sort_by ,
' type ' : disk_type ,
}
api_resp = self . decort_api_call (
arg_req_function = requests . post ,
arg_api_name = ' /restmachine/cloudapi/account/listDisks ' ,
arg_params = api_params ,
)
disks = api_resp . json ( ) [ ' data ' ]
return disks
###################################
###################################
# GPU resource manipulation methods
# GPU resource manipulation methods
###################################
###################################