@ -73,6 +73,18 @@ class DecortController(object):
' type ' ,
' type ' ,
]
]
FIELDS_FOR_SORTING_ACCOUNT_IMAGE_LIST = [
' UNCPath ' ,
' desc ' ,
' id ' ,
' name ' ,
' public ' ,
' size ' ,
' status ' ,
' type ' ,
' username ' ,
]
FIELDS_FOR_SORTING_ACCOUNT_RG_LIST = [
FIELDS_FOR_SORTING_ACCOUNT_RG_LIST = [
' createdBy ' ,
' createdBy ' ,
' createdTime ' ,
' createdTime ' ,
@ -123,6 +135,14 @@ class DecortController(object):
DISK_TYPES = [ ' B ' , ' D ' ]
DISK_TYPES = [ ' B ' , ' D ' ]
IMAGE_TYPES = [
' cdrom ' ,
' linux ' ,
' other ' ,
' virtual ' ,
' windows ' ,
]
RESOURCE_GROUP_STATUSES = [
RESOURCE_GROUP_STATUSES = [
' CREATED ' ,
' CREATED ' ,
' DELETED ' ,
' DELETED ' ,
@ -2059,6 +2079,7 @@ class DecortController(object):
computes_args : None | dict = None ,
computes_args : None | dict = None ,
disks_args : None | dict = None ,
disks_args : None | dict = None ,
fail_if_not_found = False ,
fail_if_not_found = False ,
images_args : None | dict = None ,
resource_consumption = False ,
resource_consumption = False ,
resource_groups_args : None | dict = None ,
resource_groups_args : None | dict = None ,
vinses_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
the method ` self . amodule . fail_json ( * * self . result ) ` will be
called if account is not found .
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 ,
@param ( bool ) resource_consumption : If ` True ` is specified ,
then the method ` self . account_resource_consumption `
then the method ` self . account_resource_consumption `
will be called passing founded account ID and result of
will be called passing founded account ID and result of
@ -2208,6 +2235,13 @@ class DecortController(object):
* * disks_args
* * 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
return account_details [ ' id ' ] , account_details
@waypoint
@waypoint
@ -2492,6 +2526,66 @@ class DecortController(object):
return disks
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
# GPU resource manipulation methods
###################################
###################################