Implement functionality of the API method cloudapi/account/listDisks

This commit is contained in:
2024-07-22 13:35:59 +03:00
parent cd663a4a01
commit b73a57dd0d
3 changed files with 162 additions and 3 deletions

View File

@@ -32,11 +32,12 @@ class DecortAccountInfo(DecortController):
account_name=amodule.params['name'],
account_id=amodule.params['id'],
computes_args=self.mapped_computes_args,
disks_args=self.mapped_disks_args,
resource_consumption=amodule.params['resource_consumption'],
resource_groups_args=self.mapped_rg_args,
vinses_args=self.mapped_vinses_args,
fail_if_not_found=True
)
fail_if_not_found=True,
)
@property
def amodule_init_args(self) -> dict:
@@ -123,6 +124,57 @@ class DecortAccountInfo(DecortController):
type='str',
required=True
),
disks=dict(
type='dict',
options=dict(
filter=dict(
type='dict',
options=dict(
id=dict(
type='int',
),
name=dict(
type='str',
),
size=dict(
type='int',
),
type=dict(
type='str',
choices=['B', 'D'],
),
),
),
pagination=dict(
type='dict',
options=dict(
number=dict(
type='int',
default=1,
),
size=dict(
type='int',
required=True,
),
),
),
sorting=dict(
type='dict',
options=dict(
asc=dict(
type='bool',
default=True,
),
field=dict(
type='str',
choices=\
self.FIELDS_FOR_SORTING_ACCOUNT_DISK_LIST,
required=True,
),
),
),
),
),
id=dict(
type='int',
),
@@ -303,6 +355,38 @@ class DecortAccountInfo(DecortController):
return mapped_args
@property
def mapped_disks_args(self) -> None | dict:
"""
Map the module argument `disks` to
arguments dictionary for the method
`DecortController.account_disks`
(excluding for `account_id`).
"""
input_args = self.amodule.params['disks']
if not input_args:
return input_args
mapped_args = {}
if input_args['filter']:
mapped_args['disk_id'] = input_args['filter']['id']
mapped_args['disk_name'] = input_args['filter']['name']
mapped_args['disk_size'] = input_args['filter']['size']
mapped_args['disk_type'] = input_args['filter']['type']
if input_args['pagination']:
mapped_args['page_number'] =\
input_args['pagination']['number']
mapped_args['page_size'] =\
input_args['pagination']['size']
if input_args['sorting']:
mapped_args['sort_by_asc'] =\
input_args['sorting']['asc']
mapped_args['sort_by_field'] =\
input_args['sorting']['field']
return mapped_args
@property
def mapped_rg_args(self) -> None | dict:
"""