1.4.0
This commit is contained in:
@@ -1,32 +0,0 @@
|
|||||||
repos:
|
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
||||||
rev: v5.0.0
|
|
||||||
hooks:
|
|
||||||
- id: end-of-file-fixer
|
|
||||||
- id: file-contents-sorter
|
|
||||||
files: .*mapping.yml
|
|
||||||
args:
|
|
||||||
- --unique
|
|
||||||
- id: no-commit-to-branch
|
|
||||||
name: no-commit-to-branch (main, master, dev_*)
|
|
||||||
args:
|
|
||||||
- --pattern
|
|
||||||
- dev_.*
|
|
||||||
- repo: https://github.com/pycqa/flake8
|
|
||||||
rev: 7.1.2
|
|
||||||
hooks:
|
|
||||||
- id: flake8
|
|
||||||
name: flake8 (1/2)
|
|
||||||
files: src/dynamix_sdk/types\.py|.*__init__\.py|.*_api\.py
|
|
||||||
args:
|
|
||||||
- --extend-ignore=F401,F403,F405
|
|
||||||
- id: flake8
|
|
||||||
name: flake8 (2/2)
|
|
||||||
exclude: src/dynamix_sdk/types\.py|.*__init__\.py|.*_api\.py
|
|
||||||
- repo: local
|
|
||||||
hooks:
|
|
||||||
- id: pytest-local-tests
|
|
||||||
name: pytest local tests
|
|
||||||
entry: pytest tests/local
|
|
||||||
language: system
|
|
||||||
pass_filenames: false
|
|
||||||
374
CHANGELOG.md
374
CHANGELOG.md
@@ -1,17 +1,385 @@
|
|||||||
# Список изменений в версии 1.3.2
|
# Список изменений в версии 1.4.0
|
||||||
|
|
||||||
## Добавлено
|
## Добавлено
|
||||||
|
|
||||||
| Идентификатор<br>задачи | Описание |
|
| Идентификатор<br>задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
| BPYS-750 | Добавлена функция `cloudbroker.account.set_cpu_allocation_parameter`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.account.get`: добавлен атрибут `CloudapiAccountGetResultModel.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.account.update`: добавлен параметр `sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.get`: добавлен атрибут `CloudapiRgGetResultModel.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.list_deleted`: добавлен атрибут `CloudapiRgListDeletedResultModel.data.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.list`: добавлен атрибут `CloudapiRgListResultModel.data.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.update`: добавлен параметр `clear_sep_pools` в связи с переименованием из `clear_uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.update`: добавлен параметр `sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.create`: добавлен параметр `sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.get`: добавлен атрибут `CloudbrokerAccountGetResultModel.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.list_deleted`: добавлен атрибут `CloudbrokerAccountListDeletedResultModel.data.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.list`: добавлен атрибут `CloudbrokerAccountListResultModel.data.sep_pools` в связи с переименованием из `uniq_pools`. |
|
||||||
|
| BPYS-751 | Добавлена функция `cloudbroker.account.set_cpu_allocation_ratio`. |
|
||||||
|
| BPYS-754 | Добавлена функция `cloudbroker.account.update_resource_types`. |
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_remove`, `cloudapi.compute.anti_affinity_rule_add`, `cloudapi.compute.anti_affinity_rule_remove`: в перечисляемый тип `AffinityTopology` было добавлено значение `VM` в связи с переименованием из `vm`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_remove`, `cloudapi.compute.anti_affinity_rule_add`, `cloudapi.compute.anti_affinity_rule_remove`: в перечисляемый тип `AffinityTopology` было добавлено значение `NODE` в связи с переименованием из `node`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`: в перечисляемый тип `BootDevice` было добавлено значение `CDROM` в связи с переименованием из `cdrom`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`: в перечисляемый тип `BootDevice` было добавлено значение `HD` в связи с переименованием из `hd`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.compute.update`, `cloudapi.bservice.group_get`, `cloudapi.bservice.group_add`, `cloudapi.bservice.group_resize`, `cloudapi.k8s.create`, `cloudapi.k8s.worker_add`, `cloudapi.k8s.workers_group_add`, `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: в перечисляемый тип `Chipset` было добавлено значение `I440FX` в связи с переименованием из `i440fx`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create`: в перечисляемый тип `NumaAffinity` было добавлено значение `NONE` в связи с переименованием из `none`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create`: в перечисляемый тип `NumaAffinity` было добавлено значение `STRICT` в связи с переименованием из `strict`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create`: в перечисляемый тип `NumaAffinity` было добавлено значение `LOOSE` в связи с переименованием из `loose`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `TXMode` было добавлено значение `IOTHREAD` в связи с переименованием из `iothread`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `TXMode` было добавлено значение `SELECTED_BY_HYPERVISOR` в связи с переименованием из `selected by hypervisor`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `TXMode` было добавлено значение `TIMER` в связи с переименованием из `timer`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `Ioeventfd` было добавлено значение `OFF` в связи с переименованием из `off`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `Ioeventfd` было добавлено значение `ON` в связи с переименованием из `on`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `Ioeventfd` было добавлено значение `SELECTED_BY_HYPERVISOR` в связи с переименованием из `selected by hypervisor`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `EventIdx` было добавлено значение `OFF` в связи с переименованием из `off`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `EventIdx` было добавлено значение `ON` в связи с переименованием из `on`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемый тип `EventIdx` было добавлено значение `SELECTED_BY_HYPERVISOR` в связи с переименованием из `selected by hypervisor`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `CHANGEMAC` в связи с переименованием из `changemac`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `CPUPIN` в связи с переименованием из `cpupin`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `DPDK` в связи с переименованием из `dpdk`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `HUGEPAGES` в связи с переименованием из `hugepages`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `NUMA` в связи с переименованием из `numa`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `TRUNK` в связи с переименованием из `trunk`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `VMFeature` было добавлено значение `VFNIC` в связи с переименованием из `vfnic`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `RGResourceType` было добавлено значение `VM` в связи с переименованием из `vm`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `RGResourceType` было добавлено значение `K8S` в связи с переименованием из `k8s`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `RGResourceType` было добавлено значение `LB` в связи с переименованием из `lb`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемый тип `RGResourceType` было добавлено значение `VINS` в связи с переименованием из `vins`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемый тип `AccountResourceType` было добавлено значение `VM` в связи с переименованием из `vm`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемый тип `AccountResourceType` было добавлено значение `K8S` в связи с переименованием из `k8s`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемый тип `AccountResourceType` было добавлено значение `LB` в связи с переименованием из `lb`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемый тип `AccountResourceType` было добавлено значение `VINS` в связи с переименованием из `vins`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемый тип `AccountResourceType` было добавлено значение `FLIPGROUP` в связи с переименованием из `flipgroup`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `ImageType` было добавлено значение `CDROM` в связи с переименованием из `cdrom`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `ImageType` было добавлено значение `LINUX` в связи с переименованием из `linux`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `ImageType` было добавлено значение `UNKNOWN` в связи с переименованием из `unknown`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `ImageType` было добавлено значение `VIRTUAL` в связи с переименованием из `virtual`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `ImageType` было добавлено значение `WINDOWS` в связи с переименованием из `windows`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `NetIfaceNamingTemplate` было добавлено значение `ENS` в связи с переименованием из `ens`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `NetIfaceNamingTemplate` было добавлено значение `ETH` в связи с переименованием из `eth`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.vins.get`, `cloudapi.vins.nat_rule_add`, `cloudapi.vins.nat_rule_list`, `cloudapi.compute.pfw_list`, `cloudapi.compute.pfw_add`, `cloudapi.compute.pfw_del`: в перечисляемый тип `NATRuleProtocol` было добавлено значение `TCP` в связи с переименованием из `tcp`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.vins.get`, `cloudapi.vins.nat_rule_add`, `cloudapi.vins.nat_rule_list`, `cloudapi.compute.pfw_list`, `cloudapi.compute.pfw_add`, `cloudapi.compute.pfw_del`: в перечисляемый тип `NATRuleProtocol` было добавлено значение `UDP` в связи с переименованием из `udp`.|
|
||||||
|
| BPYS-755 | Функция `cloudapi.vins.get`: в перечисляемый тип `VNFDevType` было добавлено значение `VYOS` в связи с переименованием из `vyos`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `BootMode` было добавлено значение `BIOS` в связи с переименованием из `bios`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемый тип `BootMode` было добавлено значение `UEFI` в связи с переименованием из `uefi`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`: в перечисляемый тип `BootLoaderType` было добавлено значение `LINUX` в связи с переименованием из `linux`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`: в перечисляемый тип `BootLoaderType` было добавлено значение `UNKNOWN` в связи с переименованием из `unknown`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`: в перечисляемый тип `BootLoaderType` было добавлено значение `WINDOWS` в связи с переименованием из `windows`.|
|
||||||
|
| BPYS-755 | Функция `cloudapi.compute.change_link_state`: в перечисляемый тип `LinkState` было добавлено значение `ON` в связи с переименованием из `on`.|
|
||||||
|
| BPYS-755 | Функция `cloudapi.compute.change_link_state`: в перечисляемый тип `LinkState` было добавлено значение `OFF` в связи с переименованием из `off`.|
|
||||||
|
| BPYS-768 | Добавлена функция `cloudbroker.account.update_user`. |
|
||||||
|
| BPYS-752 | Добавлена функция `cloudbroker.account.update`. |
|
||||||
|
| BPYS-756 | Добавлен атрибут `status_code` в классе `RequestException`. |
|
||||||
|
| BPYS-767 | Функция `cloudapi.rg.update`: добавлен параметр `storage_policies_quotas` в связи с переименованием из `storage_policies`. |
|
||||||
|
| BPYS-762 | Функция `cloudbroker.compute.migrate_storage_list`: добавлен атрибут `CloudbrokerComputeMigrateStorageListResultModel.data.source_node_id` в связи с переименованием из `source_stack_id`. |
|
||||||
|
| BPYS-763 | Функция `cloudbroker.compute.migrate_storage_list`: добавлен атрибут `CloudbrokerComputeMigrateStorageListResultModel.data.target_node_id` в связи с переименованием из `target_stack_id`. |
|
||||||
|
| BPYS-800 | Добавлена функция `cloudbroker.account.update_compute_features`. |
|
||||||
|
| BPYS-787 | Функция `cloudapi.bservice.group_add`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-789 | Функция `cloudapi.bservice.group_resize`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-791 | Функция `cloudapi.k8s.create`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-793 | Функция `cloudapi.k8s.worker_add`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-795 | Функция `cloudapi.k8s.workers_group_add`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-797 | Функция `cloudapi.kvmx86.create`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-799 | Функция `cloudapi.kvmx86.create_blank`: у параметра `chipset` изменено значение по умолчанию с `Chipset.I440FX` на `Chipset.Q35`. |
|
||||||
|
| BPYS-810 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.pinned_to_node` в связи с переименованием из `pinned_to_stack`. |
|
||||||
|
| BPYS-811 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.read_only`. |
|
||||||
|
| BPYS-807 | Добавлена функция `cloudapi.compute.pin_to_node` в связи с переименованием из `cloudapi.compute.pin_to_stack`. |
|
||||||
|
| BPYS-808 | Добавлена функция `cloudapi.compute.unpin_from_node` в связи с переименованием из `cloudapi.compute.unpin_from_stack`. |
|
||||||
|
| BPYS-833 | Добавлена функция `cloudbroker.compute.change_read_only`. |
|
||||||
|
| BPYS-813 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `cpu_pin`. |
|
||||||
|
| BPYS-814 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `hp_backed`. |
|
||||||
|
| BPYS-815 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `numa_affinity`. |
|
||||||
|
| BPYS-830 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.config.resources.node_id` в связи с переименованием из `stack_id`. |
|
||||||
|
| BPYS-828 | Функция `cloudapi.bservice.get`: добавлен атрибут `CloudapiBserviceGetResultModel.vms.node_id` в связи с переименованием из `stack_id`. |
|
||||||
|
| BPYS-824 | Функция `cloudbroker.compute.start_migration_in`: добавлен параметр `node_id` в связи с переименованием из `stack_id`. |
|
||||||
|
| BPYS-821 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.pinned_to_node` в связи с переименованием из `pinned_to_stack`. |
|
||||||
|
| BPYS-821 | Функция `cloudapi.compute.list_deleted`: добавлен атрибут `CloudapiComputeListDeletedResultModel.data.pinned_to_node` в связи с переименованием из `pinned_to_stack`. |
|
||||||
|
| BPYS-822 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.read_only`. |
|
||||||
|
| BPYS-822 | Функция `cloudapi.compute.list_deleted`: добавлен атрибут `CloudapiComputeListDeletedResultModel.data.read_only`. |
|
||||||
|
| BPYS-758 | Добавлена возможность обращаться к аттрибутам `cloudapi`, `cloudbroker`, `system` через аттрибуты `ca`, `cb`, `sys`. |
|
||||||
|
| BPYS-803 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.total_disks_size_gb` в связи с переименованием из `total_disks_size`. |
|
||||||
|
| BPYS-803 | Функция `cloudapi.compute.list_deleted`: добавлен атрибут `CloudapiComputeListDeletedResultModel.data.total_disks_size_gb` в связи с переименованием из `total_disks_size`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.size_used_gb` в связи с переименованием из `size_used`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.get`: добавлен атрибут `CloudapiDiskGetResultModel.size_used_gb` в связи с переименованием из `size_used`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.list_deleted`: добавлен атрибут `CloudapiDiskListDeletedResultModel.data.size_used_gb` в связи с переименованием из `size_used`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.list_unattached`: добавлен атрибут `CloudapiDiskListUnattachedResultModel.data.size_used_gb` в связи с переименованием из `size_used`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.list`: добавлен атрибут `CloudapiDiskListResultModel.data.size_used_gb` в связи с переименованием из `size_used`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.size_available_gb` в связи с переименованием из `size_available`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.get`: добавлен атрибут `CloudapiDiskGetResultModel.size_available_gb` в связи с переименованием из `size_available`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.list_deleted`: добавлен атрибут `CloudapiDiskListDeletedResultModel.data.size_available_gb` в связи с переименованием из `size_available`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.list_unattached`: добавлен атрибут `CloudapiDiskListUnattachedResultModel.data.size_available_gb` в связи с переименованием из `size_available`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.list`: добавлен атрибут `CloudapiDiskListResultModel.data.size_available_gb` в связи с переименованием из `size_available`. |
|
||||||
|
| BPYS-832 | Функция `cloudapi.pcidevice.list`: добавлен атрибут `CloudapiPcideviceListResultModel.data.node_id` в связи с переименованием из `stack_id`. |
|
||||||
|
| BPYS-834 | Реализовано добавление генерируемых полей моделей в словарь, возвращаемый методом `model_dump`. |
|
||||||
|
| BPYS-844 | Функция `cloudapi.compute.redeploy`: у параметра `storage_policy_id` добавлено значение по умолчанию `None`. |
|
||||||
|
| BPYS-839 | Функция `cloudapi.disks.list_types`: в перечисляемом типе `PoolDiskType` был добавлен атрибут `BOOT` в связи с переименованием из `B`.|
|
||||||
|
| BPYS-839 | Функция `cloudapi.disks.list_types`: в перечисляемом типе `PoolDiskType` был добавлен атрибут `DATA` в связи с переименованием из `D`.|
|
||||||
|
| BPYS-839 | Функции `cloudapi.compute.disk_add`, `cloudapi.compute.disk_attach`, `cloudapi.compute.get`, `cloudapi.disks.get`, `cloudapi.disks.list`, `cloudapi.disks.list_deleted`, `cloudapi.disks.list_unattached`: в перечисляемом типе `DiskType` был добавлен атрибут `BOOT` в связи с переименованием из `B`.|
|
||||||
|
| BPYS-839 | Функции `cloudapi.compute.disk_add`, `cloudapi.compute.disk_attach`, `cloudapi.compute.get`, `cloudapi.disks.get`, `cloudapi.disks.list`, `cloudapi.disks.list_deleted`, `cloudapi.disks.list_unattached`: в перечисляемом типе `DiskType` был добавлен атрибут `DATA` в связи с переименованием из `D`.|
|
||||||
|
| BPYS-836 | Функция `cloudapi.account.get`: добавлен атрибут `CloudapiAccountGetResultModel.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.account.list_deleted`: добавлен атрибут `CloudapiAccountListDeletedResultModel.data.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.account.list`: добавлен атрибут `CloudapiAccountListResultModel.data.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.acl.account.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.acl.rg.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.acl.vm.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.user_list`: добавлен атрибут `CloudapiComputeUserListResultModel.data.acl.account.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.user_list`: добавлен атрибут `CloudapiComputeUserListResultModel.data.acl.rg.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.user_list`: добавлен атрибут `CloudapiComputeUserListResultModel.data.acl.vm.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.k8s.get`: добавлен атрибут `CloudapiK8sGetResultModel.acl.account.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.k8s.get`: добавлен атрибут `CloudapiK8sGetResultModel.acl.k8s.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.k8s.get`: добавлен атрибут `CloudapiK8sGetResultModel.acl.rg.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.get`: добавлен атрибут `CloudapiRgGetResultModel.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.list_deleted`: добавлен атрибут `CloudapiRgListDeletedResultModel.data.account_acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.list_deleted`: добавлен атрибут `CloudapiRgListDeletedResultModel.data.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.list`: добавлен атрибут `CloudapiRgListResultModel.data.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudbroker.account.get`: добавлен атрибут `CloudbrokerAccountGetResultModel.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudbroker.account.list_deleted`: добавлен атрибут `CloudbrokerAccountListDeletedResultModel.data.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-836 | Функция `cloudbroker.account.list`: добавлен атрибут `CloudbrokerAccountListResultModel.data.acl.user_name` в связи с переименованием из `user_group_id`. |
|
||||||
|
| BPYS-838 | Функция `cloudapi.bservice.group_parent_add`: добавлен параметр `child_id` в связи с переименованием из `bsgroup_id`. |
|
||||||
|
| BPYS-838 | Функция `cloudapi.bservice.group_parent_remove`: добавлен параметр `child_id` в связи с переименованием из `bsgroup_id`. |
|
||||||
|
| BPYS-840 | Функция `cloudapi.compute.list_deleted`: добавлен атрибут `CloudapiComputeListDeletedResultModel.data.pci_devices` в связи с переименованием из `devices`. |
|
||||||
|
| BPYS-840 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.pci_devices` в связи с переименованием из `devices`. |
|
||||||
|
| BPYS-853 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.config.mgmt.user_name` в связи с переименованием из `user`. |
|
||||||
|
| BPYS-866 | Функция `cloudbroker.user.create`: добавлен параметр `email_address` в связи с переименованием из `email_addresses`. |
|
||||||
|
| BPYS-866 | Функция `cloudbroker.user.create`: у параметра `email_address` изменен тип с `list[str]` на `str`. |
|
||||||
|
| BPYS-866 | Функция `cloudbroker.user.create`: тип ответа функции изменен с `bool` на `str`. |
|
||||||
|
| BPYS-869 | Функция `cloudbroker.user.list`: добавлено значение по умолчанию `1` для параметра `page_number`. |
|
||||||
|
| BPYS-870 | Функция `cloudbroker.user.list`: добавлено значение по умолчанию `100` для параметра `page_size`. |
|
||||||
|
| BPYS-858 | Функция `cloudapi.storage_policy.list`: добавлен параметр `sep_tech_status`. |
|
||||||
|
| BPYS-864 | Функция `cloudbroker.storage_policy.list`: добавлен параметр `sep_tech_status`. |
|
||||||
|
| BPYS-860 | Функция `cloudapi.storage_policy.list`: добавлен атрибут `CloudapiStoragePolicyListResultModel.data.sep_pools.sep_tech_status`. |
|
||||||
|
| BPYS-860 | Функция `cloudbroker.storage_policy.list`: добавлен атрибут `CloudbrokerStoragePolicyListResultModel.data.sep_pools.sep_tech_status`. |
|
||||||
|
| BPYS-885 | Функции `cloudapi.trunk.list`, `cloudapi.trunk.get`: добавлен атрибут `TrunkAPIResultNM.mtu`. |
|
||||||
|
| BPYS-875 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.disks.sep_id`. |
|
||||||
|
| BPYS-878 | Функция `cloudapi.kvmx86.create`: добавлен параметр `interfaces.net_prefix`. |
|
||||||
|
| BPYS-878 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.net_prefix`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.account.get`: добавлен атрибут `CloudapiAccountGetResultModel.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.account.list_deleted`: добавлен атрибут `CloudapiAccountListDeletedResultModel.data.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.account.list`: добавлен атрибут `CloudapiAccountListResultModel.data.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.acl.account.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.acl.rg.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.acl.vm.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.user_list`: добавлен атрибут `CloudapiComputeUserListResultModel.data.acl.account.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.user_list`: добавлен атрибут `CloudapiComputeUserListResultModel.data.acl.rg.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.user_list`: добавлен атрибут `CloudapiComputeUserListResultModel.data.acl.vm.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.k8s.get`: добавлен атрибут `CloudapiK8sGetResultModel.acl.account.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.k8s.get`: добавлен атрибут `CloudapiK8sGetResultModel.acl.k8s.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.k8s.get`: добавлен атрибут `CloudapiK8sGetResultModel.acl.rg.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.get`: добавлен атрибут `CloudapiRgGetResultModel.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.list_deleted`: добавлен атрибут `CloudapiRgListDeletedResultModel.data.account_acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.list_deleted`: добавлен атрибут `CloudapiRgListDeletedResultModel.data.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.list`: добавлен атрибут `CloudapiRgListResultModel.data.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudbroker.account.get`: добавлен атрибут `CloudbrokerAccountGetResultModel.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudbroker.account.list_deleted`: добавлен атрибут `CloudbrokerAccountListDeletedResultModel.data.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudbroker.account.list`: добавлен атрибут `CloudbrokerAccountListResultModel.data.acl.user_emails` в связи с переименованием из `emails`. |
|
||||||
|
| BPYS-895 | Функции `cloudapi.disks.get`, `cloudapi.disks.list`, `cloudapi.disks.list_deleted`, `cloudapi.sep.list_available_sep_and_pools`: в перечисляемый тип `SEPType` добавлен атрибут `USTOR`. |
|
||||||
|
| BPYS-910 | Функция `cloudapi.compute.get`: в модель результата добавлено поле `disks.cache_mode`. |
|
||||||
|
| BPYS-912 | Функция `cloudapi.disks.get`: в модель результата добавлено поле `cache_mode`. |
|
||||||
|
| BPYS-911 | Функции `cloudapi.disks.list`, `cloudapi.disks.list_deleted`: в модели результата добавлено поле `cache_mode`. |
|
||||||
|
| BPYS-880 | Функция `cloudapi.compute.net_attach`: добавлен параметр `net_prefix`. |
|
||||||
|
| BPYS-941 | Функция `cloudapi.zone.get`: в модель результата добавлено поле `node_auto_start`. |
|
||||||
|
| BPYS-942 | Функция `cloudapi.zone.list`: в модель результата добавлено поле `data.node_auto_start`. |
|
||||||
|
| BPYS-976 | Функция `cloudapi.compute.net_attach`: добавлен параметр `sdn_segment_id`. |
|
||||||
|
| BPYS-977 | Функция `cloudapi.compute.net_attach`: добавлен параметр `sdn_object_group_id`. |
|
||||||
|
| BPYS-978 | Функция `cloudapi.compute.net_attach`: добавлен параметр `sdn_logical_port_display_name`. |
|
||||||
|
| BPYS-979 | Функция `cloudapi.compute.net_attach`: добавлен параметр `sdn_logical_port_description`. |
|
||||||
|
| BPYS-984 | Функции `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.sdn_segment_id`. |
|
||||||
|
| BPYS-985 | Функции `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.sdn_object_group_id`. |
|
||||||
|
| BPYS-986 | Функции `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.sdn_logical_port_display_name`. |
|
||||||
|
| BPYS-987 | Функции `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.sdn_logical_port_description`. |
|
||||||
|
| BPYS-996 | Функция `cloudapi.compute.get`: в модель результата добавлено поле `disks.blkdiscard`. |
|
||||||
|
| BPYS-997 | Функция `cloudapi.disks.get`: в модель результата добавлено поле `blkdiscard`. |
|
||||||
|
| BPYS-998 | Функции `cloudapi.disks.list`, `cloudapi.disks.list_deleted`: в модели результата добавлено поле `data.blkdiscard`. |
|
||||||
|
|
||||||
## Удалено
|
## Удалено
|
||||||
|
|
||||||
| Идентификатор<br>задачи | Описание |
|
| Идентификатор<br>задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
| BPYS-733 | Функция `cloudapi.account.get`: удален атрибут `CloudapiAccountGetResultModel.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.account.update`: удален параметр `uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.get`: удален атрибут `CloudapiRgGetResultModel.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.list_deleted`: удален атрибут `CloudapiRgListDeletedResultModel.data.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.list`: удален атрибут `CloudapiRgListResultModel.data.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.update`: удален параметр `clear_uniq_pools` в связи с переименованием из `clear_sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudapi.rg.update`: удален параметр `uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.create`: удален параметр `uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.get`: удален атрибут `CloudbrokerAccountGetResultModel.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.list_deleted`: удален атрибут `CloudbrokerAccountListDeletedResultModel.data.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-733 | Функция `cloudbroker.account.list`: удален атрибут `CloudbrokerAccountListResultModel.data.uniq_pools` в связи с переименованием в `sep_pools`. |
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_remove`, `cloudapi.compute.anti_affinity_rule_add`, `cloudapi.compute.anti_affinity_rule_remove`: в перечисляемом типе `AffinityTopology` было удалено значение `vm` в связи с переименованием в `VM`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_add`, `cloudapi.compute.affinity_rule_remove`, `cloudapi.compute.anti_affinity_rule_add`, `cloudapi.compute.anti_affinity_rule_remove`: в перечисляемом типе `AffinityTopology` было удалено значение `node` в связи с переименованием в `NODE`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`: в перечисляемом типе `BootDevice` было удалено значение `cdrom` в связи с переименованием в `CDROM`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`: в перечисляемом типе `BootDevice` было удалено значение `hd` в связи с переименованием в `HD`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.compute.update`, `cloudapi.bservice.group_get`, `cloudapi.bservice.group_add`, `cloudapi.bservice.group_resize`, `cloudapi.k8s.create`, `cloudapi.k8s.worker_add`, `cloudapi.k8s.workers_group_add`, `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: в перечисляемом типе `Chipset` было удалено значение `i440fx` в связи с переименованием в `I440FX`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create`: в перечисляемом типе `NumaAffinity` было удалено значение `none` в связи с переименованием в `NONE`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create`: в перечисляемом типе `NumaAffinity` было удалено значение `strict` в связи с переименованием в `STRICT`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create`: в перечисляемом типе `NumaAffinity` было удалено значение `loose` в связи с переименованием в `LOOSE`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `TXMode` было удалено значение `iothread` в связи с переименованием в `IOTHREAD`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `TXMode` было удалено значение `selected by hypervisor` в связи с переименованием в `SELECTED_BY_HYPERVISOR`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `TXMode` было удалено значение `timer` в связи с переименованием в `TIMER`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `Ioeventfd` было удалено значение `off` в связи с переименованием в `OFF`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `Ioeventfd` было удалено значение `on` в связи с переименованием в `ON`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `Ioeventfd` было удалено значение `selected by hypervisor` в связи с переименованием в `SELECTED_BY_HYPERVISOR`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `EventIdx` было удалено значение `off` в связи с переименованием в `OFF`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `EventIdx` было удалено значение `on` в связи с переименованием в `ON`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.net_attach`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.vins.get`: в перечисляемом типе `EventIdx` было удалено значение `selected by hypervisor` в связи с переименованием в `SELECTED_BY_HYPERVISOR`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `changemac` в связи с переименованием в `CHANGEMAC`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `cpupin` в связи с переименованием в `CPUPIN`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `dpdk` в связи с переименованием в `DPDK`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `hugepages` в связи с переименованием в `HUGEPAGES`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `numa` в связи с переименованием в `NUMA`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `trunk` в связи с переименованием в `TRUNK`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudapi.account.list`, `cloudapi.account.list_deleted` `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`, `cloudbroker.account.create`, `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `VMFeature` было удалено значение `vfnic` в связи с переименованием в `VFNIC`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `RGResourceType` было удалено значение `vm` в связи с переименованием в `VM`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `RGResourceType` было удалено значение `k8s` в связи с переименованием в `K8S`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `RGResourceType` было удалено значение `lb` в связи с переименованием в `LB`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.rg.get`, `cloudapi.rg.list`, `cloudapi.rg.list_deleted`: в перечисляемом типе `RGResourceType` было удалено значение `vins` в связи с переименованием в `VINS`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемом типе `AccountResourceType` было удалено значение `vm` в связи с переименованием в `VM`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемом типе `AccountResourceType` было удалено значение `k8s` в связи с переименованием в `K8S`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемом типе `AccountResourceType` было удалено значение `lb` в связи с переименованием в `LB`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемом типе `AccountResourceType` было удалено значение `vins` в связи с переименованием в `VINS`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.account.get`, `cloudbroker.account.get`, `cloudbroker.account.list`, `cloudbroker.account.list_deleted`: в перечисляемом типе `AccountResourceType` было удалено значение `flipgroup` в связи с переименованием в `FLIPGROUP`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `ImageType` было удалено значение `cdrom` в связи с переименованием в `CDROM`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `ImageType` было удалено значение `linux` в связи с переименованием в `LINUX`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `ImageType` было удалено значение `unknown` в связи с переименованием в `UNKNOWN`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `ImageType` было удалено значение `virtual` в связи с переименованием в `VIRTUAL`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `ImageType` было удалено значение `windows` в связи с переименованием в `WINDOWS`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `NetIfaceNamingTemplate` было удалено значение `ens` в связи с переименованием в `ENS`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `NetIfaceNamingTemplate` было удалено значение `eth` в связи с переименованием в `ETH`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.vins.get`, `cloudapi.vins.nat_rule_add`, `cloudapi.vins.nat_rule_list`, `cloudapi.compute.pfw_list`, `cloudapi.compute.pfw_add`, `cloudapi.compute.pfw_del`: в перечисляемом типе `NATRuleProtocol` было удалено значение `tcp` в связи с переименованием в `TCP`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.vins.get`, `cloudapi.vins.nat_rule_add`, `cloudapi.vins.nat_rule_list`, `cloudapi.compute.pfw_list`, `cloudapi.compute.pfw_add`, `cloudapi.compute.pfw_del`: в перечисляемом типе `NATRuleProtocol` было удалено значение `udp` в связи с переименованием в `UDP`.|
|
||||||
|
| BPYS-755 | Функция `cloudapi.vins.get`: в перечисляемом типе `VNFDevType` было удалено значение `vyos` в связи с переименованием в `VYOS`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `BootMode` было удалено значение `bios` в связи с переименованием в `BIOS`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`, `cloudapi.image.list`: в перечисляемом типе `BootMode` было удалено значение `uefi` в связи с переименованием в `UEFI`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`: в перечисляемом типе `BootLoaderType` было удалено значение `linux` в связи с переименованием в `LINUX`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`: в перечисляемом типе `BootLoaderType` было удалено значение `unknown` в связи с переименованием в `UNKNOWN`.|
|
||||||
|
| BPYS-755 | Функции `cloudapi.compute.get`, `cloudapi.compute.update`, `cloudapi.compute.list`, `cloudapi.compute.list_deleted`, `cloudapi.kvmx86.create_blank`, `cloudapi.image.create`, `cloudapi.image.get`: в перечисляемом типе `BootLoaderType` было удалено значение `windows` в связи с переименованием в `WINDOWS`.|
|
||||||
|
| BPYS-755 | Функция `cloudapi.compute.change_link_state`: в перечисляемом типе `LinkState` было удалено значение `on` в связи с переименованием в `ON`.|
|
||||||
|
| BPYS-755 | Функция `cloudapi.compute.change_link_state`: в перечисляемом типе `LinkState` было удалено значение `off` в связи с переименованием в `OFF`.|
|
||||||
|
| BPYS-767 | Функция `cloudapi.rg.update`: удален параметр `storage_policies` в связи с переименованием в `storage_policies_quotas`. |
|
||||||
|
| BPYS-762 | Функция `cloudbroker.compute.migrate_storage_list`: удален атрибут `CloudbrokerComputeMigrateStorageListResultModel.data.source_stack_id` в связи с переименованием в `source_node_id`. |
|
||||||
|
| BPYS-763 | Функция `cloudbroker.compute.migrate_storage_list`: удален атрибут `CloudbrokerComputeMigrateStorageListResultModel.data.target_stack_id` в связи с переименованием в `target_node_id`. |
|
||||||
|
| BPYS-765 | Функция `cloudapi.account.update`: удален параметр `ext_traffic_quota`. |
|
||||||
|
| BPYS-771 | Функция `cloudbroker.account.create`: удален параметр `ext_traffic_quota`. |
|
||||||
|
| BPYS-783 | Функция `cloudapi.rg.update`: удален параметр `ext_traffic_quota`. |
|
||||||
|
| BPYS-810 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.pinned_to_stack` в связи с переименованием в `pinned_to_node`. |
|
||||||
|
| BPYS-807 | Удалена функция `cloudapi.compute.pin_to_stack` в связи с переименованием в `cloudapi.compute.pin_to_node`. |
|
||||||
|
| BPYS-808 | Удалена функция `cloudapi.compute.unpin_from_stack` в связи с переименованием в `cloudapi.compute.unpin_from_node`. |
|
||||||
|
| BPYS-830 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfdev.config.resources.stack_id` в связи с переименованием в `node_id`. |
|
||||||
|
| BPYS-828 | Функция `cloudapi.bservice.get`: удален атрибут `CloudapiBserviceGetResultModel.vms.stack_id` в связи с переименованием в `node_id`. |
|
||||||
|
| BPYS-824 | Функция `cloudbroker.compute.start_migration_in`: удален параметр `stack_id` в связи с переименованием в `node_id`. |
|
||||||
|
| BPYS-818 | Удалена функция `cloudapi.stack.get`. |
|
||||||
|
| BPYS-785 | Функция `cloudapi.rg.create`: удален параметр `ext_traffic_quota`. |
|
||||||
|
| BPYS-821 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.pinned_to_stack` в связи с переименованием в `pinned_to_node`. |
|
||||||
|
| BPYS-821 | Функция `cloudapi.compute.list_deleted`: удален атрибут `CloudapiComputeListDeletedResultModel.data.pinned_to_stack` в связи с переименованием в `pinned_to_node`. |
|
||||||
|
| BPYS-803 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.total_disks_size` в связи с переименованием в `total_disks_size_gb`. |
|
||||||
|
| BPYS-803 | Функция `cloudapi.compute.list_deleted`: удален атрибут `CloudapiComputeListDeletedResultModel.data.total_disks_size` в связи с переименованием в `total_disks_size_gb`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.size_used` в связи с переименованием в `size_used_gb`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.get`: удален атрибут `CloudapiDiskGetResultModel.size_used` в связи с переименованием в `size_used_gb`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.list_deleted`: удален атрибут `CloudapiDiskListDeletedResultModel.data.size_used` в связи с переименованием в `size_used_gb`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.list_unattached`: удален атрибут `CloudapiDiskListUnattachedResultModel.data.size_used` в связи с переименованием в `size_used_gb`. |
|
||||||
|
| BPYS-804 | Функция `cloudapi.disk.list`: удален атрибут `CloudapiDiskListResultModel.data.size_used` в связи с переименованием в `size_used_gb`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.size_available` в связи с переименованием в `size_available_gb`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.get`: удален атрибут `CloudapiDiskGetResultModel.size_available` в связи с переименованием в `size_available_gb`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.list_deleted`: удален атрибут `CloudapiDiskListDeletedResultModel.data.size_available` в связи с переименованием в `size_available_gb`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.list_unattached`: удален атрибут `CloudapiDiskListUnattachedResultModel.data.size_available` в связи с переименованием в `size_available_gb`. |
|
||||||
|
| BPYS-805 | Функция `cloudapi.disk.list`: удален атрибут `CloudapiDiskListResultModel.data.size_available` в связи с переименованием в `size_available_gb`. |
|
||||||
|
| BPYS-766 | Функция `cloudapi.account.get`: удален атрибут `CloudapiAccountGetResultModel.quotas.ext_traffic`. |
|
||||||
|
| BPYS-766 | Функция `cloudbroker.account.get`: удален атрибут `CloudbrokerAccountGetResultModel.quotas.ext_traffic`. |
|
||||||
|
| BPYS-766 | Функция `cloudbroker.account.list`: удален атрибут `CloudbrokerAccountListResultModel.data.quotas.ext_traffic`. |
|
||||||
|
| BPYS-766 | Функция `cloudbroker.account.list_deleted`: удален атрибут `CloudbrokerAccountListDeletedResultModel.data.quotas.ext_traffic`. |
|
||||||
|
| BPYS-766 | Функция `cloudapi.rg.get`: удален атрибут `CloudapiRgGetResultModel.quotas.ext_traffic`. |
|
||||||
|
| BPYS-766 | Функция `cloudapi.rg.list`: удален атрибут `CloudapiRgListResultModel.data.quotas.ext_traffic`. |
|
||||||
|
| BPYS-766 | Функция `cloudapi.rg.list_deleted`: удален атрибут `CloudapiRgListDeletedResultModel.data.quotas.ext_traffic`. |
|
||||||
|
| BPYS-819 | Удалена функция `cloudapi.stack.list`. |
|
||||||
|
| BPYS-832 | Функция `cloudapi.pcidevice.list`: удален атрибут `CloudapiPcideviceListResultModel.data.stack_id` в связи с переименованием в `node_id`. |
|
||||||
|
| BPYS-850 | Функция `cloudapi.account.get_resource_consumption`: удален атрибут `CloudapiAccountGetResourceConsumptionResultModel.consumed.ext_traffic`. |
|
||||||
|
| BPYS-850 | Функция `cloudapi.rg.get_resource_consumption`: удален атрибут `CloudapiRgGetResourceConsumptionResultModel.consumed.ext_traffic`. |
|
||||||
|
| BPYS-850 | Функция `cloudapi.user.get_resource_consumption`: удален атрибут `CloudapiUserGetResourceConsumptionResultModel.consumed.ext_traffic`. |
|
||||||
|
| BPYS-850 | Функция `cloudbroker.account.get_resource_consumption`: удален атрибут `CloudbrokerAccountGetResourceConsumptionResultModel.consumed.ext_traffic`. |
|
||||||
|
| BPYS-851 | Функция `cloudapi.account.get_resource_consumption`: удален атрибут `CloudapiAccountGetResourceConsumptionResultModel.reserved.ext_traffic`. |
|
||||||
|
| BPYS-851 | Функция `cloudapi.rg.get_resource_consumption`: удален атрибут `CloudapiRgGetResourceConsumptionResultModel.reserved.ext_traffic`. |
|
||||||
|
| BPYS-851 | Функция `cloudapi.user.get_resource_consumption`: удален атрибут `CloudapiUserGetResourceConsumptionResultModel.reserved.ext_traffic`. |
|
||||||
|
| BPYS-851 | Функция `cloudbroker.account.get_resource_consumption`: удален атрибут `CloudbrokerAccountGetResourceConsumptionResultModel.reserved.ext_traffic`. |
|
||||||
|
| BPYS-852 | Функция `cloudapi.account.get_resource_consumption`: удален атрибут `CloudapiAccountGetResourceConsumptionResultModel.quotas.ext_traffic`. |
|
||||||
|
| BPYS-852 | Функция `cloudapi.rg.get_resource_consumption`: удален атрибут `CloudapiRgGetResourceConsumptionResultModel.quotas.ext_traffic`. |
|
||||||
|
| BPYS-852 | Функция `cloudbroker.account.get_resource_consumption`: удален атрибут `CloudbrokerAccountGetResourceConsumptionResultModel.quotas.ext_traffic`. |
|
||||||
|
| BPYS-839 | Функция `cloudapi.disks.list_types`: в перечисляемом типе `PoolDiskType` был удален атрибут `B` в связи с переименованием в `BOOT`.|
|
||||||
|
| BPYS-839 | Функция `cloudapi.disks.list_types`: в перечисляемом типе `PoolDiskType` был удален атрибут `D` в связи с переименованием в `DATA`.|
|
||||||
|
| BPYS-839 | Функции `cloudapi.compute.disk_add`, `cloudapi.compute.disk_attach`, `cloudapi.compute.get`, `cloudapi.disks.get`, `cloudapi.disks.list`, `cloudapi.disks.list_deleted`, `cloudapi.disks.list_unattached`: в перечисляемом типе `DiskType` был удален атрибут `B` в связи с переименованием в `BOOT`.|
|
||||||
|
| BPYS-839 | Функции `cloudapi.compute.disk_add`, `cloudapi.compute.disk_attach`, `cloudapi.compute.get`, `cloudapi.disks.get`, `cloudapi.disks.list`, `cloudapi.disks.list_deleted`, `cloudapi.disks.list_unattached`: в перечисляемом типе `DiskType` был удален атрибут `D` в связи с переименованием в `DATA`.|
|
||||||
|
| BPYS-836 | Функция `cloudapi.account.get`: удален атрибут `CloudapiAccountGetResultModel.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.account.list_deleted`: удален атрибут `CloudapiAccountListDeletedResultModel.data.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.account.list`: удален атрибут `CloudapiAccountListResultModel.data.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.acl.account.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.acl.rg.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.acl.vm.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.user_list`: удален атрибут `CloudapiComputeUserListResultModel.data.acl.account.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.user_list`: удален атрибут `CloudapiComputeUserListResultModel.data.acl.rg.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.compute.user_list`: удален атрибут `CloudapiComputeUserListResultModel.data.acl.vm.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.k8s.get`: удален атрибут `CloudapiK8sGetResultModel.acl.account.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.k8s.get`: удален атрибут `CloudapiK8sGetResultModel.acl.k8s.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.k8s.get`: удален атрибут `CloudapiK8sGetResultModel.acl.rg.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.get`: удален атрибут `CloudapiRgGetResultModel.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.list_deleted`: удален атрибут `CloudapiRgListDeletedResultModel.data.account_acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.list_deleted`: удален атрибут `CloudapiRgListDeletedResultModel.data.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudapi.rg.list`: удален атрибут `CloudapiRgListResultModel.data.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudbroker.account.get`: удален атрибут `CloudbrokerAccountGetResultModel.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudbroker.account.list_deleted`: удален атрибут `CloudbrokerAccountListDeletedResultModel.data.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-836 | Функция `cloudbroker.account.list`: удален атрибут `CloudbrokerAccountListResultModel.data.acl.user_group_id` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-838 | Функция `cloudapi.bservice.group_parent_add`: удален параметр `bsgroup_id` в связи с переименованием в `child_id`. |
|
||||||
|
| BPYS-838 | Функция `cloudapi.bservice.group_parent_remove`: удален параметр `bsgroup_id` в связи с переименованием в `child_id`. |
|
||||||
|
| BPYS-840 | Функция `cloudapi.compute.list_deleted`: удален атрибут `CloudapiComputeListDeletedResultModel.data.devices` в связи с переименованием в `pci_devices`. |
|
||||||
|
| BPYS-840 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.devices` в связи с переименованием в `pci_devices`. |
|
||||||
|
| BPYS-853 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfdev.config.mgmt.user` в связи с переименованием в `user_name`. |
|
||||||
|
| BPYS-866 | Функция `cloudbroker.user.create`: удален параметр `email_addresses` в связи с переименованием в `email_address`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.account.get`: удален атрибут `CloudapiAccountGetResultModel.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.account.list_deleted`: удален атрибут `CloudapiAccountListDeletedResultModel.data.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.account.list`: удален атрибут `CloudapiAccountListResultModel.data.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.acl.account.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.acl.rg.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.acl.vm.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.user_list`: удален атрибут `CloudapiComputeUserListResultModel.data.acl.account.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.user_list`: удален атрибут `CloudapiComputeUserListResultModel.data.acl.rg.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.compute.user_list`: удален атрибут `CloudapiComputeUserListResultModel.data.acl.vm.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.k8s.get`: удален атрибут `CloudapiK8sGetResultModel.acl.account.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.k8s.get`: удален атрибут `CloudapiK8sGetResultModel.acl.k8s.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.k8s.get`: удален атрибут `CloudapiK8sGetResultModel.acl.rg.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.get`: удален атрибут `CloudapiRgGetResultModel.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.list_deleted`: удален атрибут `CloudapiRgListDeletedResultModel.data.account_acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.list_deleted`: удален атрибут `CloudapiRgListDeletedResultModel.data.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudapi.rg.list`: удален атрибут `CloudapiRgListResultModel.data.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudbroker.account.get`: удален атрибут `CloudbrokerAccountGetResultModel.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudbroker.account.list_deleted`: удален атрибут `CloudbrokerAccountListDeletedResultModel.data.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-874 | Функция `cloudbroker.account.list`: удален атрибут `CloudbrokerAccountListResultModel.data.acl.emails` в связи с переименованием в `user_emails`. |
|
||||||
|
| BPYS-899 | Функция `cloudbroker.compute.clone`: удалена возможность не задавать параметр `storage_policy_id`. |
|
||||||
|
| BPYS-900 | Функции `cloudapi.compute.list`, `cloudapi.compute.list_deleted`: из модели результата удалено поле `data.snapshot_sets.disks` в связи с переименованием в `data.snapshot_sets.disk_ids`. |
|
||||||
|
| BPYS-900 | Функция `cloudapi.compute.get`: из модели результата удалено поле `snapshot_sets.disks` в связи с переименованием в `snapshot_sets.disk_ids`. |
|
||||||
|
| BPYS-900 | Функция `cloudapi.compute.snapshot_list`: из модели результата удалено поле `data.disks` в связи с переименованием в `data.disk_ids`. |
|
||||||
|
| BPYS-887 | Функции `cloudapi.security_group.get`, `cloudapi.security_group.update`, `cloudbroker.security_group.get`, `cloudbroker.security_group.update`: из модели результата удалено поле `rules.remote_ip_prefix` в связи с переименованием в `rules.remote_net_cidr`. |
|
||||||
|
| BPYS-887 | Функции `cloudapi.security_group.list`, `cloudbroker.security_group.list`: из модели результата удалено поле `data.rules.remote_ip_prefix` в связи с переименованием в `data.rules.remote_net_cidr`. |
|
||||||
|
| BPYS-887 | Функции `cloudapi.security_group.create_rule`, `cloudbroker.security_group.create_rule`: удален параметр `remote_ip_prefix` в связи с переименованием в `remote_net_cidr`. |
|
||||||
|
| BPYS-928 | Функция `cloudapi.image.get`: в моделе ответа тип поля `res_id` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-924 | Функция `cloudbroker.account.update`: для параметра `send_access_emails` изменено значение по умолчанию с `False` на `None` . |
|
||||||
|
| BPYS-919 | Функция `cloudapi.account.update`: для параметра `send_access_emails` изменено значение по умолчанию с `False` на `None` . |
|
||||||
|
| BPYS-944 | Функция `cloudapi.bservice.group_add`: удален параметр `driver` . |
|
||||||
|
| BPYS-936 | Функции `cloudbroker.account.get`, `cloudapi.account.get`, `cloudapi.rg.get`: в моделе ответа тип поля `acl.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функции `cloudapi.account.list_deleted`, `cloudapi.account.list`, `cloudapi.rg.list`, `cloudbroker.account.list`, `cloudapi.rg.list_deleted`, `cloudbroker.account.list_deleted`: в моделе ответа тип поля `data.acl.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функции `cloudapi.k8s.get`, `cloudapi.compute.get`: в моделе ответа тип поля `acl.account.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функции `cloudapi.compute.get`, `cloudapi.k8s.get`: в моделе ответа тип поля `acl.rg.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функция `cloudapi.compute.get`: в моделе ответа тип поля `acl.vm.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функция `cloudapi.compute.user_list`: в моделе ответа тип поля `data.acl.account.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функция `cloudapi.compute.user_list`: в моделе ответа тип поля `data.acl.rg.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функция `cloudapi.compute.user_list`: в моделе ответа тип поля `data.acl.vm.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-936 | Функция `cloudapi.k8s.get`: в моделе ответа тип поля `acl.k8s.guid` изменен с `str` на `str \| None`. |
|
||||||
|
| BPYS-956 | Функция `cloudapi.flipgroup.list`: удален параметр `rg_id`. |
|
||||||
|
| BPYS-952 | Функция `cloudapi.flipgroup.get`: из модели результата удалено поле `rg_id` . |
|
||||||
|
| BPYS-953 | Функция `cloudapi.flipgroup.get`: из модели результата удалено поле `rg_name` . |
|
||||||
|
| BPYS-999 | Функция `cloudapi.image.get`: из модели результата удалено поле `ckey` . |
|
||||||
|
|
||||||
## Исправлено
|
## Исправлено
|
||||||
|
|
||||||
| Идентификатор<br>задачи | Описание |
|
| Идентификатор<br>задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| BPYS-990 | Функции `cloudapi.kvmx86.create`, `cloudapi.kvmx86.create_blank`: вызов функций завершался ошибкой валидации поля `sdn_logical_port_id` для модели `InterfaceAPIParamsNM` при передаче данных в параметр `interfaces`. |
|
| BPYS-842 | Функция `cloudbroker.user.get`: вызов функции завершался ошибкой валидации полей `_ckey` и `_meta`. |
|
||||||
|
| BPYS-922 | Функция `cloudbroker.account.add_user`: вызов функции завершался ошибкой: `HTTPError: 400 Client Error` при передаче значения `CXDRAU` из перечисляемого типа `AccessType`. Тип параметра был исправлен с `AccessType` на `AccessTypeForSet`. |
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -1,4 +0,0 @@
|
|||||||
dev:
|
|
||||||
pip install -e .
|
|
||||||
pip install -r requirements-dev.txt
|
|
||||||
pre-commit install
|
|
||||||
67
README.md
67
README.md
@@ -16,7 +16,7 @@
|
|||||||
- [Ошибки валидации данных](#ошибки-валидации-данных)
|
- [Ошибки валидации данных](#ошибки-валидации-данных)
|
||||||
- [Ошибки HTTP](#ошибки-http)
|
- [Ошибки HTTP](#ошибки-http)
|
||||||
- [Ошибка несовместимости c API](#ошибка-несовместимости-с-api)
|
- [Ошибка несовместимости c API](#ошибка-несовместимости-с-api)
|
||||||
- [Доступный функционал](#доступный-функционал)
|
- [Доступная функциональность](#доступная-функциональность)
|
||||||
- [Способы авторизации](#способы-авторизации)
|
- [Способы авторизации](#способы-авторизации)
|
||||||
- [Функции API](#функции-api)
|
- [Функции API](#функции-api)
|
||||||
- [Cloudapi](#cloudapi)
|
- [Cloudapi](#cloudapi)
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
**Dynamix Python SDK** предоставляет удобный интерфейс для интеграции взаимодействия с API **Dynamix Enterprise** в программный код на языке Python.
|
**Dynamix Python SDK** предоставляет удобный интерфейс для интеграции взаимодействия с API **Dynamix Enterprise** в программный код на языке Python.
|
||||||
|
|
||||||
**Примечание:** проект находится в стадии активной разработки, [доступный функционал](#доступный-функционал) будет расширяться с каждой новой версией.
|
**Примечание:** проект находится в стадии активной разработки, [доступная функциональность](#доступная-функциональность) будет расширяться с каждой новой версией.
|
||||||
|
|
||||||
## Системные требования
|
## Системные требования
|
||||||
|
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
| Версия платформы | Версия SDK |
|
| Версия платформы | Версия SDK |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
| 4.5.0 | 1.4.x |
|
||||||
| 4.4.0 | 1.3.x |
|
| 4.4.0 | 1.3.x |
|
||||||
| 4.4.0 build 963 | 1.2.x |
|
| 4.4.0 build 963 | 1.2.x |
|
||||||
| 4.3.0 | 1.1.x |
|
| 4.3.0 | 1.1.x |
|
||||||
@@ -208,7 +209,7 @@ BVSAuth(
|
|||||||
|
|
||||||
<details><summary>Игнорирование проверки совместимости с API</summary>
|
<details><summary>Игнорирование проверки совместимости с API</summary>
|
||||||
|
|
||||||
**Важно:** игнорирование проверки совместимости с API может вызвать непредвиденные ошибки в работе SDK, поэтому использование данного функционала допустимо только принимая на себя всю ответственность за возможные последствия.
|
**Важно:** игнорирование проверки совместимости с API может вызвать непредвиденные ошибки в работе SDK, поэтому использование данной возможности допустимо только принимая на себя всю ответственность за возможные последствия.
|
||||||
|
|
||||||
При игнорирование выводится только сообщение с предупреждением о несовместимости.
|
При игнорирование выводится только сообщение с предупреждением о несовместимости.
|
||||||
|
|
||||||
@@ -234,17 +235,35 @@ Dynamix(
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
Предусмотрена возможность использования сокращённого названия для некоторых часто используемых атрибутов:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from dynamix_sdk import Dynamix
|
||||||
|
|
||||||
|
|
||||||
|
dx = Dynamix(...)
|
||||||
|
|
||||||
|
# /cloudapi/kvmx86/create
|
||||||
|
dx.api.ca.kvmx86.create(...) # ca = cloudapi
|
||||||
|
|
||||||
|
# /cloudbroker/account/create
|
||||||
|
dx.api.cb.account.create(...) # cb = cloudbroker
|
||||||
|
|
||||||
|
# /system/usermanager/whoami
|
||||||
|
dx.api.sys.usermanager.whoami(...) # sys = system
|
||||||
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details><summary>Передача вложенных параметров </summary>
|
<details><summary>Передача вложенных параметров </summary>
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from dynamix_sdk import Dynamix, types
|
from dynamix_sdk import Dynamix, types as sdk_types
|
||||||
|
|
||||||
|
|
||||||
dx = Dynamix(...)
|
dx = Dynamix(...)
|
||||||
|
|
||||||
data_disk_1 = types.DiskAPIParamsNM(name='data_disk_1', size_gb=10)
|
data_disk_1 = sdk_types.DiskAPIParamsNM(name='data_disk_1', size_gb=10)
|
||||||
|
|
||||||
# /cloudapi/kvmx86/create
|
# /cloudapi/kvmx86/create
|
||||||
new_vm_id = dx.api.cloudapi.kvmx86.create(
|
new_vm_id = dx.api.cloudapi.kvmx86.create(
|
||||||
@@ -262,7 +281,7 @@ new_vm_id = dx.api.cloudapi.kvmx86.create(
|
|||||||
<details><summary>Передача параметров перечисляемого типа (enum) </summary>
|
<details><summary>Передача параметров перечисляемого типа (enum) </summary>
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from dynamix_sdk import Dynamix, types
|
from dynamix_sdk import Dynamix, types as sdk_types
|
||||||
|
|
||||||
|
|
||||||
dx = Dynamix(...)
|
dx = Dynamix(...)
|
||||||
@@ -274,8 +293,8 @@ new_vm_id = dx.api.cloudapi.kvmx86.create(
|
|||||||
cpu_count=1,
|
cpu_count=1,
|
||||||
ram_size_mb=1024,
|
ram_size_mb=1024,
|
||||||
image_id=456,
|
image_id=456,
|
||||||
chipset=types.Chipset.Q35, # enum
|
chipset=sdk_types.Chipset.Q35, # enum
|
||||||
numa_affinity=types.NumaAffinity.none, # enum
|
numa_affinity=sdk_types.NumaAffinity.NONE, # enum
|
||||||
)
|
)
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -493,8 +512,13 @@ SDK для выполнения HTTP-запросов использует би
|
|||||||
from requests.exceptions import RequestException, HTTPError
|
from requests.exceptions import RequestException, HTTPError
|
||||||
from dynamix_sdk import Dynamix
|
from dynamix_sdk import Dynamix
|
||||||
|
|
||||||
|
try:
|
||||||
dx = Dynamix(...)
|
dx = Dynamix(...) # происходит HTTP-запрос для проверки совместимости с API
|
||||||
|
except HTTPError as e:
|
||||||
|
resp = e.response
|
||||||
|
print(f'{e}: {resp.text}')
|
||||||
|
except RequestException as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
vm_id = 1
|
vm_id = 1
|
||||||
|
|
||||||
@@ -524,16 +548,17 @@ class RequestException(Exception):
|
|||||||
orig_exception: requests.exceptions.RequestException
|
orig_exception: requests.exceptions.RequestException
|
||||||
func_name: str
|
func_name: str
|
||||||
func_kwargs: None | dict = None
|
func_kwargs: None | dict = None
|
||||||
|
status_code: None | int = None
|
||||||
```
|
```
|
||||||
|
|
||||||
Чтобы включить использование исключения <code>dynamix_sdk.exceptions.RequestException</code>, необходимо передать в конструкторы классов <code>Dynamix</code>, <code>DECS3OAuth</code>, <code>BVSAuth</code> параметр <code>wrap_request_exceptions=True</code>
|
Чтобы включить использование исключения <code>dynamix_sdk.exceptions.RequestException</code>, необходимо передать в конструкторы классов <code>Dynamix</code>, <code>DECS3OAuth</code>, <code>BVSAuth</code> параметр <code>wrap_request_exceptions=True</code>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
#### Ошибка несовместимости с API
|
#### Ошибка несовместимости с API
|
||||||
SDK производит проверку совместимости с API.
|
При создании экземпляра класса `Dynamix`, SDK производит проверку совместимости с API.
|
||||||
При несовместимости будет вызвано исключение `exceptions.IncompatibleAPIError`.
|
При несовместимости будет вызвано исключение `exceptions.IncompatibleAPIError`.
|
||||||
|
|
||||||
## Доступный функционал
|
## Доступная функциональность
|
||||||
|
|
||||||
### Способы авторизации
|
### Способы авторизации
|
||||||
|
|
||||||
@@ -656,7 +681,7 @@ SDK производит проверку совместимости с API.
|
|||||||
- /cloudapi/compute/pfwAdd
|
- /cloudapi/compute/pfwAdd
|
||||||
- /cloudapi/compute/pfwDel
|
- /cloudapi/compute/pfwDel
|
||||||
- /cloudapi/compute/pfwList
|
- /cloudapi/compute/pfwList
|
||||||
- /cloudapi/compute/pinToStack
|
- /cloudapi/compute/pin_to_node
|
||||||
- /cloudapi/compute/powerCycle
|
- /cloudapi/compute/powerCycle
|
||||||
- /cloudapi/compute/reboot
|
- /cloudapi/compute/reboot
|
||||||
- /cloudapi/compute/redeploy
|
- /cloudapi/compute/redeploy
|
||||||
@@ -672,7 +697,7 @@ SDK производит проверку совместимости с API.
|
|||||||
- /cloudapi/compute/stop
|
- /cloudapi/compute/stop
|
||||||
- /cloudapi/compute/tagAdd
|
- /cloudapi/compute/tagAdd
|
||||||
- /cloudapi/compute/tagRemove
|
- /cloudapi/compute/tagRemove
|
||||||
- /cloudapi/compute/unpinFromStack
|
- /cloudapi/compute/unpin_from_node
|
||||||
- /cloudapi/compute/update
|
- /cloudapi/compute/update
|
||||||
- /cloudapi/compute/userGrant
|
- /cloudapi/compute/userGrant
|
||||||
- /cloudapi/compute/userList
|
- /cloudapi/compute/userList
|
||||||
@@ -872,13 +897,6 @@ SDK производит проверку совместимости с API.
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details><summary>stack</summary>
|
|
||||||
|
|
||||||
- /cloudapi/stack/get
|
|
||||||
- /cloudapi/stack/list
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details><summary>storage_policy</summary>
|
<details><summary>storage_policy</summary>
|
||||||
|
|
||||||
- /cloudapi/storage_policy/get
|
- /cloudapi/storage_policy/get
|
||||||
@@ -982,6 +1000,12 @@ SDK производит проверку совместимости с API.
|
|||||||
- /cloudbroker/account/listDeleted
|
- /cloudbroker/account/listDeleted
|
||||||
- /cloudbroker/account/removeZone
|
- /cloudbroker/account/removeZone
|
||||||
- /cloudbroker/account/restore
|
- /cloudbroker/account/restore
|
||||||
|
- /cloudbroker/account/setCpuAllocationParameter
|
||||||
|
- /cloudbroker/account/setCpuAllocationRatio
|
||||||
|
- /cloudbroker/account/update
|
||||||
|
- /cloudbroker/account/updateComputeFeatures
|
||||||
|
- /cloudbroker/account/updateResourceTypes
|
||||||
|
- /cloudbroker/account/updateUser
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
@@ -993,6 +1017,7 @@ SDK производит проверку совместимости с API.
|
|||||||
|
|
||||||
<details><summary>compute</summary>
|
<details><summary>compute</summary>
|
||||||
|
|
||||||
|
- /cloudbroker/compute/change_read_only
|
||||||
- /cloudbroker/compute/change_security_groups
|
- /cloudbroker/compute/change_security_groups
|
||||||
- /cloudbroker/compute/clone
|
- /cloudbroker/compute/clone
|
||||||
- /cloudbroker/compute/clone_abort
|
- /cloudbroker/compute/clone_abort
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ authors = [
|
|||||||
{name = "Vladislav Nesterov"},
|
{name = "Vladislav Nesterov"},
|
||||||
{name = "Stanislav Karimov"},
|
{name = "Stanislav Karimov"},
|
||||||
]
|
]
|
||||||
version = "1.3.2"
|
version = "1.4.0"
|
||||||
|
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
pre-commit==4.1.0
|
|
||||||
pytest==8.3.5
|
|
||||||
@@ -8,3 +8,15 @@ class API(_base.BaseAPI):
|
|||||||
cloudapi: CloudapiAPI
|
cloudapi: CloudapiAPI
|
||||||
cloudbroker: CloudbrokerAPI
|
cloudbroker: CloudbrokerAPI
|
||||||
system: SystemAPI
|
system: SystemAPI
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ca(self):
|
||||||
|
return self.cloudapi
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cb(self):
|
||||||
|
return self.cloudbroker
|
||||||
|
|
||||||
|
@property
|
||||||
|
def sys(self):
|
||||||
|
return self.system
|
||||||
|
|||||||
@@ -25,19 +25,19 @@ class AffinityPolicy(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class AffinityTopology(str, _AutoNameEnum):
|
class AffinityTopology(str, _AutoNameEnum):
|
||||||
vm = 'compute'
|
VM = 'compute'
|
||||||
node = _enum_auto()
|
NODE = 'node'
|
||||||
|
|
||||||
|
|
||||||
class BootDevice(str, _AutoNameEnum):
|
class BootDevice(str, _AutoNameEnum):
|
||||||
cdrom = _enum_auto()
|
CDROM = 'cdrom'
|
||||||
hd = _enum_auto()
|
HD = 'hd'
|
||||||
network = _enum_auto()
|
NETWORK = 'network'
|
||||||
|
|
||||||
|
|
||||||
class Chipset(str, _AutoNameEnum):
|
class Chipset(str, _AutoNameEnum):
|
||||||
Q35 = _enum_auto()
|
Q35 = _enum_auto()
|
||||||
i440fx = _enum_auto()
|
I440FX = 'i440fx'
|
||||||
|
|
||||||
|
|
||||||
class Driver(str, _AutoNameEnum):
|
class Driver(str, _AutoNameEnum):
|
||||||
@@ -61,27 +61,27 @@ class NetTypeForChangeIP(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class NumaAffinity(str, _AutoNameEnum):
|
class NumaAffinity(str, _AutoNameEnum):
|
||||||
none = _enum_auto()
|
NONE = 'none'
|
||||||
strict = _enum_auto()
|
STRICT = 'strict'
|
||||||
loose = _enum_auto()
|
LOOSE = 'loose'
|
||||||
|
|
||||||
|
|
||||||
class TXMode(str, _AutoNameEnum):
|
class TXMode(str, _AutoNameEnum):
|
||||||
iothread = _enum_auto()
|
IOTHREAD = 'iothread'
|
||||||
selected_by_hypervisor = 'selected by hypervisor'
|
SELECTED_BY_HYPERVISOR = 'selected by hypervisor'
|
||||||
timer = _enum_auto()
|
TIMER = 'timer'
|
||||||
|
|
||||||
|
|
||||||
class Ioeventfd(str, _AutoNameEnum):
|
class Ioeventfd(str, _AutoNameEnum):
|
||||||
off = _enum_auto()
|
OFF = 'off'
|
||||||
on = _enum_auto()
|
ON = 'on'
|
||||||
selected_by_hypervisor = 'selected by hypervisor'
|
SELECTED_BY_HYPERVISOR = 'selected by hypervisor'
|
||||||
|
|
||||||
|
|
||||||
class EventIdx(str, _AutoNameEnum):
|
class EventIdx(str, _AutoNameEnum):
|
||||||
off = _enum_auto()
|
OFF = 'off'
|
||||||
on = _enum_auto()
|
ON = 'on'
|
||||||
selected_by_hypervisor = 'selected by hypervisor'
|
SELECTED_BY_HYPERVISOR = 'selected by hypervisor'
|
||||||
|
|
||||||
|
|
||||||
class ResourceGroupStatus(str, _AutoNameEnum):
|
class ResourceGroupStatus(str, _AutoNameEnum):
|
||||||
@@ -103,13 +103,13 @@ class LockStatus(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class VMFeature(str, _AutoNameEnum):
|
class VMFeature(str, _AutoNameEnum):
|
||||||
changemac = _enum_auto()
|
CHANGEMAC = 'changemac'
|
||||||
cpupin = _enum_auto()
|
CPUPIN = 'cpupin'
|
||||||
dpdk = _enum_auto()
|
DPDK = 'dpdk'
|
||||||
hugepages = _enum_auto()
|
HUGEPAGES = 'hugepages'
|
||||||
numa = _enum_auto()
|
NUMA = 'numa'
|
||||||
trunk = _enum_auto()
|
TRUNK = 'trunk'
|
||||||
vfnic = _enum_auto()
|
VFNIC = 'vfnic'
|
||||||
|
|
||||||
|
|
||||||
class RGDefaultNetTypeForSet(str, _AutoNameEnum):
|
class RGDefaultNetTypeForSet(str, _AutoNameEnum):
|
||||||
@@ -124,10 +124,10 @@ class RGDefaultNetType(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class RGResourceType(str, _AutoNameEnum):
|
class RGResourceType(str, _AutoNameEnum):
|
||||||
vm = 'compute'
|
VM = 'compute'
|
||||||
k8s = _enum_auto()
|
K8S = 'k8s'
|
||||||
lb = _enum_auto()
|
LB = 'lb'
|
||||||
vins = _enum_auto()
|
VINS = 'vins'
|
||||||
|
|
||||||
|
|
||||||
class DiskStatus(str, _AutoNameEnum):
|
class DiskStatus(str, _AutoNameEnum):
|
||||||
@@ -185,8 +185,8 @@ class VMTechStatus(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class DiskType(str, _AutoNameEnum):
|
class DiskType(str, _AutoNameEnum):
|
||||||
B = _enum_auto()
|
BOOT = 'B'
|
||||||
D = _enum_auto()
|
DATA = 'D'
|
||||||
|
|
||||||
|
|
||||||
class AccountStatus(str, _AutoNameEnum):
|
class AccountStatus(str, _AutoNameEnum):
|
||||||
@@ -198,11 +198,11 @@ class AccountStatus(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class AccountResourceType(str, _AutoNameEnum):
|
class AccountResourceType(str, _AutoNameEnum):
|
||||||
vm = 'compute'
|
VM = 'compute'
|
||||||
k8s = _enum_auto()
|
K8S = 'k8s'
|
||||||
lb = _enum_auto()
|
LB = 'lb'
|
||||||
vins = _enum_auto()
|
VINS = 'vins'
|
||||||
flipgroup = _enum_auto()
|
FLIPGROUP = 'flipgroup'
|
||||||
|
|
||||||
|
|
||||||
class ImageTechStatus(str, _AutoNameEnum):
|
class ImageTechStatus(str, _AutoNameEnum):
|
||||||
@@ -219,16 +219,16 @@ class ImageStatus(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class ImageType(str, _AutoNameEnum):
|
class ImageType(str, _AutoNameEnum):
|
||||||
cdrom = _enum_auto()
|
CDROM = 'cdrom'
|
||||||
linux = _enum_auto()
|
LINUX = 'linux'
|
||||||
unknown = _enum_auto()
|
UNKNOWN = 'unknown'
|
||||||
virtual = _enum_auto()
|
VIRTUAL = 'virtual'
|
||||||
windows = _enum_auto()
|
WINDOWS = 'windows'
|
||||||
|
|
||||||
|
|
||||||
class NetIfaceNamingTemplate(str, _AutoNameEnum):
|
class NetIfaceNamingTemplate(str, _AutoNameEnum):
|
||||||
ens = _enum_auto()
|
ENS = 'ens'
|
||||||
eth = _enum_auto()
|
ETH = 'eth'
|
||||||
|
|
||||||
|
|
||||||
class VINSStatus(str, _AutoNameEnum):
|
class VINSStatus(str, _AutoNameEnum):
|
||||||
@@ -290,17 +290,17 @@ class VINSInterfaceType(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class NATRuleProtocol(str, _AutoNameEnum):
|
class NATRuleProtocol(str, _AutoNameEnum):
|
||||||
tcp = _enum_auto()
|
TCP = 'tcp'
|
||||||
udp = _enum_auto()
|
UDP = 'udp'
|
||||||
|
|
||||||
|
|
||||||
class VNFDevType(str, _AutoNameEnum):
|
class VNFDevType(str, _AutoNameEnum):
|
||||||
vyos = _enum_auto()
|
VYOS = 'vyos'
|
||||||
|
|
||||||
|
|
||||||
class BootMode(str, _AutoNameEnum):
|
class BootMode(str, _AutoNameEnum):
|
||||||
bios = _enum_auto()
|
BIOS = 'bios'
|
||||||
uefi = _enum_auto()
|
UEFI = 'uefi'
|
||||||
|
|
||||||
|
|
||||||
class BServiceStatus(str, _AutoNameEnum):
|
class BServiceStatus(str, _AutoNameEnum):
|
||||||
@@ -358,6 +358,7 @@ class SEPType(str, _AutoNameEnum):
|
|||||||
TATLIN = _enum_auto()
|
TATLIN = _enum_auto()
|
||||||
DORADO = _enum_auto()
|
DORADO = _enum_auto()
|
||||||
SHARED = _enum_auto()
|
SHARED = _enum_auto()
|
||||||
|
USTOR = _enum_auto()
|
||||||
|
|
||||||
|
|
||||||
class ExtNetStatus(str, _AutoNameEnum):
|
class ExtNetStatus(str, _AutoNameEnum):
|
||||||
@@ -372,9 +373,9 @@ class ExtNetStatus(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class BootLoaderType(str, _AutoNameEnum):
|
class BootLoaderType(str, _AutoNameEnum):
|
||||||
linux = _enum_auto()
|
LINUX = 'linux'
|
||||||
unknown = _enum_auto()
|
UNKNOWN = 'unknown'
|
||||||
windows = _enum_auto()
|
WINDOWS = 'windows'
|
||||||
|
|
||||||
|
|
||||||
class FlipGroupClientType(str, _AutoNameEnum):
|
class FlipGroupClientType(str, _AutoNameEnum):
|
||||||
@@ -392,8 +393,8 @@ class FlipGroupNetType(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class PoolDiskType(str, _AutoNameEnum):
|
class PoolDiskType(str, _AutoNameEnum):
|
||||||
B = _enum_auto()
|
BOOT = 'B'
|
||||||
D = _enum_auto()
|
DATA = 'D'
|
||||||
ANY = _enum_auto()
|
ANY = _enum_auto()
|
||||||
|
|
||||||
|
|
||||||
@@ -447,16 +448,6 @@ class DataDisksChangeMode(str, _AutoNameEnum):
|
|||||||
KEEP = _enum_auto()
|
KEEP = _enum_auto()
|
||||||
|
|
||||||
|
|
||||||
class PhysicalNodeStatus(str, _AutoNameEnum):
|
|
||||||
DECOMMISSIONED = _enum_auto()
|
|
||||||
DECOMMISSIONING = _enum_auto()
|
|
||||||
ENABLED = _enum_auto()
|
|
||||||
ERROR = _enum_auto()
|
|
||||||
INSTALLING = _enum_auto()
|
|
||||||
MAINTENANCE = _enum_auto()
|
|
||||||
RESTRICTED = _enum_auto()
|
|
||||||
|
|
||||||
|
|
||||||
class AuthBroker(str, _AutoNameEnum):
|
class AuthBroker(str, _AutoNameEnum):
|
||||||
DECS3O = 'decs3o'
|
DECS3O = 'decs3o'
|
||||||
BVS = 'bvs'
|
BVS = 'bvs'
|
||||||
@@ -530,8 +521,8 @@ class VFPoolStatus(str, _AutoNameEnum):
|
|||||||
|
|
||||||
|
|
||||||
class LinkState(str, _AutoNameEnum):
|
class LinkState(str, _AutoNameEnum):
|
||||||
on = _enum_auto()
|
ON = 'on'
|
||||||
off = _enum_auto()
|
OFF = 'off'
|
||||||
|
|
||||||
|
|
||||||
class ZoneStatus(str, _AutoNameEnum):
|
class ZoneStatus(str, _AutoNameEnum):
|
||||||
@@ -618,3 +609,18 @@ class PCIDeviceStatus(str, _AutoNameEnum):
|
|||||||
DISABLED = _enum_auto()
|
DISABLED = _enum_auto()
|
||||||
ENABLED = _enum_auto()
|
ENABLED = _enum_auto()
|
||||||
ERROR = _enum_auto()
|
ERROR = _enum_auto()
|
||||||
|
|
||||||
|
|
||||||
|
class CPUAllocationMode(str, _AutoNameEnum):
|
||||||
|
STRICT = 'strict'
|
||||||
|
LOOSE = 'loose'
|
||||||
|
|
||||||
|
|
||||||
|
class SEPTechStatus(str, _AutoNameEnum):
|
||||||
|
DISABLED = _enum_auto()
|
||||||
|
ENABLED = _enum_auto()
|
||||||
|
|
||||||
|
|
||||||
|
class DiskCacheMode(str, _AutoNameEnum):
|
||||||
|
NONE = 'none'
|
||||||
|
WRITETHROUGH = 'writethrough'
|
||||||
|
|||||||
@@ -16,10 +16,15 @@ class DiskAPIParamsNM(_base.BaseAPIParamsNestedModel):
|
|||||||
class InterfaceAPIParamsNM(_base.BaseAPIParamsNestedModel):
|
class InterfaceAPIParamsNM(_base.BaseAPIParamsNestedModel):
|
||||||
enabled: bool = True
|
enabled: bool = True
|
||||||
net_id: int
|
net_id: int
|
||||||
|
net_prefix: None | int = None
|
||||||
net_type: _enums.NetType
|
net_type: _enums.NetType
|
||||||
sdn_logical_port_id: None | str = None
|
sdn_logical_port_id: None | str = None
|
||||||
security_group_ids: None | list[int] = None
|
security_group_ids: None | list[int] = None
|
||||||
security_group_mode: bool = False
|
security_group_mode: bool = False
|
||||||
|
sdn_segment_id: None | str = None
|
||||||
|
sdn_object_group_id: None | str = None
|
||||||
|
sdn_logical_port_display_name: None | str = None
|
||||||
|
sdn_logical_port_description: None | str = None
|
||||||
|
|
||||||
ip_addr: None | str = None
|
ip_addr: None | str = None
|
||||||
mac: None | str = None
|
mac: None | str = None
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ from . import enums as _enums
|
|||||||
|
|
||||||
class AccessAPIResultNM(_base.BaseAPIResultNestedModel):
|
class AccessAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
explicit: bool
|
explicit: bool
|
||||||
guid: str
|
guid: str | None = None
|
||||||
access_type: _enums.AccessType
|
access_type: _enums.AccessType
|
||||||
status: str
|
status: str
|
||||||
type: str
|
type: str
|
||||||
user_group_id: str
|
user_name: str
|
||||||
|
|
||||||
can_be_deleted: None | bool = None
|
can_be_deleted: None | bool = None
|
||||||
emails: list[str] | None = None
|
user_emails: list[str] | None = None
|
||||||
|
|
||||||
|
|
||||||
class AffinityRuleAPIResultNM(_base.BaseAPIResultNestedModel):
|
class AffinityRuleAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
@@ -135,13 +135,13 @@ class VNFDevInterfaceAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
|
|
||||||
|
|
||||||
class SnapshotSetAPIResultNM(_base.BaseAPIResultNestedModel):
|
class SnapshotSetAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
disks: list[int]
|
disk_ids: list[int]
|
||||||
guid: str
|
guid: str
|
||||||
label: str
|
label: str
|
||||||
timestamp: int
|
timestamp: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def datetime(self):
|
def datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.timestamp)
|
return self._get_datetime_from_timestamp(self.timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -170,12 +170,12 @@ class SnapshotAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
snapshot_set_timestamp: int
|
snapshot_set_timestamp: int
|
||||||
timestamp: int
|
timestamp: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def datetime(self):
|
def datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.timestamp)
|
return self._get_datetime_from_timestamp(self.timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def snapshot_set_datetime(self):
|
def snapshot_set_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.snapshot_set_timestamp)
|
return self._get_datetime_from_timestamp(self.snapshot_set_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -190,13 +190,16 @@ class ReplicationAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
|
|
||||||
class DiskForCAComputeListAPIResultNM(_base.BaseAPIResultNestedModel):
|
class DiskForCAComputeListAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
id: int
|
id: int
|
||||||
|
sep_id: int | None = None
|
||||||
|
|
||||||
|
|
||||||
class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel):
|
class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
account_id: int
|
account_id: int
|
||||||
acl: dict
|
acl: dict
|
||||||
|
blkdiscard: bool
|
||||||
boot_partition: int
|
boot_partition: int
|
||||||
bus_num: int
|
bus_num: int
|
||||||
|
cache_mode: _enums.DiskCacheMode
|
||||||
created_by: str
|
created_by: str
|
||||||
created_timestamp: int
|
created_timestamp: int
|
||||||
deleted_by: str
|
deleted_by: str
|
||||||
@@ -229,10 +232,9 @@ class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
sep_id: int
|
sep_id: int
|
||||||
sep_pool_name: str
|
sep_pool_name: str
|
||||||
shared: bool
|
shared: bool
|
||||||
size_available: float
|
size_available_gb: float
|
||||||
size_available: float
|
|
||||||
size_max_gb: int
|
size_max_gb: int
|
||||||
size_used: float
|
size_used_gb: float
|
||||||
snapshots: list[SnapshotAPIResultNM]
|
snapshots: list[SnapshotAPIResultNM]
|
||||||
status: _enums.DiskStatus
|
status: _enums.DiskStatus
|
||||||
storage_policy_id: int
|
storage_policy_id: int
|
||||||
@@ -243,24 +245,24 @@ class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_by: str
|
updated_by: str
|
||||||
updated_timestamp: int = 0
|
updated_timestamp: int = 0
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def destruction_datetime(self):
|
def destruction_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def purge_datetime(self):
|
def purge_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -268,6 +270,8 @@ class DiskForListAndListDeletedAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
account_id: int
|
account_id: int
|
||||||
account_name: str
|
account_name: str
|
||||||
acl: dict
|
acl: dict
|
||||||
|
blkdiscard: bool
|
||||||
|
cache_mode: _enums.DiskCacheMode
|
||||||
created_by: str
|
created_by: str
|
||||||
created_timestamp: int
|
created_timestamp: int
|
||||||
deleted_by: str
|
deleted_by: str
|
||||||
@@ -294,10 +298,9 @@ class DiskForListAndListDeletedAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
sep_pool_name: str
|
sep_pool_name: str
|
||||||
sep_type: _enums.SEPType
|
sep_type: _enums.SEPType
|
||||||
shared: bool
|
shared: bool
|
||||||
size_available: float
|
size_available_gb: float
|
||||||
size_available: float
|
|
||||||
size_max_gb: int
|
size_max_gb: int
|
||||||
size_used: float
|
size_used_gb: float
|
||||||
snapshots: list[SnapshotAPIResultNM]
|
snapshots: list[SnapshotAPIResultNM]
|
||||||
status: _enums.DiskStatus
|
status: _enums.DiskStatus
|
||||||
storage_policy_id: int
|
storage_policy_id: int
|
||||||
@@ -310,24 +313,24 @@ class DiskForListAndListDeletedAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
vms: dict[str, str]
|
vms: dict[str, str]
|
||||||
updated_timestamp: int = 0
|
updated_timestamp: int = 0
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def destruction_datetime(self):
|
def destruction_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def purge_datetime(self):
|
def purge_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -366,34 +369,33 @@ class DiskForListUnattachedAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
sep_id: int
|
sep_id: int
|
||||||
sep_pool_name: str
|
sep_pool_name: str
|
||||||
shared: bool
|
shared: bool
|
||||||
size_available: float
|
size_available_gb: float
|
||||||
size_available: float
|
|
||||||
size_max_gb: int
|
size_max_gb: int
|
||||||
size_used: float
|
size_used_gb: float
|
||||||
snapshots: list[SnapshotAPIResultNM]
|
snapshots: list[SnapshotAPIResultNM]
|
||||||
status: _enums.DiskStatus
|
status: _enums.DiskStatus
|
||||||
tech_status: _enums.DiskTechStatus
|
tech_status: _enums.DiskTechStatus
|
||||||
type: _enums.DiskType
|
type: _enums.DiskType
|
||||||
updated_timestamp: int = 0
|
updated_timestamp: int = 0
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def destruction_datetime(self):
|
def destruction_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def purge_datetime(self):
|
def purge_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -405,7 +407,6 @@ class StoragePolicyQuotasAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
class TenantQuotasAPIResultNM(_base.BaseAPIResultNestedModel):
|
class TenantQuotasAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
cpu_count: int
|
cpu_count: int
|
||||||
disk_size_gb: int
|
disk_size_gb: int
|
||||||
ext_traffic: int
|
|
||||||
gpu_count: int
|
gpu_count: int
|
||||||
ext_ip_count: int
|
ext_ip_count: int
|
||||||
ram_size_mb: float | int
|
ram_size_mb: float | int
|
||||||
@@ -439,7 +440,7 @@ class ResourceGroupAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
secret: str
|
secret: str
|
||||||
status: _enums.ResourceGroupStatus
|
status: _enums.ResourceGroupStatus
|
||||||
storage_policy_ids: list[int]
|
storage_policy_ids: list[int]
|
||||||
uniq_pools: list[str]
|
sep_pools: list[str]
|
||||||
updated_by: str
|
updated_by: str
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
vins_ids: list[int]
|
vins_ids: list[int]
|
||||||
@@ -447,16 +448,16 @@ class ResourceGroupAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
|
|
||||||
dirty: bool | None = None
|
dirty: bool | None = None
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -472,16 +473,16 @@ class AccountForCAAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
vm_features: list[_enums.VMFeature]
|
vm_features: list[_enums.VMFeature]
|
||||||
zone_ids: list[int]
|
zone_ids: list[int]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -492,8 +493,8 @@ class GuestAgentAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
last_update_timestamp: int
|
last_update_timestamp: int
|
||||||
user_name: str
|
user_name: str
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def last_update_datetime(self):
|
def last_update_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.last_update_timestamp)
|
return self._get_datetime_from_timestamp(self.last_update_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -518,16 +519,16 @@ class VGPUAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
status: _enums.VGPUStatus
|
status: _enums.VGPUStatus
|
||||||
vm_id: int
|
vm_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def last_update_datetime(self):
|
def last_update_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.last_update_timestamp)
|
return self._get_datetime_from_timestamp(self.last_update_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -558,7 +559,7 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
deleted_by: str
|
deleted_by: str
|
||||||
deleted_timestamp: int
|
deleted_timestamp: int
|
||||||
description: str
|
description: str
|
||||||
devices: dict
|
pci_devices: dict[str, int]
|
||||||
disks: list[DiskForCAComputeListAPIResultNM]
|
disks: list[DiskForCAComputeListAPIResultNM]
|
||||||
driver: _enums.Driver
|
driver: _enums.Driver
|
||||||
grid_id: int
|
grid_id: int
|
||||||
@@ -579,9 +580,10 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
numa_affinity: _enums.NumaAffinity
|
numa_affinity: _enums.NumaAffinity
|
||||||
numa_node_id: int
|
numa_node_id: int
|
||||||
os_version: str
|
os_version: str
|
||||||
pinned_to_stack: bool
|
pinned_to_node: bool
|
||||||
preferred_cpu_cores: list[int]
|
preferred_cpu_cores: list[int]
|
||||||
ram_size_mb: int
|
ram_size_mb: int
|
||||||
|
read_only: bool
|
||||||
reference_id: str
|
reference_id: str
|
||||||
res_name: str
|
res_name: str
|
||||||
reserved_cpu_cores: list[int]
|
reserved_cpu_cores: list[int]
|
||||||
@@ -593,7 +595,7 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
status: _enums.VMStatus
|
status: _enums.VMStatus
|
||||||
tags: dict
|
tags: dict
|
||||||
tech_status: _enums.VMTechStatus
|
tech_status: _enums.VMTechStatus
|
||||||
total_disks_size: int
|
total_disks_size_gb: int
|
||||||
updated_by: str
|
updated_by: str
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
user_managed: bool
|
user_managed: bool
|
||||||
@@ -603,16 +605,16 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
guest_agent: GuestAgentAPIResultNM
|
guest_agent: GuestAgentAPIResultNM
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -642,8 +644,8 @@ class ImageForListAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
type: _enums.ImageType
|
type: _enums.ImageType
|
||||||
virtual: bool | None = None
|
virtual: bool | None = None
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def boot_loader_type(self):
|
def boot_loader_type(self) -> _enums.BootLoaderType | None:
|
||||||
if self.type in _enums.BootLoaderType._member_names_:
|
if self.type in _enums.BootLoaderType._member_names_:
|
||||||
return _enums.BootLoaderType[self.type]
|
return _enums.BootLoaderType[self.type]
|
||||||
|
|
||||||
@@ -653,8 +655,8 @@ class ImageHistoryRecordAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
id: int
|
id: int
|
||||||
timestamp: int
|
timestamp: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def datetime(self):
|
def datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.timestamp)
|
return self._get_datetime_from_timestamp(self.timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -683,16 +685,16 @@ class VINSForListAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
vxlan_id: int
|
vxlan_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -715,16 +717,16 @@ class VINSForListDeletedAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
vxlan_id: int
|
vxlan_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -817,8 +819,8 @@ class DHCPVNFAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
type: _enums.VNFType
|
type: _enums.VNFType
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -841,8 +843,8 @@ class GWVNFAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
type: _enums.VNFType
|
type: _enums.VNFType
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -865,8 +867,8 @@ class NATVNFAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
type: _enums.VNFType
|
type: _enums.VNFType
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -880,13 +882,13 @@ class VNFDevMGMTConfigAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
ip_addr: str
|
ip_addr: str
|
||||||
password: str
|
password: str
|
||||||
ssh_public_key: str
|
ssh_public_key: str
|
||||||
user: str
|
user_name: str
|
||||||
|
|
||||||
|
|
||||||
class VNFDevResourcesConfigAPIResultNM(_base.BaseAPIResultNestedModel):
|
class VNFDevResourcesConfigAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
cpu_count: int
|
cpu_count: int
|
||||||
ram_size_mb: int
|
ram_size_mb: int
|
||||||
stack_id: int | None
|
node_id: int | None
|
||||||
uuid: str
|
uuid: str
|
||||||
|
|
||||||
|
|
||||||
@@ -936,7 +938,7 @@ class BServiceVMAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
rg_id: int
|
rg_id: int
|
||||||
status: _enums.VMStatus
|
status: _enums.VMStatus
|
||||||
tech_status: _enums.VMTechStatus
|
tech_status: _enums.VMTechStatus
|
||||||
stack_id: int | None
|
node_id: int | None
|
||||||
bsgroup_name: str
|
bsgroup_name: str
|
||||||
bsgroup_role: str
|
bsgroup_role: str
|
||||||
|
|
||||||
@@ -947,8 +949,8 @@ class BServiceSnapshotAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
valid: bool
|
valid: bool
|
||||||
guid: str
|
guid: str
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def datetime(self):
|
def datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.timestamp)
|
return self._get_datetime_from_timestamp(self.timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -977,16 +979,16 @@ class BServiceAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
user_managed: bool
|
user_managed: bool
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1124,16 +1126,16 @@ class LBAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
vins_id: int
|
vins_id: int
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1149,13 +1151,6 @@ class SEPAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
pools: list[SEPPoolAPIResultNM]
|
pools: list[SEPPoolAPIResultNM]
|
||||||
|
|
||||||
|
|
||||||
class StackAPIResultNM(_base.BaseAPIResultNestedModel):
|
|
||||||
id: int
|
|
||||||
name: str
|
|
||||||
status: _enums.PhysicalNodeStatus
|
|
||||||
type: str
|
|
||||||
|
|
||||||
|
|
||||||
class LocationAPIResultNM(_base.BaseAPIResultNestedModel):
|
class LocationAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
auth_broker: list[_enums.AuthBroker]
|
auth_broker: list[_enums.AuthBroker]
|
||||||
flag: str
|
flag: str
|
||||||
@@ -1189,12 +1184,12 @@ class TaskAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_by: None | str = None
|
updated_by: None | str = None
|
||||||
updated_timestamp: None | int = None
|
updated_timestamp: None | int = None
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
if self.updated_timestamp is None:
|
if self.updated_timestamp is None:
|
||||||
return None
|
return None
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
@@ -1209,8 +1204,8 @@ class K8CIForListAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
status: _enums.K8CIStatus
|
status: _enums.K8CIStatus
|
||||||
version: str
|
version: str
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1306,16 +1301,16 @@ class K8sAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
worker_groups: list[WorkerGroupAPIResultNM]
|
worker_groups: list[WorkerGroupAPIResultNM]
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1335,12 +1330,12 @@ class DPDKNetAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
vlan_id: int
|
vlan_id: int
|
||||||
vm_ids: list[int]
|
vm_ids: list[int]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1376,12 +1371,12 @@ class VFPoolAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
nodes: list[VFPoolNodeAPIResultNM]
|
nodes: list[VFPoolNodeAPIResultNM]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1393,16 +1388,17 @@ class ZoneForListAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
guid: int
|
guid: int
|
||||||
id: int
|
id: int
|
||||||
name: str
|
name: str
|
||||||
|
node_auto_start: bool
|
||||||
node_ids: list[int]
|
node_ids: list[int]
|
||||||
status: _enums.ZoneStatus
|
status: _enums.ZoneStatus
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1413,7 +1409,7 @@ class SecurityGroupRuleAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
port_range_min: int | None
|
port_range_min: int | None
|
||||||
protocol: _enums.SGRuleProtocol | None
|
protocol: _enums.SGRuleProtocol | None
|
||||||
remote_group_id: int | None = None
|
remote_group_id: int | None = None
|
||||||
remote_ip_prefix: str | None
|
remote_net_cidr: str | None
|
||||||
traffic_direction: _enums.TrafficDirection
|
traffic_direction: _enums.TrafficDirection
|
||||||
|
|
||||||
|
|
||||||
@@ -1427,6 +1423,7 @@ class TrunkAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
guid: int
|
guid: int
|
||||||
id: int
|
id: int
|
||||||
mac: str
|
mac: str
|
||||||
|
mtu: int
|
||||||
name: str
|
name: str
|
||||||
native_vlan_id: int | None
|
native_vlan_id: int | None
|
||||||
ovs_bridge: str
|
ovs_bridge: str
|
||||||
@@ -1435,18 +1432,18 @@ class TrunkAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_timestamp: int | None
|
updated_timestamp: int | None
|
||||||
vlan_ids: str
|
vlan_ids: str
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
if self.deleted_timestamp is None:
|
if self.deleted_timestamp is None:
|
||||||
return None
|
return None
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
if self.updated_timestamp is None:
|
if self.updated_timestamp is None:
|
||||||
return None
|
return None
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
@@ -1456,6 +1453,7 @@ class SEPPoolsAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
pool_names: list[str]
|
pool_names: list[str]
|
||||||
sep_id: int
|
sep_id: int
|
||||||
sep_name: str | None = None
|
sep_name: str | None = None
|
||||||
|
sep_tech_status: _enums.SEPTechStatus | None = None
|
||||||
|
|
||||||
|
|
||||||
class TenantIDsAPIResultNM(_base.BaseAPIResultNestedModel):
|
class TenantIDsAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
@@ -1494,12 +1492,12 @@ class SecurityGroupAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
updated_by: str | None
|
updated_by: str | None
|
||||||
updated_timestamp: int | None
|
updated_timestamp: int | None
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
if self.updated_timestamp is None:
|
if self.updated_timestamp is None:
|
||||||
return None
|
return None
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
@@ -1515,9 +1513,9 @@ class MigrateStorageJobAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
domain_name: str
|
domain_name: str
|
||||||
id: int
|
id: int
|
||||||
log: list[str]
|
log: list[str]
|
||||||
source_stack_id: int
|
source_node_id: int
|
||||||
status: _enums.JobStatus
|
status: _enums.JobStatus
|
||||||
target_stack_id: int
|
target_node_id: int
|
||||||
|
|
||||||
|
|
||||||
class AuditAPIResultNM(_base.BaseAPIResultNestedModel):
|
class AuditAPIResultNM(_base.BaseAPIResultNestedModel):
|
||||||
@@ -1546,12 +1544,12 @@ class AuditAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
vins_id: int | None = None
|
vins_id: int | None = None
|
||||||
vm_id: int | None = None
|
vm_id: int | None = None
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def request_datetime(self):
|
def request_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.request_timestamp)
|
return self._get_datetime_from_timestamp(self.request_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def response_datetime(self):
|
def response_datetime(self) -> _base.datetime | None:
|
||||||
if self.response_timestamp is None:
|
if self.response_timestamp is None:
|
||||||
return None
|
return None
|
||||||
return self._get_datetime_from_timestamp(self.response_timestamp)
|
return self._get_datetime_from_timestamp(self.response_timestamp)
|
||||||
@@ -1579,8 +1577,8 @@ class UserAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
service_account: bool
|
service_account: bool
|
||||||
xmpp: list[_typing.Any]
|
xmpp: list[_typing.Any]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def last_check_datetime(self):
|
def last_check_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.last_check_timestamp)
|
return self._get_datetime_from_timestamp(self.last_check_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1602,7 +1600,6 @@ class ResourceCountersAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
storage_size_gb_by_real_usage: int | float
|
storage_size_gb_by_real_usage: int | float
|
||||||
storage_size_gb_by_disk_max: int
|
storage_size_gb_by_disk_max: int
|
||||||
ext_ip_count: int
|
ext_ip_count: int
|
||||||
ext_traffic: int
|
|
||||||
gpu_count: int
|
gpu_count: int
|
||||||
sep_pools: dict[str, dict[str, StorageCountersAPIResultNM]]
|
sep_pools: dict[str, dict[str, StorageCountersAPIResultNM]]
|
||||||
storage_policies: dict[str, StoragePolicyCountersAPIResultNM]
|
storage_policies: dict[str, StoragePolicyCountersAPIResultNM]
|
||||||
@@ -1613,7 +1610,6 @@ class TenantQuotasForResourceConsumptionAPIResultNM(
|
|||||||
):
|
):
|
||||||
cpu_count: int
|
cpu_count: int
|
||||||
disk_size_gb: int
|
disk_size_gb: int
|
||||||
ext_traffic: int
|
|
||||||
gpu_count: int
|
gpu_count: int
|
||||||
ext_ip_count: int
|
ext_ip_count: int
|
||||||
ram_size_mb: float | int
|
ram_size_mb: float | int
|
||||||
@@ -1628,7 +1624,7 @@ class PCIDeviceAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
id: int
|
id: int
|
||||||
name: str
|
name: str
|
||||||
rg_id: int
|
rg_id: int
|
||||||
stack_id: int
|
node_id: int
|
||||||
status: _enums.PCIDeviceStatus
|
status: _enums.PCIDeviceStatus
|
||||||
system_name: str
|
system_name: str
|
||||||
|
|
||||||
@@ -1667,22 +1663,22 @@ class ResourceGroupForListDeletedAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
secret: str
|
secret: str
|
||||||
status: _enums.ResourceGroupStatus
|
status: _enums.ResourceGroupStatus
|
||||||
storage_policy_ids: list[int]
|
storage_policy_ids: list[int]
|
||||||
uniq_pools: list[str]
|
sep_pools: list[str]
|
||||||
updated_by: str
|
updated_by: str
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
vins_ids: list[int]
|
vins_ids: list[int]
|
||||||
vm_ids: list[int]
|
vm_ids: list[int]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
@@ -1720,21 +1716,21 @@ class AccountForCBAPIResultNM(_base.BaseAPIResultNestedModel):
|
|||||||
send_access_emails: bool
|
send_access_emails: bool
|
||||||
status: _enums.AccountStatus
|
status: _enums.AccountStatus
|
||||||
storage_policy_ids: list[int]
|
storage_policy_ids: list[int]
|
||||||
uniq_pools: list[str]
|
sep_pools: list[str]
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
version: int
|
version: int
|
||||||
vm_features: list[_enums.VMFeature]
|
vm_features: list[_enums.VMFeature]
|
||||||
zone_ids: list[int]
|
zone_ids: list[int]
|
||||||
zones: list[int]
|
zones: list[int]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ from .pcidevice import *
|
|||||||
from .rg import *
|
from .rg import *
|
||||||
from .security_group import *
|
from .security_group import *
|
||||||
from .sep import *
|
from .sep import *
|
||||||
from .stack import *
|
|
||||||
from .storage_policy import *
|
from .storage_policy import *
|
||||||
from .tasks import *
|
from .tasks import *
|
||||||
from .trunk import *
|
from .trunk import *
|
||||||
@@ -47,7 +46,6 @@ class CloudapiAPI(_base.BaseAPI):
|
|||||||
rg: CloudapiRgAPI
|
rg: CloudapiRgAPI
|
||||||
security_group: CloudapiSecurityGroupAPI
|
security_group: CloudapiSecurityGroupAPI
|
||||||
sep: CloudapiSepAPI
|
sep: CloudapiSepAPI
|
||||||
stack: CloudapiStackAPI
|
|
||||||
storage_policy: CloudapiStoragePolicyAPI
|
storage_policy: CloudapiStoragePolicyAPI
|
||||||
tasks: CloudapiTasksAPI
|
tasks: CloudapiTasksAPI
|
||||||
trunk: CloudapiTrunkAPI
|
trunk: CloudapiTrunkAPI
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class CloudapiAccountGetResultModel(_base.BaseAPIResultModel):
|
|||||||
send_access_emails: bool
|
send_access_emails: bool
|
||||||
status: _nested.AccountStatus
|
status: _nested.AccountStatus
|
||||||
storage_policy_ids: list[int]
|
storage_policy_ids: list[int]
|
||||||
uniq_pools: list[str]
|
sep_pools: list[str]
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
version: int
|
version: int
|
||||||
vins_count: int
|
vins_count: int
|
||||||
@@ -34,20 +34,20 @@ class CloudapiAccountGetResultModel(_base.BaseAPIResultModel):
|
|||||||
vm_features: list[_nested.VMFeature]
|
vm_features: list[_nested.VMFeature]
|
||||||
zones: list[_nested.ZoneAPIResultNM]
|
zones: list[_nested.ZoneAPIResultNM]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deactivation_datetime(self):
|
def deactivation_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deactivation_timestamp)
|
return self._get_datetime_from_timestamp(self.deactivation_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,14 +11,13 @@ class CloudapiAccountUpdateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
*,
|
*,
|
||||||
account_id: int,
|
account_id: int,
|
||||||
cpu_count_quota: None | int = None,
|
cpu_count_quota: None | int = None,
|
||||||
ext_traffic_quota: None | int = None,
|
|
||||||
gpu_count_quota: None | int = None,
|
gpu_count_quota: None | int = None,
|
||||||
name: None | str = None,
|
name: None | str = None,
|
||||||
ext_ip_count_quota: None | int = None,
|
ext_ip_count_quota: None | int = None,
|
||||||
ram_size_quota_mb: None | int = None,
|
ram_size_quota_mb: None | int = None,
|
||||||
send_access_emails: bool = False,
|
send_access_emails: bool | None = None,
|
||||||
storage_size_quota_gb: None | int = None,
|
storage_size_quota_gb: None | int = None,
|
||||||
uniq_pools: None | list[str] = None,
|
sep_pools: None | list[str] = None,
|
||||||
description: str | None = None,
|
description: str | None = None,
|
||||||
default_zone_id: int | None = None,
|
default_zone_id: int | None = None,
|
||||||
) -> CloudapiAccountUpdateResultBool:
|
) -> CloudapiAccountUpdateResultBool:
|
||||||
|
|||||||
@@ -34,16 +34,16 @@ class CloudapiBserviceGetResultModel(_base.BaseAPIResultModel):
|
|||||||
vms: list[_nested.BServiceVMAPIResultNM]
|
vms: list[_nested.BServiceVMAPIResultNM]
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ class CloudapiBserviceGroupAddProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
cpu_count: int,
|
cpu_count: int,
|
||||||
boot_disk_size_gb: int,
|
boot_disk_size_gb: int,
|
||||||
image_id: int,
|
image_id: int,
|
||||||
driver: _nested.Driver,
|
|
||||||
name: str,
|
name: str,
|
||||||
ram_size_mb: int,
|
ram_size_mb: int,
|
||||||
storage_policy_id: int | None = None,
|
storage_policy_id: int | None = None,
|
||||||
@@ -26,6 +25,6 @@ class CloudapiBserviceGroupAddProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
sep_pool_name: str | None = None,
|
sep_pool_name: str | None = None,
|
||||||
start_timeout: int | None = None,
|
start_timeout: int | None = None,
|
||||||
vins_ids: list[int] | None = None,
|
vins_ids: list[int] | None = None,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
) -> CloudapiBserviceGroupAddResultInt:
|
) -> CloudapiBserviceGroupAddResultInt:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -39,16 +39,16 @@ class CloudapiBserviceGroupGetResultModel(
|
|||||||
vins_ids: list[int]
|
vins_ids: list[int]
|
||||||
vms: list[_nested.BServiceGroupVMAPIResultNM]
|
vms: list[_nested.BServiceGroupVMAPIResultNM]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class CloudapiBserviceGroupParentAddProtocol(
|
|||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
bservice_id: int,
|
bservice_id: int,
|
||||||
bsgroup_id: int,
|
child_id: int,
|
||||||
parent_id: int,
|
parent_id: int,
|
||||||
) -> CloudapiBserviceGroupParentAddResultBool:
|
) -> CloudapiBserviceGroupParentAddResultBool:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class CloudapiBserviceGroupParentRemoveProtocol(
|
|||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
bservice_id: int,
|
bservice_id: int,
|
||||||
bsgroup_id: int,
|
child_id: int,
|
||||||
parent_id: int,
|
parent_id: int,
|
||||||
) -> CloudapiBserviceGroupParentRemoveResultBool:
|
) -> CloudapiBserviceGroupParentRemoveResultBool:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class CloudapiBserviceGroupResizeProtocol(
|
|||||||
*,
|
*,
|
||||||
bservice_id: int,
|
bservice_id: int,
|
||||||
bsgroup_id: int,
|
bsgroup_id: int,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
count_change_mode: _nested.CountChangeMode = (
|
count_change_mode: _nested.CountChangeMode = (
|
||||||
_nested.CountChangeMode.RELATIVE
|
_nested.CountChangeMode.RELATIVE
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ from .pause import *
|
|||||||
from .pfw_add import *
|
from .pfw_add import *
|
||||||
from .pfw_del import *
|
from .pfw_del import *
|
||||||
from .pfw_list import *
|
from .pfw_list import *
|
||||||
from .pin_to_stack import *
|
from .pin_to_node import *
|
||||||
from .power_cycle import *
|
from .power_cycle import *
|
||||||
from .reboot import *
|
from .reboot import *
|
||||||
from .redeploy import *
|
from .redeploy import *
|
||||||
@@ -66,7 +66,7 @@ from .start import *
|
|||||||
from .stop import *
|
from .stop import *
|
||||||
from .tag_add import *
|
from .tag_add import *
|
||||||
from .tag_remove import *
|
from .tag_remove import *
|
||||||
from .unpin_from_stack import *
|
from .unpin_from_node import *
|
||||||
from .update import *
|
from .update import *
|
||||||
from .user_grant import *
|
from .user_grant import *
|
||||||
from .user_list import *
|
from .user_list import *
|
||||||
@@ -127,7 +127,7 @@ class CloudapiComputeAPI(
|
|||||||
CloudapiComputePfwAddProtocol,
|
CloudapiComputePfwAddProtocol,
|
||||||
CloudapiComputePfwDelProtocol,
|
CloudapiComputePfwDelProtocol,
|
||||||
CloudapiComputePfwListProtocol,
|
CloudapiComputePfwListProtocol,
|
||||||
CloudapiComputePinToStackProtocol,
|
CloudapiComputePinToNodeProtocol,
|
||||||
CloudapiComputePowerCycleProtocol,
|
CloudapiComputePowerCycleProtocol,
|
||||||
CloudapiComputeRebootProtocol,
|
CloudapiComputeRebootProtocol,
|
||||||
CloudapiComputeRedeployProtocol,
|
CloudapiComputeRedeployProtocol,
|
||||||
@@ -143,7 +143,7 @@ class CloudapiComputeAPI(
|
|||||||
CloudapiComputeStopProtocol,
|
CloudapiComputeStopProtocol,
|
||||||
CloudapiComputeTagAddProtocol,
|
CloudapiComputeTagAddProtocol,
|
||||||
CloudapiComputeTagRemoveProtocol,
|
CloudapiComputeTagRemoveProtocol,
|
||||||
CloudapiComputeUnpinFromStackProtocol,
|
CloudapiComputeUnpinFromNodeProtocol,
|
||||||
CloudapiComputeUpdateProtocol,
|
CloudapiComputeUpdateProtocol,
|
||||||
CloudapiComputeUserGrantProtocol,
|
CloudapiComputeUserGrantProtocol,
|
||||||
CloudapiComputeUserListProtocol,
|
CloudapiComputeUserListProtocol,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class CloudapiComputeDiskAddProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
name: str,
|
name: str,
|
||||||
disk_size_gb: int,
|
disk_size_gb: int,
|
||||||
storage_policy_id: int,
|
storage_policy_id: int,
|
||||||
disk_type: _nested.DiskType = _nested.DiskType.D,
|
disk_type: _nested.DiskType = _nested.DiskType.DATA,
|
||||||
sep_id: int | None = None,
|
sep_id: int | None = None,
|
||||||
sep_pool_name: str | None = None,
|
sep_pool_name: str | None = None,
|
||||||
description: str | None = None,
|
description: str | None = None,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class CloudapiComputeDiskAttachProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
*,
|
*,
|
||||||
vm_id: int,
|
vm_id: int,
|
||||||
disk_id: int,
|
disk_id: int,
|
||||||
disk_type: _nested.DiskType = _nested.DiskType.D,
|
disk_type: _nested.DiskType = _nested.DiskType.DATA,
|
||||||
pci_slot_num_hex: str | None = None,
|
pci_slot_num_hex: str | None = None,
|
||||||
bus_num_hex: str | None = None,
|
bus_num_hex: str | None = None,
|
||||||
) -> CloudapiComputeDiskAttachResultBool:
|
) -> CloudapiComputeDiskAttachResultBool:
|
||||||
|
|||||||
@@ -55,9 +55,10 @@ class CloudapiComputeGetResultModel(_base.BaseAPIResultModel):
|
|||||||
numa_node_id: int
|
numa_node_id: int
|
||||||
os_users: list[_nested.OSUserAPIResultNM]
|
os_users: list[_nested.OSUserAPIResultNM]
|
||||||
os_version: str
|
os_version: str
|
||||||
pinned_to_stack: bool
|
pinned_to_node: bool
|
||||||
preferred_cpu_cores: list[int]
|
preferred_cpu_cores: list[int]
|
||||||
ram_size_mb: int
|
ram_size_mb: int
|
||||||
|
read_only: bool
|
||||||
reference_id: str
|
reference_id: str
|
||||||
res_name: str
|
res_name: str
|
||||||
reserved_cpu_cores: list[int]
|
reserved_cpu_cores: list[int]
|
||||||
@@ -84,16 +85,16 @@ class CloudapiComputeGetResultModel(_base.BaseAPIResultModel):
|
|||||||
natable_vins_network: str = ''
|
natable_vins_network: str = ''
|
||||||
natable_vins_network_name: str = ''
|
natable_vins_network_name: str = ''
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,5 +23,10 @@ class CloudapiComputeNetAttachProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
mtu: None | int = None,
|
mtu: None | int = None,
|
||||||
mac: None | str = None,
|
mac: None | str = None,
|
||||||
sdn_logical_port_id: None | str = None,
|
sdn_logical_port_id: None | str = None,
|
||||||
|
net_prefix: int | None = None,
|
||||||
|
sdn_segment_id: str | None = None,
|
||||||
|
sdn_object_group_id: str | None = None,
|
||||||
|
sdn_logical_port_display_name: str | None = None,
|
||||||
|
sdn_logical_port_description: str | None = None,
|
||||||
) -> CloudapiComputeNetAttachResultModel:
|
) -> CloudapiComputeNetAttachResultModel:
|
||||||
...
|
...
|
||||||
|
|||||||
15
src/dynamix_sdk/api/cloudapi/compute/pin_to_node.py
Normal file
15
src/dynamix_sdk/api/cloudapi/compute/pin_to_node.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
|
||||||
|
|
||||||
|
class CloudapiComputePinToNodeResultBool(_base.BaseAPIResultBool):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudapiComputePinToNodeProtocol(_base.BasePostAPIFunctionProtocol):
|
||||||
|
def pin_to_node(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
vm_id: int,
|
||||||
|
auto_start: bool = False,
|
||||||
|
) -> CloudapiComputePinToNodeResultBool:
|
||||||
|
...
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
import dynamix_sdk.base as _base
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiComputePinToStackResultBool(_base.BaseAPIResultBool):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiComputePinToStackProtocol(_base.BasePostAPIFunctionProtocol):
|
|
||||||
def pin_to_stack(
|
|
||||||
self,
|
|
||||||
*,
|
|
||||||
vm_id: int,
|
|
||||||
auto_start: bool = False,
|
|
||||||
) -> CloudapiComputePinToStackResultBool:
|
|
||||||
...
|
|
||||||
@@ -11,7 +11,7 @@ class CloudapiComputeRedeployProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
vm_id: int,
|
vm_id: int,
|
||||||
storage_policy_id: int,
|
storage_policy_id: int | None = None,
|
||||||
start: bool = False,
|
start: bool = False,
|
||||||
boot_disk_size_gb: int | None = None,
|
boot_disk_size_gb: int | None = None,
|
||||||
data_disks_change_mode: _nested.DataDisksChangeMode = (
|
data_disks_change_mode: _nested.DataDisksChangeMode = (
|
||||||
|
|||||||
14
src/dynamix_sdk/api/cloudapi/compute/unpin_from_node.py
Normal file
14
src/dynamix_sdk/api/cloudapi/compute/unpin_from_node.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
|
||||||
|
|
||||||
|
class CloudapiComputeUnpinFromNodeResultBool(_base.BaseAPIResultBool):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudapiComputeUnpinFromNodeProtocol(_base.BasePostAPIFunctionProtocol):
|
||||||
|
def unpin_from_node(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
vm_id: int,
|
||||||
|
) -> CloudapiComputeUnpinFromNodeResultBool:
|
||||||
|
...
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import dynamix_sdk.base as _base
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiComputeUnpinFromStackResultBool(_base.BaseAPIResultBool):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiComputeUnpinFromStackProtocol(_base.BasePostAPIFunctionProtocol):
|
|
||||||
def unpin_from_stack(
|
|
||||||
self,
|
|
||||||
*,
|
|
||||||
vm_id: int,
|
|
||||||
) -> CloudapiComputeUnpinFromStackResultBool:
|
|
||||||
...
|
|
||||||
@@ -6,6 +6,8 @@ class CloudapiDisksGetResultModel(_base.BaseAPIResultModel):
|
|||||||
account_id: int
|
account_id: int
|
||||||
account_name: str
|
account_name: str
|
||||||
acl: dict
|
acl: dict
|
||||||
|
blkdiscard: bool
|
||||||
|
cache_mode: _nested.DiskCacheMode
|
||||||
created_by: str
|
created_by: str
|
||||||
created_timestamp: int
|
created_timestamp: int
|
||||||
deleted_by: str
|
deleted_by: str
|
||||||
@@ -32,9 +34,9 @@ class CloudapiDisksGetResultModel(_base.BaseAPIResultModel):
|
|||||||
sep_pool_name: str
|
sep_pool_name: str
|
||||||
sep_type: _nested.SEPType
|
sep_type: _nested.SEPType
|
||||||
shared: bool
|
shared: bool
|
||||||
size_available: float
|
size_available_gb: float
|
||||||
size_max_gb: int
|
size_max_gb: int
|
||||||
size_used: float
|
size_used_gb: float
|
||||||
snapshots: list[_nested.SnapshotAPIResultNM]
|
snapshots: list[_nested.SnapshotAPIResultNM]
|
||||||
status: _nested.DiskStatus
|
status: _nested.DiskStatus
|
||||||
storage_policy_id: int
|
storage_policy_id: int
|
||||||
@@ -47,24 +49,24 @@ class CloudapiDisksGetResultModel(_base.BaseAPIResultModel):
|
|||||||
vms: dict[str, str]
|
vms: dict[str, str]
|
||||||
updated_timestamp: int = 0
|
updated_timestamp: int = 0
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def destruction_datetime(self):
|
def destruction_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
return self._get_datetime_from_timestamp(self.destruction_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def purge_datetime(self):
|
def purge_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
return self._get_datetime_from_timestamp(self.purge_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,22 +25,20 @@ class CloudapiFlipgroupGetResultModel(_base.BaseAPIResultModel):
|
|||||||
net_cidr: str
|
net_cidr: str
|
||||||
net_id: int
|
net_id: int
|
||||||
net_type: _nested.FlipGroupNetType
|
net_type: _nested.FlipGroupNetType
|
||||||
rg_id: int
|
|
||||||
rg_name: str
|
|
||||||
status: _nested.FlipGroupStatus
|
status: _nested.FlipGroupStatus
|
||||||
updated_by: str
|
updated_by: str
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ class CloudapiFlipgroupListProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
name: str | None = None,
|
name: str | None = None,
|
||||||
page_number: int | None = None,
|
page_number: int | None = None,
|
||||||
page_size: int | None = None,
|
page_size: int | None = None,
|
||||||
rg_id: int | None = None,
|
|
||||||
sort_by: str | None = None,
|
sort_by: str | None = None,
|
||||||
status: _nested.FlipGroupStatus | None = None,
|
status: _nested.FlipGroupStatus | None = None,
|
||||||
vins_id: int | None = None,
|
vins_id: int | None = None,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class CloudapiImageCreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
storage_policy_id: int,
|
storage_policy_id: int,
|
||||||
hot_resize: bool = False,
|
hot_resize: bool = False,
|
||||||
network_interface_naming: _nested.NetIfaceNamingTemplate = (
|
network_interface_naming: _nested.NetIfaceNamingTemplate = (
|
||||||
_nested.NetIfaceNamingTemplate.ens
|
_nested.NetIfaceNamingTemplate.ENS
|
||||||
),
|
),
|
||||||
download_password: str | None = None,
|
download_password: str | None = None,
|
||||||
os_password: str | None = None,
|
os_password: str | None = None,
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ class CloudapiImageGetResultModel(_base.BaseAPIResultModel):
|
|||||||
boot_mode: _nested.BootMode | _EmptyStr | None
|
boot_mode: _nested.BootMode | _EmptyStr | None
|
||||||
bootable: bool
|
bootable: bool
|
||||||
cd_presented_to: dict[str, list[int]]
|
cd_presented_to: dict[str, list[int]]
|
||||||
ckey: str
|
|
||||||
deleted_timestamp: int
|
deleted_timestamp: int
|
||||||
description: str
|
description: str
|
||||||
drivers: list[_nested.Driver]
|
drivers: list[_nested.Driver]
|
||||||
@@ -32,7 +31,7 @@ class CloudapiImageGetResultModel(_base.BaseAPIResultModel):
|
|||||||
present_to: dict[str, int]
|
present_to: dict[str, int]
|
||||||
provider_name: str
|
provider_name: str
|
||||||
purge_attempt_count: int
|
purge_attempt_count: int
|
||||||
res_id: str
|
res_id: str | None
|
||||||
rescue_cd: bool
|
rescue_cd: bool
|
||||||
sep_id: int
|
sep_id: int
|
||||||
sep_pool_name: str
|
sep_pool_name: str
|
||||||
@@ -48,13 +47,13 @@ class CloudapiImageGetResultModel(_base.BaseAPIResultModel):
|
|||||||
version: str
|
version: str
|
||||||
vm_ci_id: int
|
vm_ci_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def boot_loader_type(self):
|
def boot_loader_type(self) -> _nested.BootLoaderType | None:
|
||||||
if self.type in _nested.BootLoaderType._member_names_:
|
if self.type in _nested.BootLoaderType._member_names_:
|
||||||
return _nested.BootLoaderType[self.type]
|
return _nested.BootLoaderType[self.type]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ class CloudapiK8sCreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
extnet_only: bool = False,
|
extnet_only: bool = False,
|
||||||
ci_user_data: str | None = None,
|
ci_user_data: str | None = None,
|
||||||
additional_sans: list[str] | None = None,
|
additional_sans: list[str] | None = None,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
lb_sysctl_params: list[dict[str, str]] | None = None,
|
lb_sysctl_params: list[dict[str, str]] | None = None,
|
||||||
zone_id: int | None = None,
|
zone_id: int | None = None,
|
||||||
) -> CloudapiK8sCreateResultStr:
|
) -> CloudapiK8sCreateResultStr:
|
||||||
|
|||||||
@@ -31,16 +31,16 @@ class CloudapiK8sGetResultModel(_base.BaseAPIResultModel):
|
|||||||
with_lb: bool
|
with_lb: bool
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ class CloudapiK8sWorkerAddProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
k8s_id: int,
|
k8s_id: int,
|
||||||
worker_group_id: int,
|
worker_group_id: int,
|
||||||
node_count: int = 1,
|
node_count: int = 1,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
) -> CloudapiK8sWorkerAddResultBool:
|
) -> CloudapiK8sWorkerAddResultBool:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -23,6 +23,6 @@ class CloudapiK8sWorkersGroupAddProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
node_ram_size_mb: int = 1024,
|
node_ram_size_mb: int = 1024,
|
||||||
node_disk_size_gb: int | None = None,
|
node_disk_size_gb: int | None = None,
|
||||||
ci_user_data: str | None = None,
|
ci_user_data: str | None = None,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
) -> CloudapiK8sWorkersGroupAddResultStr:
|
) -> CloudapiK8sWorkersGroupAddResultStr:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class CloudapiKvmx86CreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
rg_id: int,
|
rg_id: int,
|
||||||
storage_policy_id: int,
|
storage_policy_id: int,
|
||||||
boot_disk_size_gb: None | int = None,
|
boot_disk_size_gb: None | int = None,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
ci_user_data: None | dict = None,
|
ci_user_data: None | dict = None,
|
||||||
cpu_pin: bool = False,
|
cpu_pin: bool = False,
|
||||||
custom_fields: None | str = None,
|
custom_fields: None | str = None,
|
||||||
@@ -26,7 +26,7 @@ class CloudapiKvmx86CreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
image_id: None | int = None,
|
image_id: None | int = None,
|
||||||
interfaces: None | list[_nested.InterfaceAPIParamsNM] = None,
|
interfaces: None | list[_nested.InterfaceAPIParamsNM] = None,
|
||||||
ipa_type: None | str = None,
|
ipa_type: None | str = None,
|
||||||
numa_affinity: _nested.NumaAffinity = _nested.NumaAffinity.none,
|
numa_affinity: _nested.NumaAffinity = _nested.NumaAffinity.NONE,
|
||||||
preferred_cpu_cores: None | list[int] = None,
|
preferred_cpu_cores: None | list[int] = None,
|
||||||
sep_id: None | int = None,
|
sep_id: None | int = None,
|
||||||
sep_pool_name: None | str = None,
|
sep_pool_name: None | str = None,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class CloudapiKvmx86CreateBlankProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
rg_id: int,
|
rg_id: int,
|
||||||
storage_policy_id: int,
|
storage_policy_id: int,
|
||||||
boot_disk_size_gb: None | int = None,
|
boot_disk_size_gb: None | int = None,
|
||||||
chipset: _nested.Chipset = _nested.Chipset.i440fx,
|
chipset: _nested.Chipset = _nested.Chipset.Q35,
|
||||||
data_disks: None | list[_nested.DiskAPIParamsNM] = None,
|
data_disks: None | list[_nested.DiskAPIParamsNM] = None,
|
||||||
description: None | str = None,
|
description: None | str = None,
|
||||||
interfaces: None | list[_nested.InterfaceAPIParamsNM] = None,
|
interfaces: None | list[_nested.InterfaceAPIParamsNM] = None,
|
||||||
@@ -25,14 +25,17 @@ class CloudapiKvmx86CreateBlankProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
sep_pool_name: None | str = None,
|
sep_pool_name: None | str = None,
|
||||||
without_boot_disk: bool = False,
|
without_boot_disk: bool = False,
|
||||||
boot_loader_type: _nested.BootLoaderType = (
|
boot_loader_type: _nested.BootLoaderType = (
|
||||||
_nested.BootLoaderType.unknown
|
_nested.BootLoaderType.UNKNOWN
|
||||||
),
|
),
|
||||||
boot_mode: _nested.BootMode = _nested.BootMode.bios,
|
boot_mode: _nested.BootMode = _nested.BootMode.BIOS,
|
||||||
network_interface_naming: _nested.NetIfaceNamingTemplate = (
|
network_interface_naming: _nested.NetIfaceNamingTemplate = (
|
||||||
_nested.NetIfaceNamingTemplate.ens
|
_nested.NetIfaceNamingTemplate.ENS
|
||||||
),
|
),
|
||||||
hot_resize: bool = False,
|
hot_resize: bool = False,
|
||||||
zone_id: None | int = None,
|
zone_id: None | int = None,
|
||||||
os_version: None | str = None,
|
os_version: None | str = None,
|
||||||
|
cpu_pin: bool = False,
|
||||||
|
hp_backed: bool = False,
|
||||||
|
numa_affinity: _nested.NumaAffinity = _nested.NumaAffinity.NONE,
|
||||||
) -> CloudapiKvmx86CreateBlankResultInt:
|
) -> CloudapiKvmx86CreateBlankResultInt:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -40,16 +40,16 @@ class CloudapiLbGetResultModel(_base.BaseAPIResultModel):
|
|||||||
vins_id: int
|
vins_id: int
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ class CloudapiRgCreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
description: str | None = None,
|
description: str | None = None,
|
||||||
ext_net_id: int | None = None,
|
ext_net_id: int | None = None,
|
||||||
ext_net_ip: str | None = None,
|
ext_net_ip: str | None = None,
|
||||||
ext_traffic_quota: int | None = None,
|
|
||||||
ip_cidr: str | None = None,
|
ip_cidr: str | None = None,
|
||||||
owner: str | None = None,
|
owner: str | None = None,
|
||||||
ext_ip_count_quota: int | None = None,
|
ext_ip_count_quota: int | None = None,
|
||||||
|
|||||||
@@ -11,15 +11,14 @@ class CloudapiRgUpdateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
rg_id: int,
|
rg_id: int,
|
||||||
clear_uniq_pools: bool = False,
|
clear_sep_pools: bool = False,
|
||||||
cpu_count_quota: None | int = None,
|
cpu_count_quota: None | int = None,
|
||||||
description: None | str = None,
|
description: None | str = None,
|
||||||
ext_traffic_quota: None | int = None,
|
|
||||||
name: None | str = None,
|
name: None | str = None,
|
||||||
ext_ip_count_quota: None | int = None,
|
ext_ip_count_quota: None | int = None,
|
||||||
ram_size_quota_mb: None | int = None,
|
ram_size_quota_mb: None | int = None,
|
||||||
storage_size_quota_gb: None | int = None,
|
storage_size_quota_gb: None | int = None,
|
||||||
uniq_pools: None | list[str] = None,
|
sep_pools: None | list[str] = None,
|
||||||
storage_policies: None | list[_nested.StoragePolicyQuotasAPIParamsNM] = None, # noqa: E501
|
storage_policies_quotas: None | list[_nested.StoragePolicyQuotasAPIParamsNM] = None, # noqa: E501
|
||||||
) -> CloudapiRgUpdateResultBool:
|
) -> CloudapiRgUpdateResultBool:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ class CloudapiSecurityGroupCreateRuleProtocol(
|
|||||||
protocol: _nested.SGRuleProtocol | None = None,
|
protocol: _nested.SGRuleProtocol | None = None,
|
||||||
port_range_max: int | None = None,
|
port_range_max: int | None = None,
|
||||||
port_range_min: int | None = None,
|
port_range_min: int | None = None,
|
||||||
remote_ip_prefix: str | None = None,
|
remote_net_cidr: str | None = None,
|
||||||
) -> CloudapiSecurityGroupCreateRuleResultInt:
|
) -> CloudapiSecurityGroupCreateRuleResultInt:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
from ._api import *
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import dynamix_sdk.base as _base
|
|
||||||
from .get import *
|
|
||||||
from .list import *
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiStackAPI(
|
|
||||||
_base.BaseAPI,
|
|
||||||
CloudapiStackGetProtocol,
|
|
||||||
CloudapiStackListProtocol,
|
|
||||||
):
|
|
||||||
pass
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import dynamix_sdk.base as _base
|
|
||||||
import dynamix_sdk.api._nested as _nested
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiStackGetResultModel(_base.BaseAPIResultModel):
|
|
||||||
cpu_allocation_ratio: float | None
|
|
||||||
description: str
|
|
||||||
drivers: list[_nested.Driver]
|
|
||||||
id: int
|
|
||||||
mem_allocation_ratio: float | None
|
|
||||||
name: str
|
|
||||||
status: _nested.PhysicalNodeStatus
|
|
||||||
type: str
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiStackGetProtocol(_base.BasePostAPIFunctionProtocol):
|
|
||||||
def get(
|
|
||||||
self,
|
|
||||||
*,
|
|
||||||
stack_id: int,
|
|
||||||
) -> CloudapiStackGetResultModel:
|
|
||||||
...
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import dynamix_sdk.base as _base
|
|
||||||
import dynamix_sdk.api._nested as _nested
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiStackListResultModel(_base.BaseAPIResultModel):
|
|
||||||
data: list[_nested.StackAPIResultNM]
|
|
||||||
entry_count: int
|
|
||||||
|
|
||||||
|
|
||||||
class CloudapiStackListProtocol(_base.BasePostAPIFunctionProtocol):
|
|
||||||
def list(
|
|
||||||
self,
|
|
||||||
*,
|
|
||||||
id: int | None = None,
|
|
||||||
name: str | None = None,
|
|
||||||
page_number: int | None = None,
|
|
||||||
page_size: int | None = None,
|
|
||||||
sort_by: str | None = None,
|
|
||||||
status: _nested.PhysicalNodeStatus | None = None,
|
|
||||||
type: str | None = None,
|
|
||||||
) -> CloudapiStackListResultModel:
|
|
||||||
...
|
|
||||||
@@ -23,5 +23,6 @@ class CloudapiStoragePolicyListProtocol(_base.BaseGetAPIFunctionProtocol):
|
|||||||
sep_pool_name: str | None = None,
|
sep_pool_name: str | None = None,
|
||||||
sort_by: str | None = None,
|
sort_by: str | None = None,
|
||||||
status: _nested.StoragePolicyStatus | None = None,
|
status: _nested.StoragePolicyStatus | None = None,
|
||||||
|
sep_tech_status: _nested.SEPTechStatus | None = None,
|
||||||
) -> CloudapiStoragePolicyListResultModel:
|
) -> CloudapiStoragePolicyListResultModel:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -38,16 +38,16 @@ class CloudapiVinsGetResultModel(_base.BaseAPIResultModel):
|
|||||||
vxlan_id: int
|
vxlan_id: int
|
||||||
zone_id: int
|
zone_id: int
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class CloudapiVinsNatRuleAddProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
public_port_start: int,
|
public_port_start: int,
|
||||||
vins_id: int,
|
vins_id: int,
|
||||||
local_port: int | None = None,
|
local_port: int | None = None,
|
||||||
protocol: _nested.NATRuleProtocol = _nested.NATRuleProtocol.tcp,
|
protocol: _nested.NATRuleProtocol = _nested.NATRuleProtocol.TCP,
|
||||||
public_port_end: int | None = None,
|
public_port_end: int | None = None,
|
||||||
) -> CloudapiVinsNatRuleAddResultInt:
|
) -> CloudapiVinsNatRuleAddResultInt:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -15,18 +15,19 @@ class CloudapiZoneGetResultModel(_base.BaseAPIResultModel):
|
|||||||
k8s_ids: list[int]
|
k8s_ids: list[int]
|
||||||
lb_ids: list[int]
|
lb_ids: list[int]
|
||||||
name: str
|
name: str
|
||||||
|
node_auto_start: bool
|
||||||
node_ids: list[int]
|
node_ids: list[int]
|
||||||
status: _nested.ZoneStatus
|
status: _nested.ZoneStatus
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
vins_ids: list[int]
|
vins_ids: list[int]
|
||||||
vm_ids: list[int]
|
vm_ids: list[int]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ from .list import *
|
|||||||
from .list_deleted import *
|
from .list_deleted import *
|
||||||
from .remove_zone import *
|
from .remove_zone import *
|
||||||
from .restore import *
|
from .restore import *
|
||||||
|
from .set_cpu_allocation_parameter import *
|
||||||
|
from .set_cpu_allocation_ratio import *
|
||||||
|
from .update import *
|
||||||
|
from .update_compute_features import *
|
||||||
|
from .update_resource_types import *
|
||||||
|
from .update_user import *
|
||||||
|
|
||||||
|
|
||||||
class CloudbrokerAccountAPI(
|
class CloudbrokerAccountAPI(
|
||||||
@@ -39,5 +45,11 @@ class CloudbrokerAccountAPI(
|
|||||||
CloudbrokerAccountListProtocol,
|
CloudbrokerAccountListProtocol,
|
||||||
CloudbrokerAccountRemoveZoneProtocol,
|
CloudbrokerAccountRemoveZoneProtocol,
|
||||||
CloudbrokerAccountRestoreProtocol,
|
CloudbrokerAccountRestoreProtocol,
|
||||||
|
CloudbrokerAccountSetCpuAllocationParameterProtocol,
|
||||||
|
CloudbrokerAccountSetCpuAllocationRatioProtocol,
|
||||||
|
CloudbrokerAccountUpdateProtocol,
|
||||||
|
CloudbrokerAccountUpdateComputeFeaturesProtocol,
|
||||||
|
CloudbrokerAccountUpdateResourceTypesProtocol,
|
||||||
|
CloudbrokerAccountUpdateUserProtocol,
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ class CloudbrokerAccountAddUserProtocol(
|
|||||||
*,
|
*,
|
||||||
account_id: int,
|
account_id: int,
|
||||||
user_name: str,
|
user_name: str,
|
||||||
access_type: _nested.AccessType,
|
access_type: _nested.AccessTypeForSet,
|
||||||
) -> CloudbrokerAccountAddUserResultBool:
|
) -> CloudbrokerAccountAddUserResultBool:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -16,13 +16,12 @@ class CloudbrokerAccountCreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
cpu_count_quota: None | int = None,
|
cpu_count_quota: None | int = None,
|
||||||
email_address: None | str = None,
|
email_address: None | str = None,
|
||||||
storage_policy_quotas: list[_nested.StoragePolicyQuotasAPIParamsNM] | None = None, # noqa: E501
|
storage_policy_quotas: list[_nested.StoragePolicyQuotasAPIParamsNM] | None = None, # noqa: E501
|
||||||
ext_traffic_quota: None | int = None,
|
|
||||||
gpu_count_quota: None | int = None,
|
gpu_count_quota: None | int = None,
|
||||||
ext_ip_count_quota: None | int = None,
|
ext_ip_count_quota: None | int = None,
|
||||||
ram_size_quota_mb: None | int = None,
|
ram_size_quota_mb: None | int = None,
|
||||||
send_access_emails: bool = False,
|
send_access_emails: bool = False,
|
||||||
storage_size_quota_gb: None | int = None,
|
storage_size_quota_gb: None | int = None,
|
||||||
uniq_pools: None | list[str] = None,
|
sep_pools: None | list[str] = None,
|
||||||
description: str | None = None,
|
description: str | None = None,
|
||||||
zone_ids: None | list[int] = None,
|
zone_ids: None | list[int] = None,
|
||||||
default_zone_id: None | int = None,
|
default_zone_id: None | int = None,
|
||||||
|
|||||||
@@ -26,26 +26,26 @@ class CloudbrokerAccountGetResultModel(_base.BaseAPIResultModel):
|
|||||||
send_access_emails: bool
|
send_access_emails: bool
|
||||||
status: _nested.AccountStatus
|
status: _nested.AccountStatus
|
||||||
storage_policy_ids: list[int]
|
storage_policy_ids: list[int]
|
||||||
uniq_pools: list[str]
|
sep_pools: list[str]
|
||||||
updated_timestamp: int
|
updated_timestamp: int
|
||||||
version: int
|
version: int
|
||||||
vm_features: list[_nested.VMFeature]
|
vm_features: list[_nested.VMFeature]
|
||||||
zones: list[_nested.ZoneAPIResultNM]
|
zones: list[_nested.ZoneAPIResultNM]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def created_datetime(self):
|
def created_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.created_timestamp)
|
return self._get_datetime_from_timestamp(self.created_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deactivation_datetime(self):
|
def deactivation_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deactivation_timestamp)
|
return self._get_datetime_from_timestamp(self.deactivation_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def deleted_datetime(self):
|
def deleted_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
return self._get_datetime_from_timestamp(self.deleted_timestamp)
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def updated_datetime(self):
|
def updated_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
return self._get_datetime_from_timestamp(self.updated_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
import dynamix_sdk.api._nested as _nested
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountSetCpuAllocationParameterResultBool(
|
||||||
|
_base.BaseAPIResultBool,
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountSetCpuAllocationParameterProtocol(
|
||||||
|
_base.BasePostAPIFunctionProtocol,
|
||||||
|
):
|
||||||
|
def set_cpu_allocation_parameter(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
account_id: int,
|
||||||
|
cpu_allocation_mode: _nested.CPUAllocationMode,
|
||||||
|
) -> CloudbrokerAccountSetCpuAllocationParameterResultBool:
|
||||||
|
...
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountSetCpuAllocationRatioResultBool(
|
||||||
|
_base.BaseAPIResultBool,
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountSetCpuAllocationRatioProtocol(
|
||||||
|
_base.BasePostAPIFunctionProtocol,
|
||||||
|
):
|
||||||
|
def set_cpu_allocation_ratio(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
account_id: int,
|
||||||
|
ratio: float,
|
||||||
|
) -> CloudbrokerAccountSetCpuAllocationRatioResultBool:
|
||||||
|
...
|
||||||
27
src/dynamix_sdk/api/cloudbroker/account/update.py
Normal file
27
src/dynamix_sdk/api/cloudbroker/account/update.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
import dynamix_sdk.api._nested as _nested
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateResultBool(_base.BaseAPIResultBool):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateProtocol(_base.BasePostAPIFunctionProtocol):
|
||||||
|
def update(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
account_id: int,
|
||||||
|
name: None | str = None,
|
||||||
|
ram_size_quota_mb: None | int = None,
|
||||||
|
storage_size_quota_gb: None | int = None,
|
||||||
|
cpu_count_quota: None | int = None,
|
||||||
|
ext_ip_count_quota: None | int = None,
|
||||||
|
send_access_emails: bool | None = None,
|
||||||
|
gpu_count_quota: None | int = None,
|
||||||
|
sep_pools: None | list[str] = None,
|
||||||
|
description: str | None = None,
|
||||||
|
clear_sep_pools: bool = False,
|
||||||
|
default_zone_id: int | None = None,
|
||||||
|
storage_policies_quotas: list[_nested.StoragePolicyQuotasAPIParamsNM] | None = None, # noqa: E501
|
||||||
|
) -> CloudbrokerAccountUpdateResultBool:
|
||||||
|
...
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
import dynamix_sdk.api._nested as _nested
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateComputeFeaturesResultBool(
|
||||||
|
_base.BaseAPIResultBool,
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateComputeFeaturesProtocol(
|
||||||
|
_base.BasePostAPIFunctionProtocol,
|
||||||
|
):
|
||||||
|
def update_compute_features(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
account_id: int,
|
||||||
|
vm_features: list[_nested.VMFeature] | None = None,
|
||||||
|
) -> CloudbrokerAccountUpdateComputeFeaturesResultBool:
|
||||||
|
...
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
import dynamix_sdk.api._nested as _nested
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateResourceTypesResultBool(_base.BaseAPIResultBool):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateResourceTypesProtocol(
|
||||||
|
_base.BasePostAPIFunctionProtocol,
|
||||||
|
):
|
||||||
|
def update_resource_types(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
account_id: int,
|
||||||
|
resource_types: list[_nested.AccountResourceType],
|
||||||
|
) -> CloudbrokerAccountUpdateResourceTypesResultBool:
|
||||||
|
...
|
||||||
19
src/dynamix_sdk/api/cloudbroker/account/update_user.py
Normal file
19
src/dynamix_sdk/api/cloudbroker/account/update_user.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
import dynamix_sdk.api._nested as _nested
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateUserResultBool(_base.BaseAPIResultBool):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerAccountUpdateUserProtocol(
|
||||||
|
_base.BasePostAPIFunctionProtocol,
|
||||||
|
):
|
||||||
|
def update_user(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
account_id: int,
|
||||||
|
user_name: str,
|
||||||
|
access_type: _nested.AccessTypeForSet,
|
||||||
|
) -> CloudbrokerAccountUpdateUserResultBool:
|
||||||
|
...
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import dynamix_sdk.base as _base
|
import dynamix_sdk.base as _base
|
||||||
|
from .change_read_only import *
|
||||||
from .change_security_groups import *
|
from .change_security_groups import *
|
||||||
from .clone import *
|
from .clone import *
|
||||||
from .clone_abort import *
|
from .clone_abort import *
|
||||||
@@ -11,6 +12,7 @@ from .stop_migration_out import *
|
|||||||
|
|
||||||
class CloudbrokerComputeAPI(
|
class CloudbrokerComputeAPI(
|
||||||
_base.BaseAPI,
|
_base.BaseAPI,
|
||||||
|
CloudbrokerComputeChangeReadOnlyProtocol,
|
||||||
CloudbrokerComputeChangeSecurityGroupsProtocol,
|
CloudbrokerComputeChangeSecurityGroupsProtocol,
|
||||||
CloudbrokerComputeCloneProtocol,
|
CloudbrokerComputeCloneProtocol,
|
||||||
CloudbrokerComputeCloneAbortProtocol,
|
CloudbrokerComputeCloneAbortProtocol,
|
||||||
|
|||||||
19
src/dynamix_sdk/api/cloudbroker/compute/change_read_only.py
Normal file
19
src/dynamix_sdk/api/cloudbroker/compute/change_read_only.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import dynamix_sdk.base as _base
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerComputeChangeReadOnlyResultBool(
|
||||||
|
_base.BaseAPIResultBool,
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloudbrokerComputeChangeReadOnlyProtocol(
|
||||||
|
_base.BasePostAPIFunctionProtocol
|
||||||
|
):
|
||||||
|
def change_read_only(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
vm_id: int,
|
||||||
|
read_only: bool,
|
||||||
|
) -> CloudbrokerComputeChangeReadOnlyResultBool:
|
||||||
|
...
|
||||||
@@ -16,6 +16,6 @@ class CloudbrokerComputeCloneProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
snapshot_name: str | None = None,
|
snapshot_name: str | None = None,
|
||||||
sep_pool_name: str | None = None,
|
sep_pool_name: str | None = None,
|
||||||
sep_id: int | None = None,
|
sep_id: int | None = None,
|
||||||
storage_policy_id: int | None = None,
|
storage_policy_id: int,
|
||||||
) -> CloudbrokerComputeCloneResultStr:
|
) -> CloudbrokerComputeCloneResultStr:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ class CloudbrokerComputeStartMigrationInProtocol(
|
|||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
vm_id: int,
|
vm_id: int,
|
||||||
stack_id: int | None = None,
|
node_id: int | None = None,
|
||||||
) -> CloudbrokerComputeStartMigrationInResultStr:
|
) -> CloudbrokerComputeStartMigrationInResultStr:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ class CloudbrokerSecurityGroupCreateRuleProtocol(
|
|||||||
protocol: _nested.SGRuleProtocol | None = None,
|
protocol: _nested.SGRuleProtocol | None = None,
|
||||||
port_range_max: int | None = None,
|
port_range_max: int | None = None,
|
||||||
port_range_min: int | None = None,
|
port_range_min: int | None = None,
|
||||||
remote_ip_prefix: str | None = None,
|
remote_net_cidr: str | None = None,
|
||||||
) -> CloudbrokerSecurityGroupCreateRuleResultInt:
|
) -> CloudbrokerSecurityGroupCreateRuleResultInt:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -23,5 +23,6 @@ class CloudbrokerStoragePolicyListProtocol(_base.BaseGetAPIFunctionProtocol):
|
|||||||
sep_pool_name: str | None = None,
|
sep_pool_name: str | None = None,
|
||||||
sort_by: str | None = None,
|
sort_by: str | None = None,
|
||||||
status: _nested.StoragePolicyStatus | None = None,
|
status: _nested.StoragePolicyStatus | None = None,
|
||||||
|
sep_tech_status: _nested.SEPTechStatus | None = None,
|
||||||
) -> CloudbrokerStoragePolicyListResultModel:
|
) -> CloudbrokerStoragePolicyListResultModel:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import dynamix_sdk.base as _base
|
|||||||
import dynamix_sdk.api._nested as _nested
|
import dynamix_sdk.api._nested as _nested
|
||||||
|
|
||||||
|
|
||||||
class CloudbrokerUserCreateResultBool(_base.BaseAPIResultBool):
|
class CloudbrokerUserCreateResultStr(_base.BaseAPIResultStr):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@@ -11,9 +11,9 @@ class CloudbrokerUserCreateProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
user_name: str,
|
user_name: str,
|
||||||
email_addresses: list[str],
|
email_address: str,
|
||||||
password: str,
|
password: str,
|
||||||
api_access_group_ids: list[int] | None = None,
|
api_access_group_ids: list[int] | None = None,
|
||||||
auth_broker: _nested.AuthBroker | None = None,
|
auth_broker: _nested.AuthBroker | None = None,
|
||||||
) -> CloudbrokerUserCreateResultBool:
|
) -> CloudbrokerUserCreateResultStr:
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ class CloudbrokerUserGetResultModel(_base.BaseAPIResultModel):
|
|||||||
service_account: bool
|
service_account: bool
|
||||||
xmpp: list[_typing.Any]
|
xmpp: list[_typing.Any]
|
||||||
|
|
||||||
@property
|
@_base.computed_field
|
||||||
def last_check_datetime(self):
|
def last_check_datetime(self) -> _base.datetime | None:
|
||||||
return self._get_datetime_from_timestamp(self.last_check_timestamp)
|
return self._get_datetime_from_timestamp(self.last_check_timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ class CloudbrokerUserListProtocol(_base.BasePostAPIFunctionProtocol):
|
|||||||
active: bool | None = None,
|
active: bool | None = None,
|
||||||
email: str | None = None,
|
email: str | None = None,
|
||||||
name: str | None = None,
|
name: str | None = None,
|
||||||
page_number: int | None = None,
|
page_number: int = 1,
|
||||||
page_size: int | None = None,
|
page_size: int = 100,
|
||||||
service_account: bool | None = None,
|
service_account: bool | None = None,
|
||||||
sort_by: str | None = None,
|
sort_by: str | None = None,
|
||||||
) -> CloudbrokerUserListResultModel:
|
) -> CloudbrokerUserListResultModel:
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ bandwidth_limit: bandwidth
|
|||||||
base_domain: baseDomain
|
base_domain: baseDomain
|
||||||
binding_name: bindingName
|
binding_name: bindingName
|
||||||
bindings: bindings
|
bindings: bindings
|
||||||
|
blkdiscard: blkdiscard
|
||||||
blocked: blocked
|
blocked: blocked
|
||||||
boot_cdrom_image_id: altBootId
|
boot_cdrom_image_id: altBootId
|
||||||
boot_disk_size_gb: bootdiskSize
|
boot_disk_size_gb: bootdiskSize
|
||||||
@@ -124,6 +125,7 @@ bus_num: bus_number
|
|||||||
bus_num__VGPUAPIResultNM: bus_number
|
bus_num__VGPUAPIResultNM: bus_number
|
||||||
bus_num_hex__CloudapiComputeDiskAddParamsModel: bus_number
|
bus_num_hex__CloudapiComputeDiskAddParamsModel: bus_number
|
||||||
bus_num_hex__CloudapiComputeDiskAttachParamsModel: bus_number
|
bus_num_hex__CloudapiComputeDiskAttachParamsModel: bus_number
|
||||||
|
cache_mode: cache
|
||||||
can_be_deleted: canBeDeleted
|
can_be_deleted: canBeDeleted
|
||||||
capabilities: capabilities
|
capabilities: capabilities
|
||||||
cd_presented_to: cdPresentedTo
|
cd_presented_to: cdPresentedTo
|
||||||
@@ -134,6 +136,8 @@ cdrom_image_id__VMAPIResultNM: cdImageId
|
|||||||
cdrom_mapping: cdrommap
|
cdrom_mapping: cdrommap
|
||||||
check: check
|
check: check
|
||||||
check_ips: checkIps
|
check_ips: checkIps
|
||||||
|
child_id__CloudapiBserviceGroupParentAddParamsModel: compgroupId
|
||||||
|
child_id__CloudapiBserviceGroupParentRemoveParamsModel: compgroupId
|
||||||
chipset: chipset
|
chipset: chipset
|
||||||
ci_user_data: userdata
|
ci_user_data: userdata
|
||||||
ci_user_data__CloudapiBserviceGroupAddParamsModel: userData
|
ci_user_data__CloudapiBserviceGroupAddParamsModel: userData
|
||||||
@@ -142,7 +146,7 @@ ci_user_data__CloudapiK8sUpdateWorkerNodesMetaDataParamsModel: userData
|
|||||||
ci_user_data__CloudapiK8sWorkersGroupAddParamsModel: userData
|
ci_user_data__CloudapiK8sWorkersGroupAddParamsModel: userData
|
||||||
ckey: _ckey
|
ckey: _ckey
|
||||||
claimed: claimed
|
claimed: claimed
|
||||||
clear_uniq_pools: clearUniqPools
|
clear_sep_pools: clearUniqPools
|
||||||
client_host_key__CloudbrokerNodeAddSshIdentityParamsModel: client_host_key
|
client_host_key__CloudbrokerNodeAddSshIdentityParamsModel: client_host_key
|
||||||
client_hostname__CloudbrokerNodeAddSshIdentityParamsModel: client_host_name
|
client_hostname__CloudbrokerNodeAddSshIdentityParamsModel: client_host_name
|
||||||
client_ids: clientIds
|
client_ids: clientIds
|
||||||
@@ -168,6 +172,7 @@ consistency: consistency
|
|||||||
consumed: Consumed
|
consumed: Consumed
|
||||||
correlation_id: correlation_id
|
correlation_id: correlation_id
|
||||||
count_change_mode__CloudapiBserviceGroupResizeParamsModel: mode
|
count_change_mode__CloudapiBserviceGroupResizeParamsModel: mode
|
||||||
|
cpu_allocation_mode__CloudbrokerAccountSetCpuAllocationParameterParamsModel: strict_loose
|
||||||
cpu_allocation_parameter: cpu_allocation_parameter
|
cpu_allocation_parameter: cpu_allocation_parameter
|
||||||
cpu_allocation_ratio: cpu_allocation_ratio
|
cpu_allocation_ratio: cpu_allocation_ratio
|
||||||
cpu_count: cpu
|
cpu_count: cpu
|
||||||
@@ -178,6 +183,7 @@ cpu_count__VMAPIResultNM: cpus
|
|||||||
cpu_count_quota: maxCPUCapacity
|
cpu_count_quota: maxCPUCapacity
|
||||||
cpu_count_total: cpuTotal
|
cpu_count_total: cpuTotal
|
||||||
cpu_pin: cpupin
|
cpu_pin: cpupin
|
||||||
|
cpu_pin__CloudapiKvmx86CreateBlankParamsModel: cpu_pin
|
||||||
created_after_timestamp: createdAfter
|
created_after_timestamp: createdAfter
|
||||||
created_after_timestamp__CloudapiSecurityGroupListParamsModel: created_min
|
created_after_timestamp__CloudapiSecurityGroupListParamsModel: created_min
|
||||||
created_after_timestamp__CloudapiTasksListParamsModel: updateTimeAt
|
created_after_timestamp__CloudapiTasksListParamsModel: updateTimeAt
|
||||||
@@ -226,7 +232,6 @@ description__CloudapiDpdknetListParamsModel: description
|
|||||||
description__CloudapiSecurityGroupCreateParamsModel: description
|
description__CloudapiSecurityGroupCreateParamsModel: description
|
||||||
description__CloudapiSecurityGroupListParamsModel: description
|
description__CloudapiSecurityGroupListParamsModel: description
|
||||||
description__CloudapiSecurityGroupUpdateParamsModel: description
|
description__CloudapiSecurityGroupUpdateParamsModel: description
|
||||||
description__CloudapiStackGetResultModel: descr
|
|
||||||
description__CloudapiVfpoolListParamsModel: description
|
description__CloudapiVfpoolListParamsModel: description
|
||||||
description__CloudapiZoneGetResultModel: description
|
description__CloudapiZoneGetResultModel: description
|
||||||
description__CloudapiZoneListParamsModel: description
|
description__CloudapiZoneListParamsModel: description
|
||||||
@@ -266,6 +271,7 @@ disk_id__CloudbrokerDisksMigrateAbortParamsModel: disk_id
|
|||||||
disk_id__CloudbrokerDisksMigrateParamsModel: disk_id
|
disk_id__CloudbrokerDisksMigrateParamsModel: disk_id
|
||||||
disk_id__CloudbrokerDisksMigrateStatusParamsModel: disk_id
|
disk_id__CloudbrokerDisksMigrateStatusParamsModel: disk_id
|
||||||
disk_ids: diskIds
|
disk_ids: diskIds
|
||||||
|
disk_ids__SnapshotSetAPIResultNM: disks
|
||||||
disk_mapping: diskmap
|
disk_mapping: diskmap
|
||||||
disk_max_size_gb: diskMaxSize
|
disk_max_size_gb: diskMaxSize
|
||||||
disk_path: diskPath
|
disk_path: diskPath
|
||||||
@@ -301,7 +307,6 @@ egress_rate: eRate
|
|||||||
email: email
|
email: email
|
||||||
email_address: emailaddress
|
email_address: emailaddress
|
||||||
email_addresses: emailaddresses
|
email_addresses: emailaddresses
|
||||||
email_addresses__CloudbrokerUserCreateParamsModel: emailaddress
|
|
||||||
emails: emails
|
emails: emails
|
||||||
enabled: enabled
|
enabled: enabled
|
||||||
enabled__TenantStatusCountersAPIResultNM: ENABLED
|
enabled__TenantStatusCountersAPIResultNM: ENABLED
|
||||||
@@ -331,9 +336,6 @@ ext_net_ip__VINSForListAPIResultNM: externalIP
|
|||||||
ext_net_ip__VINSForListDeletedAPIResultNM: externalIP
|
ext_net_ip__VINSForListDeletedAPIResultNM: externalIP
|
||||||
ext_net_name: extNetName
|
ext_net_name: extNetName
|
||||||
ext_net_prefix: ext_netmask
|
ext_net_prefix: ext_netmask
|
||||||
ext_traffic: CU_NP
|
|
||||||
ext_traffic__ResourceCountersAPIResultNM: exttraffic
|
|
||||||
ext_traffic_quota: maxNetworkPeerTransfer
|
|
||||||
extnet_ids: extnets
|
extnet_ids: extnets
|
||||||
extnet_ids__CloudapiZoneGetResultModel: extnetIds
|
extnet_ids__CloudapiZoneGetResultModel: extnetIds
|
||||||
extnet_only: extnetOnly
|
extnet_only: extnetOnly
|
||||||
@@ -359,6 +361,7 @@ gpu_count: gpu_units
|
|||||||
gpu_count__ResourceCountersAPIResultNM: gpu
|
gpu_count__ResourceCountersAPIResultNM: gpu
|
||||||
gpu_count_quota__CloudapiAccountUpdateParamsModel: gpu_units
|
gpu_count_quota__CloudapiAccountUpdateParamsModel: gpu_units
|
||||||
gpu_count_quota__CloudbrokerAccountCreateParamsModel: gpu_units
|
gpu_count_quota__CloudbrokerAccountCreateParamsModel: gpu_units
|
||||||
|
gpu_count_quota__CloudbrokerAccountUpdateParamsModel: gpu_units
|
||||||
graphics_listen_addr: graphics
|
graphics_listen_addr: graphics
|
||||||
grid_id: gid
|
grid_id: gid
|
||||||
group_ids__BServiceAPIResultNM: groups
|
group_ids__BServiceAPIResultNM: groups
|
||||||
@@ -375,6 +378,7 @@ hostname__CloudbrokerNodeGetSshIdentityResultModel: host_name
|
|||||||
hot_resize: hotResize
|
hot_resize: hotResize
|
||||||
hot_resize__CloudapiImageCreateParamsModel: hotresize
|
hot_resize__CloudapiImageCreateParamsModel: hotresize
|
||||||
hp_backed: hpBacked
|
hp_backed: hpBacked
|
||||||
|
hp_backed__CloudapiKvmx86CreateBlankParamsModel: hp_backed
|
||||||
hw_path: hwPath
|
hw_path: hwPath
|
||||||
id: id
|
id: id
|
||||||
id__CloudapiAccountListDeletedParamsModel: by_id
|
id__CloudapiAccountListDeletedParamsModel: by_id
|
||||||
@@ -400,7 +404,6 @@ id__CloudapiPcideviceListParamsModel: by_id
|
|||||||
id__CloudapiRgListDeletedParamsModel: by_id
|
id__CloudapiRgListDeletedParamsModel: by_id
|
||||||
id__CloudapiRgListParamsModel: by_id
|
id__CloudapiRgListParamsModel: by_id
|
||||||
id__CloudapiSecurityGroupListParamsModel: by_id
|
id__CloudapiSecurityGroupListParamsModel: by_id
|
||||||
id__CloudapiStackListParamsModel: by_id
|
|
||||||
id__CloudapiStoragePolicyGetParamsModel: storage_policy_id
|
id__CloudapiStoragePolicyGetParamsModel: storage_policy_id
|
||||||
id__CloudapiStoragePolicyListParamsModel: by_id
|
id__CloudapiStoragePolicyListParamsModel: by_id
|
||||||
id__CloudapiVfpoolListParamsModel: by_id
|
id__CloudapiVfpoolListParamsModel: by_id
|
||||||
@@ -529,7 +532,6 @@ max_status_code__CloudapiAuditListParamsModel: max_status_code
|
|||||||
max_status_code__CloudbrokerAuditListParamsModel: max_status_code
|
max_status_code__CloudbrokerAuditListParamsModel: max_status_code
|
||||||
maxconn: maxconn
|
maxconn: maxconn
|
||||||
maxqueue: maxqueue
|
maxqueue: maxqueue
|
||||||
mem_allocation_ratio: mem_allocation_ratio
|
|
||||||
meta: _meta
|
meta: _meta
|
||||||
mgmt: mgmt
|
mgmt: mgmt
|
||||||
mgmt_ip: mgmtIp
|
mgmt_ip: mgmtIp
|
||||||
@@ -564,8 +566,10 @@ net_ip: network
|
|||||||
net_ip__CloudapiExtnetListParamsModel: network
|
net_ip__CloudapiExtnetListParamsModel: network
|
||||||
net_mapping: netmap
|
net_mapping: netmap
|
||||||
net_prefix: netmask
|
net_prefix: netmask
|
||||||
|
net_prefix__CloudapiComputeNetAttachParamsModel: netMask
|
||||||
net_prefix__CloudapiExtnetGetResultModel: prefix
|
net_prefix__CloudapiExtnetGetResultModel: prefix
|
||||||
net_prefix__CloudapiVinsGetResultModel: netMask
|
net_prefix__CloudapiVinsGetResultModel: netMask
|
||||||
|
net_prefix__InterfaceAPIParamsNM: netMask
|
||||||
net_prefix__InterfaceForComputeGetAPIResultNM: netMask
|
net_prefix__InterfaceForComputeGetAPIResultNM: netMask
|
||||||
net_prefix__InterfaceForComputeListAPIResultNM: netMask
|
net_prefix__InterfaceForComputeListAPIResultNM: netMask
|
||||||
net_prefix__VINSExtNetAPIResultNM: prefixlen
|
net_prefix__VINSExtNetAPIResultNM: prefixlen
|
||||||
@@ -583,6 +587,8 @@ new_mac: new_mac_address
|
|||||||
new_name: new_name
|
new_name: new_name
|
||||||
new_vm_name__CloudapiComputeMoveToRgParamsModel: name
|
new_vm_name__CloudapiComputeMoveToRgParamsModel: name
|
||||||
new_vm_uuid: new_vm_uuid
|
new_vm_uuid: new_vm_uuid
|
||||||
|
node_auto_start__CloudapiZoneGetResultModel: autostart
|
||||||
|
node_auto_start__ZoneForListAPIResultNM: autostart
|
||||||
node_boot_disk_size_gb__CloudapiK8sWorkersGroupGetByNameResultModel: disk
|
node_boot_disk_size_gb__CloudapiK8sWorkersGroupGetByNameResultModel: disk
|
||||||
node_boot_disk_size_gb__K8sNodeGroupAPIResultNM: disk
|
node_boot_disk_size_gb__K8sNodeGroupAPIResultNM: disk
|
||||||
node_count__CloudapiK8sWorkerAddParamsModel: num
|
node_count__CloudapiK8sWorkerAddParamsModel: num
|
||||||
@@ -595,10 +601,13 @@ node_cpu_count__K8sNodeGroupAPIResultNM: cpu
|
|||||||
node_disk_size_gb__CloudapiK8sWorkersGroupAddParamsModel: workerDisk
|
node_disk_size_gb__CloudapiK8sWorkersGroupAddParamsModel: workerDisk
|
||||||
node_groups: k8sGroups
|
node_groups: k8sGroups
|
||||||
node_id: nodeId
|
node_id: nodeId
|
||||||
|
node_id__BServiceVMAPIResultNM: node_id
|
||||||
node_id__CloudbrokerAuditListParamsModel: node_id
|
node_id__CloudbrokerAuditListParamsModel: node_id
|
||||||
|
node_id__CloudbrokerComputeStartMigrationInParamsModel: node_id
|
||||||
node_id__CloudbrokerNodeAddSshIdentityParamsModel: node_id
|
node_id__CloudbrokerNodeAddSshIdentityParamsModel: node_id
|
||||||
node_id__CloudbrokerNodeGetSshIdentityParamsModel: node_id
|
node_id__CloudbrokerNodeGetSshIdentityParamsModel: node_id
|
||||||
node_id__CloudbrokerNodeUpdateDescriptionParamsModel: nid
|
node_id__CloudbrokerNodeUpdateDescriptionParamsModel: nid
|
||||||
|
node_id__VNFDevResourcesConfigAPIResultNM: node_id
|
||||||
node_ids: nodeIds
|
node_ids: nodeIds
|
||||||
node_ids__AuditAPIResultNM: node_ids
|
node_ids__AuditAPIResultNM: node_ids
|
||||||
node_ram_size_mb__CloudapiK8sWorkersGroupAddParamsModel: workerRam
|
node_ram_size_mb__CloudapiK8sWorkersGroupAddParamsModel: workerRam
|
||||||
@@ -607,6 +616,7 @@ node_ram_size_mb__K8sNodeGroupAPIResultNM: ram
|
|||||||
nodes: vfs
|
nodes: vfs
|
||||||
ntp_servers: ntp
|
ntp_servers: ntp
|
||||||
numa_affinity: numaAffinity
|
numa_affinity: numaAffinity
|
||||||
|
numa_affinity__CloudapiKvmx86CreateBlankParamsModel: numa_affinity
|
||||||
numa_node_id: numaNodeId
|
numa_node_id: numaNodeId
|
||||||
os_password__CloudapiImageCreateParamsModel: password
|
os_password__CloudapiImageCreateParamsModel: password
|
||||||
os_password__CloudapiImageGetResultModel: password
|
os_password__CloudapiImageGetResultModel: password
|
||||||
@@ -639,6 +649,7 @@ password__DiskForListUnattachedAPIResultNM: passwd
|
|||||||
password__UserAPIResultNM: passwd
|
password__UserAPIResultNM: passwd
|
||||||
path: path
|
path: path
|
||||||
pci_device_id: deviceId
|
pci_device_id: deviceId
|
||||||
|
pci_devices__VMAPIResultNM: devices
|
||||||
pci_slot_num: pciSlot
|
pci_slot_num: pciSlot
|
||||||
pci_slot_num__DiskForCAComputeGetAPIResultNM: pci_slot
|
pci_slot_num__DiskForCAComputeGetAPIResultNM: pci_slot
|
||||||
pci_slot_num__VGPUAPIResultNM: pciSlot
|
pci_slot_num__VGPUAPIResultNM: pciSlot
|
||||||
@@ -651,7 +662,7 @@ pgpu_mode__CloudapiVgpuListParamsModel: mode
|
|||||||
pgpu_mode__VGPUAPIResultNM: mode
|
pgpu_mode__VGPUAPIResultNM: mode
|
||||||
pgpu_processor_type__CloudapiVgpuListParamsModel: type
|
pgpu_processor_type__CloudapiVgpuListParamsModel: type
|
||||||
pgpu_processor_type__VGPUAPIResultNM: type
|
pgpu_processor_type__VGPUAPIResultNM: type
|
||||||
pinned_to_stack: pinnedToStack
|
pinned_to_node: pinnedToNode
|
||||||
policy: policy
|
policy: policy
|
||||||
pool_id: poolId
|
pool_id: poolId
|
||||||
pool_names: pool_names
|
pool_names: pool_names
|
||||||
@@ -693,16 +704,18 @@ ram_size_mb__TenantQuotasAPIResultNM: CU_M
|
|||||||
ram_size_mb__TenantQuotasForResourceConsumptionAPIResultNM: CU_M
|
ram_size_mb__TenantQuotasForResourceConsumptionAPIResultNM: CU_M
|
||||||
ram_size_quota_mb: maxMemoryCapacity
|
ram_size_quota_mb: maxMemoryCapacity
|
||||||
ram_size_total_mb: ramTotal
|
ram_size_total_mb: ramTotal
|
||||||
|
ratio: ratio
|
||||||
read_bytes_sec: read_bytes_sec
|
read_bytes_sec: read_bytes_sec
|
||||||
read_bytes_sec_max: read_bytes_sec_max
|
read_bytes_sec_max: read_bytes_sec_max
|
||||||
read_iops_sec: read_iops_sec
|
read_iops_sec: read_iops_sec
|
||||||
read_iops_sec_max: read_iops_sec_max
|
read_iops_sec_max: read_iops_sec_max
|
||||||
|
read_only: read_only
|
||||||
reality_device_number: realityDeviceNumber
|
reality_device_number: realityDeviceNumber
|
||||||
recursively__CloudapiRgDeleteParamsModel: force
|
recursively__CloudapiRgDeleteParamsModel: force
|
||||||
redundant: redundant
|
redundant: redundant
|
||||||
reference_id: referenceId
|
reference_id: referenceId
|
||||||
remote_group_id: remote_group_id
|
remote_group_id: remote_group_id
|
||||||
remote_ip_prefix: remote_ip_prefix
|
remote_net_cidr: remote_ip_prefix
|
||||||
replication: replication
|
replication: replication
|
||||||
request_datetime_iso8601: _ttl
|
request_datetime_iso8601: _ttl
|
||||||
request_id: request_id
|
request_id: request_id
|
||||||
@@ -754,7 +767,11 @@ same_node: sameNode
|
|||||||
same_node_soft: sameNodeSoft
|
same_node_soft: sameNodeSoft
|
||||||
sdn: sdn
|
sdn: sdn
|
||||||
sdn_access_group_id: sdn_access_group_id
|
sdn_access_group_id: sdn_access_group_id
|
||||||
|
sdn_logical_port_description: sdn_logical_port_description
|
||||||
|
sdn_logical_port_display_name: sdn_logical_port_display_name
|
||||||
sdn_logical_port_id: sdn_interface_id
|
sdn_logical_port_id: sdn_interface_id
|
||||||
|
sdn_object_group_id: sdn_object_group_id
|
||||||
|
sdn_segment_id: sdn_segment_id
|
||||||
sdn_support: sdn_support
|
sdn_support: sdn_support
|
||||||
secondary: secondary
|
secondary: secondary
|
||||||
secondary_node: secondaryNode
|
secondary_node: secondaryNode
|
||||||
@@ -795,8 +812,17 @@ sep_pool_name__CloudbrokerStoragePolicyAddPoolParamsModel: pool_name
|
|||||||
sep_pool_name__CloudbrokerStoragePolicyDeletePoolParamsModel: pool_name
|
sep_pool_name__CloudbrokerStoragePolicyDeletePoolParamsModel: pool_name
|
||||||
sep_pool_name__CloudbrokerStoragePolicyListParamsModel: pool_name
|
sep_pool_name__CloudbrokerStoragePolicyListParamsModel: pool_name
|
||||||
sep_pools: access_seps_pools
|
sep_pools: access_seps_pools
|
||||||
|
sep_pools__AccountForCBAPIResultNM: uniqPools
|
||||||
|
sep_pools__CloudapiAccountGetResultModel: uniqPools
|
||||||
|
sep_pools__CloudapiAccountUpdateParamsModel: uniqPools
|
||||||
|
sep_pools__CloudapiRgUpdateParamsModel: uniqPools
|
||||||
|
sep_pools__CloudbrokerAccountCreateParamsModel: uniqPools
|
||||||
|
sep_pools__CloudbrokerAccountGetResultModel: uniqPools
|
||||||
|
sep_pools__CloudbrokerAccountUpdateParamsModel: uniqPools
|
||||||
sep_pools__ResourceCountersAPIResultNM: seps
|
sep_pools__ResourceCountersAPIResultNM: seps
|
||||||
|
sep_pools__ResourceGroupAPIResultNM: uniqPools
|
||||||
sep_pools__StoragePolicyCountersAPIResultNM: seps
|
sep_pools__StoragePolicyCountersAPIResultNM: seps
|
||||||
|
sep_tech_status: sep_tech_status
|
||||||
sep_type: sepType
|
sep_type: sepType
|
||||||
seq_no: seqNo
|
seq_no: seqNo
|
||||||
server_default_settings: serverDefaultSettings
|
server_default_settings: serverDefaultSettings
|
||||||
@@ -812,7 +838,7 @@ shared__CloudapiDisksListDeletedParamsModel: shared
|
|||||||
shared__CloudapiDisksListParamsModel: shared
|
shared__CloudapiDisksListParamsModel: shared
|
||||||
shared_with: sharedWith
|
shared_with: sharedWith
|
||||||
show_all: showAll
|
show_all: showAll
|
||||||
size_available: sizeAvailable
|
size_available_gb: sizeAvailable
|
||||||
size_gb__CloudapiDisksCreateParamsModel: size
|
size_gb__CloudapiDisksCreateParamsModel: size
|
||||||
size_gb__CloudapiImageGetResultModel: size
|
size_gb__CloudapiImageGetResultModel: size
|
||||||
size_gb__CloudapiImageListParamsModel: imageSize
|
size_gb__CloudapiImageListParamsModel: imageSize
|
||||||
@@ -820,7 +846,7 @@ size_gb__DiskAPIParamsNM: size
|
|||||||
size_gb__ImageForListAPIResultNM: size
|
size_gb__ImageForListAPIResultNM: size
|
||||||
size_iops_sec: size_iops_sec
|
size_iops_sec: size_iops_sec
|
||||||
size_max_gb: sizeMax
|
size_max_gb: sizeMax
|
||||||
size_used: sizeUsed
|
size_used_gb: sizeUsed
|
||||||
slowstart: slowstart
|
slowstart: slowstart
|
||||||
snapshot_id: snapshotId
|
snapshot_id: snapshotId
|
||||||
snapshot_name: snapshotName
|
snapshot_name: snapshotName
|
||||||
@@ -838,7 +864,7 @@ sort_by__CloudbrokerAuditListParamsModel: sort_by
|
|||||||
sort_by__CloudbrokerComputeMigrateStorageListParamsModel: sort_by
|
sort_by__CloudbrokerComputeMigrateStorageListParamsModel: sort_by
|
||||||
sort_by__CloudbrokerSecurityGroupListParamsModel: sort_by
|
sort_by__CloudbrokerSecurityGroupListParamsModel: sort_by
|
||||||
sort_by__CloudbrokerStoragePolicyListParamsModel: sort_by
|
sort_by__CloudbrokerStoragePolicyListParamsModel: sort_by
|
||||||
source_stack_id: sourceStackId
|
source_node_id: sourceNodeId
|
||||||
source_type: source_type
|
source_type: source_type
|
||||||
source_value: source_value
|
source_value: source_value
|
||||||
ssh_public_key: pubkey
|
ssh_public_key: pubkey
|
||||||
@@ -846,7 +872,6 @@ ssh_public_key__CloudapiBserviceCreateParamsModel: sshKey
|
|||||||
ssh_public_key__CloudapiBserviceGetResultModel: sshKey
|
ssh_public_key__CloudapiBserviceGetResultModel: sshKey
|
||||||
ssh_public_key__VNFDevMGMTConfigAPIResultNM: sshkey
|
ssh_public_key__VNFDevMGMTConfigAPIResultNM: sshkey
|
||||||
ssh_user_name: sshUser
|
ssh_user_name: sshUser
|
||||||
stack_id: stackId
|
|
||||||
stage: stage
|
stage: stage
|
||||||
start: start
|
start: start
|
||||||
start__CloudapiComputeRedeployParamsModel: autoStart
|
start__CloudapiComputeRedeployParamsModel: autoStart
|
||||||
@@ -863,8 +888,9 @@ stopped: stopped
|
|||||||
stopped__VMStatusCountersAPIResultNM: Stopped
|
stopped__VMStatusCountersAPIResultNM: Stopped
|
||||||
storage_id: storageId
|
storage_id: storageId
|
||||||
storage_policies: storage_policy
|
storage_policies: storage_policy
|
||||||
storage_policies__CloudapiRgUpdateParamsModel: storage_policies
|
|
||||||
storage_policies__ResourceCountersAPIResultNM: policies
|
storage_policies__ResourceCountersAPIResultNM: policies
|
||||||
|
storage_policies_quotas__CloudapiRgUpdateParamsModel: storage_policies
|
||||||
|
storage_policies_quotas__CloudbrokerAccountUpdateParamsModel: storage_policies
|
||||||
storage_policy_id: storage_policy_id
|
storage_policy_id: storage_policy_id
|
||||||
storage_policy_ids: storage_policy_ids
|
storage_policy_ids: storage_policy_ids
|
||||||
storage_policy_quotas__CloudapiRgCreateParamsModel: storage_policies
|
storage_policy_quotas__CloudapiRgCreateParamsModel: storage_policies
|
||||||
@@ -893,7 +919,7 @@ target: target
|
|||||||
target_dev: target_dev
|
target_dev: target_dev
|
||||||
target_disk_id: targetDiskId
|
target_disk_id: targetDiskId
|
||||||
target_image_id: targetId
|
target_image_id: targetId
|
||||||
target_stack_id: targetStackId
|
target_node_id: targetNodeId
|
||||||
task_guid: taskId
|
task_guid: taskId
|
||||||
tech_status: techStatus
|
tech_status: techStatus
|
||||||
timestamp: timestamp
|
timestamp: timestamp
|
||||||
@@ -902,7 +928,7 @@ topology: topology
|
|||||||
total_bytes : end
|
total_bytes : end
|
||||||
total_bytes_sec: total_bytes_sec
|
total_bytes_sec: total_bytes_sec
|
||||||
total_bytes_sec_max: total_bytes_sec_max
|
total_bytes_sec_max: total_bytes_sec_max
|
||||||
total_disks_size: totalDisksSize
|
total_disks_size_gb: totalDisksSize
|
||||||
total_iops_sec: total_iops_sec
|
total_iops_sec: total_iops_sec
|
||||||
total_iops_sec_max: total_iops_sec_max
|
total_iops_sec_max: total_iops_sec_max
|
||||||
traffic_direction: direction
|
traffic_direction: direction
|
||||||
@@ -913,7 +939,6 @@ type: type
|
|||||||
type__CloudapiImageListParamsModel: typeImage
|
type__CloudapiImageListParamsModel: typeImage
|
||||||
types: types
|
types: types
|
||||||
unc_path: UNCPath
|
unc_path: UNCPath
|
||||||
uniq_pools: uniqPools
|
|
||||||
updated_after_timestamp__CloudapiSecurityGroupListParamsModel: updated_min
|
updated_after_timestamp__CloudapiSecurityGroupListParamsModel: updated_min
|
||||||
updated_after_timestamp__CloudbrokerSecurityGroupListParamsModel: updated_min
|
updated_after_timestamp__CloudbrokerSecurityGroupListParamsModel: updated_min
|
||||||
updated_before_timestamp__CloudapiSecurityGroupListParamsModel: updated_max
|
updated_before_timestamp__CloudapiSecurityGroupListParamsModel: updated_max
|
||||||
@@ -926,10 +951,10 @@ updated_timestamp__SecurityGroupAPIResultNM: updated_at
|
|||||||
updated_timestamp__TrunkAPIResultNM: updated_at
|
updated_timestamp__TrunkAPIResultNM: updated_at
|
||||||
usage: usage
|
usage: usage
|
||||||
use_unsafe: use_unsafe
|
use_unsafe: use_unsafe
|
||||||
user: user
|
user_emails__AccessAPIResultNM: emails
|
||||||
user_group_id: userGroupId
|
|
||||||
user_managed: userManaged
|
user_managed: userManaged
|
||||||
user_name: username
|
user_name: username
|
||||||
|
user_name__AccessAPIResultNM: userGroupId
|
||||||
user_name__AuditAPIResultNM: user
|
user_name__AuditAPIResultNM: user
|
||||||
user_name__CloudapiAccountAddUserParamsModel: userId
|
user_name__CloudapiAccountAddUserParamsModel: userId
|
||||||
user_name__CloudapiAccountDeleteUserParamsModel: userId
|
user_name__CloudapiAccountDeleteUserParamsModel: userId
|
||||||
@@ -941,11 +966,13 @@ user_name__CloudapiComputeUserUpdateParamsModel: userName
|
|||||||
user_name__CloudapiRgAccessGrantParamsModel: user
|
user_name__CloudapiRgAccessGrantParamsModel: user
|
||||||
user_name__CloudapiRgAccessRevokeParamsModel: user
|
user_name__CloudapiRgAccessRevokeParamsModel: user
|
||||||
user_name__CloudapiUserApiListParamsModel: userId
|
user_name__CloudapiUserApiListParamsModel: userId
|
||||||
|
user_name__CloudbrokerAccountUpdateUserParamsModel: userId
|
||||||
user_name__CloudbrokerAuditListParamsModel: user
|
user_name__CloudbrokerAuditListParamsModel: user
|
||||||
user_name__CloudbrokerUserBlockParamsModel: user_id
|
user_name__CloudbrokerUserBlockParamsModel: user_id
|
||||||
user_name__CloudbrokerUserGetParamsModel: userId
|
user_name__CloudbrokerUserGetParamsModel: userId
|
||||||
user_name__CloudbrokerUserUnblockParamsModel: user_id
|
user_name__CloudbrokerUserUnblockParamsModel: user_id
|
||||||
user_name__GuestAgentAPIResultNM: user
|
user_name__GuestAgentAPIResultNM: user
|
||||||
|
user_name__VNFDevMGMTConfigAPIResultNM: user
|
||||||
uuid: uuid
|
uuid: uuid
|
||||||
valid: valid
|
valid: valid
|
||||||
value: value
|
value: value
|
||||||
@@ -996,6 +1023,7 @@ vm_id__CloudapiComputeGuestAgentExecuteParamsModel: compute_id
|
|||||||
vm_id__CloudapiComputeGuestAgentFeatureUpdateParamsModel: compute_id
|
vm_id__CloudapiComputeGuestAgentFeatureUpdateParamsModel: compute_id
|
||||||
vm_id__CloudapiDisksGetResultModel: machineId
|
vm_id__CloudapiDisksGetResultModel: machineId
|
||||||
vm_id__CloudbrokerAuditListParamsModel: compute_id
|
vm_id__CloudbrokerAuditListParamsModel: compute_id
|
||||||
|
vm_id__CloudbrokerComputeChangeReadOnlyParamsModel: compute_id
|
||||||
vm_id__CloudbrokerComputeChangeSecurityGroupsParamsModel: compute_id
|
vm_id__CloudbrokerComputeChangeSecurityGroupsParamsModel: compute_id
|
||||||
vm_id__CloudbrokerComputeCloneAbortParamsModel: compute_id
|
vm_id__CloudbrokerComputeCloneAbortParamsModel: compute_id
|
||||||
vm_id__CloudbrokerComputeStartMigrationOutParamsModel: compute_id
|
vm_id__CloudbrokerComputeStartMigrationOutParamsModel: compute_id
|
||||||
|
|||||||
@@ -99,10 +99,11 @@ net_detach: netDetach
|
|||||||
pfw_add: pfwAdd
|
pfw_add: pfwAdd
|
||||||
pfw_del: pfwDel
|
pfw_del: pfwDel
|
||||||
pfw_list: pfwList
|
pfw_list: pfwList
|
||||||
pin_to_stack: pinToStack
|
|
||||||
power_cycle: powerCycle
|
power_cycle: powerCycle
|
||||||
remove_def_net: removeDefNet
|
remove_def_net: removeDefNet
|
||||||
remove_zone: removeZone
|
remove_zone: removeZone
|
||||||
|
set_cpu_allocation_parameter: setCpuAllocationParameter
|
||||||
|
set_cpu_allocation_ratio: setCpuAllocationRatio
|
||||||
set_custom_fields: setCustomFields
|
set_custom_fields: setCustomFields
|
||||||
set_data: setData
|
set_data: setData
|
||||||
set_def_net: setDefNet
|
set_def_net: setDefNet
|
||||||
@@ -116,6 +117,8 @@ static_route_list: staticRouteList
|
|||||||
tag_add: tagAdd
|
tag_add: tagAdd
|
||||||
tag_remove: tagRemove
|
tag_remove: tagRemove
|
||||||
unpin_from_stack: unpinFromStack
|
unpin_from_stack: unpinFromStack
|
||||||
|
update_compute_features: updateComputeFeatures
|
||||||
|
update_resource_types: updateResourceTypes
|
||||||
update_sysctl_params: updateSysctlParams
|
update_sysctl_params: updateSysctlParams
|
||||||
update_user: updateUser
|
update_user: updateUser
|
||||||
update_worker_nodes_meta_data: updateWorkerNodesMetaData
|
update_worker_nodes_meta_data: updateWorkerNodesMetaData
|
||||||
|
|||||||
@@ -18,12 +18,13 @@ from typing import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from pydantic import (
|
from pydantic import ( # noqa: F401
|
||||||
AliasGenerator,
|
AliasGenerator,
|
||||||
BaseModel as PydanticBaseModel,
|
BaseModel as PydanticBaseModel,
|
||||||
ConfigDict,
|
ConfigDict,
|
||||||
PrivateAttr,
|
PrivateAttr,
|
||||||
create_model,
|
create_model,
|
||||||
|
computed_field,
|
||||||
)
|
)
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
@@ -248,11 +249,17 @@ def get_alias(
|
|||||||
f' not found in name mapping dictionary.'
|
f' not found in name mapping dictionary.'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if field_name in model_cls.model_computed_fields:
|
||||||
|
return field_name
|
||||||
|
|
||||||
for base_cls in model_cls.__bases__:
|
for base_cls in model_cls.__bases__:
|
||||||
if not issubclass(base_cls, BaseModel):
|
if not issubclass(base_cls, BaseModel):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if field_name not in base_cls.model_fields.keys():
|
if (
|
||||||
|
field_name not in base_cls.model_fields.keys()
|
||||||
|
and field_name not in base_cls.model_computed_fields
|
||||||
|
):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
return get_alias(
|
return get_alias(
|
||||||
@@ -391,23 +398,22 @@ class BaseAPI(ABC):
|
|||||||
def __getattribute__(self, name: str) -> Any:
|
def __getattribute__(self, name: str) -> Any:
|
||||||
if name.startswith('_'):
|
if name.startswith('_'):
|
||||||
return super().__getattribute__(name)
|
return super().__getattribute__(name)
|
||||||
else:
|
if name in self.__annotations__:
|
||||||
if name in self.__annotations__:
|
annotation = self.__annotations__[name]
|
||||||
annotation = self.__annotations__[name]
|
if issubclass(annotation, BaseAPI):
|
||||||
if issubclass(annotation, BaseAPI):
|
api_cls = annotation
|
||||||
api_cls = annotation
|
return api_cls(
|
||||||
return api_cls(
|
config=self._config,
|
||||||
config=self._config,
|
parent_api_group_names=(
|
||||||
parent_api_group_names=(
|
self._parent_api_group_names + [name]
|
||||||
self._parent_api_group_names + [name]
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
else:
|
)
|
||||||
attr_value = super().__getattribute__(name)
|
attr_value = super().__getattribute__(name)
|
||||||
if not inspect.ismethod(attr_value):
|
|
||||||
raise ValueError
|
|
||||||
|
|
||||||
return self._make_api_function(attr_value)
|
if inspect.ismethod(attr_value):
|
||||||
|
return self._make_api_function(attr_value)
|
||||||
|
|
||||||
|
return attr_value
|
||||||
|
|
||||||
def _make_api_function(
|
def _make_api_function(
|
||||||
self,
|
self,
|
||||||
@@ -523,6 +529,7 @@ class BaseAPI(ABC):
|
|||||||
).prepare()
|
).prepare()
|
||||||
|
|
||||||
attempts = config.http503_attempts
|
attempts = config.http503_attempts
|
||||||
|
status_code = None
|
||||||
try:
|
try:
|
||||||
with requests.Session() as session:
|
with requests.Session() as session:
|
||||||
while True:
|
while True:
|
||||||
@@ -531,7 +538,8 @@ class BaseAPI(ABC):
|
|||||||
verify=config.verify_ssl,
|
verify=config.verify_ssl,
|
||||||
)
|
)
|
||||||
|
|
||||||
if http_response.status_code == 503:
|
status_code = http_response.status_code
|
||||||
|
if status_code == 503:
|
||||||
if attempts < 1:
|
if attempts < 1:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
@@ -547,6 +555,7 @@ class BaseAPI(ABC):
|
|||||||
orig_exception=e,
|
orig_exception=e,
|
||||||
func_name=func_name,
|
func_name=func_name,
|
||||||
func_kwargs=kwargs,
|
func_kwargs=kwargs,
|
||||||
|
status_code=status_code,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ from .api import API
|
|||||||
|
|
||||||
class Dynamix:
|
class Dynamix:
|
||||||
_config: config.ConfigWithAuth
|
_config: config.ConfigWithAuth
|
||||||
_COMPATIBLE_DX_BUILD = 1145
|
_COMPATIBLE_DX_MINOR_VERSION: str = '4.5'
|
||||||
|
_COMPATIBLE_DX_BUILD: int = 1269
|
||||||
|
_COMPATIBILITY_WITH_NEWER_DX_BUILDS: bool = True
|
||||||
|
_dx_version: str
|
||||||
_dx_build: int
|
_dx_build: int
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
@@ -35,35 +38,90 @@ class Dynamix:
|
|||||||
wrap_request_exceptions=wrap_request_exceptions,
|
wrap_request_exceptions=wrap_request_exceptions,
|
||||||
f_decorators=f_decorators,
|
f_decorators=f_decorators,
|
||||||
)
|
)
|
||||||
self._dx_build = self._get_dx_build()
|
|
||||||
|
self._dx_version, self._dx_build = self._get_dx_version_and_build()
|
||||||
|
|
||||||
self._check_dx_compatibility(ignore_api_compatibility)
|
self._check_dx_compatibility(ignore_api_compatibility)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def api(self):
|
def api(self):
|
||||||
return API(config=self._config)
|
return API(config=self._config)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def compatible_dx_minor_version(self) -> str:
|
||||||
|
return self._COMPATIBLE_DX_MINOR_VERSION
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def compatible_dx_build(self) -> int:
|
def compatible_dx_build(self) -> int:
|
||||||
return self._COMPATIBLE_DX_BUILD
|
return self._COMPATIBLE_DX_BUILD
|
||||||
|
|
||||||
|
@property
|
||||||
|
def compatibility_with_newer_dx_builds(self) -> bool:
|
||||||
|
return self._COMPATIBILITY_WITH_NEWER_DX_BUILDS
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dx_version(self) -> str:
|
||||||
|
return self._dx_version
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def dx_build(self) -> int:
|
def dx_build(self) -> int:
|
||||||
return self._dx_build
|
return self._dx_build
|
||||||
|
|
||||||
def _get_dx_build(self) -> int:
|
def _get_dx_version_and_build(self) -> tuple[str, int]:
|
||||||
result = self.api.system.info.version()
|
result = self.api.system.info.version()
|
||||||
dx_build = json.loads(result.replace("'", '"'))['build']
|
|
||||||
|
decoded_data = json.loads(result.replace("'", '"'))
|
||||||
|
|
||||||
|
dx_version = decoded_data['version']
|
||||||
|
if not isinstance(dx_version, str):
|
||||||
|
raise TypeError(f'DX version must be an str, got {type(dx_version)}') # noqa: E501
|
||||||
|
|
||||||
|
dx_build = decoded_data['build']
|
||||||
if not isinstance(dx_build, int):
|
if not isinstance(dx_build, int):
|
||||||
raise TypeError(f'DX build must be an int, got {type(dx_build)}')
|
raise TypeError(f'DX build must be an int, got {type(dx_build)}')
|
||||||
return dx_build
|
|
||||||
|
return dx_version, dx_build
|
||||||
|
|
||||||
def _check_dx_compatibility(self, ignore_api_compatibility: bool):
|
def _check_dx_compatibility(self, ignore_api_compatibility: bool):
|
||||||
if self.dx_build != self.compatible_dx_build:
|
if (
|
||||||
|
self.dx_version.rsplit('.', 1)[0]
|
||||||
|
!= self.compatible_dx_minor_version
|
||||||
|
):
|
||||||
|
message = (
|
||||||
|
f'Incompatible minor Dynamix version. '
|
||||||
|
f'Dynamix version: {self.dx_version}. '
|
||||||
|
f'Compatible minor version: '
|
||||||
|
f'{self.compatible_dx_minor_version}.'
|
||||||
|
)
|
||||||
|
|
||||||
|
if ignore_api_compatibility:
|
||||||
|
warn(message=message)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
raise IncompatibleAPIError(message=message)
|
||||||
|
|
||||||
|
build_is_compatible = (
|
||||||
|
(
|
||||||
|
self.compatibility_with_newer_dx_builds
|
||||||
|
and self.dx_build >= self.compatible_dx_build
|
||||||
|
)
|
||||||
|
or (
|
||||||
|
not self.compatibility_with_newer_dx_builds
|
||||||
|
and self.dx_build == self.compatible_dx_build
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if not build_is_compatible:
|
||||||
|
compatible_build_str = f'{self.compatible_dx_build}'
|
||||||
|
if self.compatibility_with_newer_dx_builds:
|
||||||
|
compatible_build_str = f'>={compatible_build_str}'
|
||||||
|
|
||||||
message = (
|
message = (
|
||||||
f'Incompatible Dynamix build. '
|
f'Incompatible Dynamix build. '
|
||||||
f'Dynamix build: {self.dx_build}. '
|
f'Dynamix build: {self.dx_build}. '
|
||||||
f'Compatible build: {self.compatible_dx_build}'
|
f'Compatible build: {compatible_build_str}.'
|
||||||
)
|
)
|
||||||
|
|
||||||
if ignore_api_compatibility:
|
if ignore_api_compatibility:
|
||||||
warn(message=message)
|
warn(message=message)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -17,13 +17,16 @@ class RequestException(Exception):
|
|||||||
orig_exception: requests.exceptions.RequestException
|
orig_exception: requests.exceptions.RequestException
|
||||||
func_name: str
|
func_name: str
|
||||||
func_kwargs: None | dict = None
|
func_kwargs: None | dict = None
|
||||||
|
status_code: None | int = None
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
orig_exception: requests.exceptions.RequestException,
|
orig_exception: requests.exceptions.RequestException,
|
||||||
func_name: str,
|
func_name: str,
|
||||||
func_kwargs: None | dict,
|
func_kwargs: None | dict,
|
||||||
|
status_code: None | int,
|
||||||
):
|
):
|
||||||
self.orig_exception = orig_exception
|
self.orig_exception = orig_exception
|
||||||
self.func_name = func_name
|
self.func_name = func_name
|
||||||
self.func_kwargs = func_kwargs
|
self.func_kwargs = func_kwargs
|
||||||
|
self.status_code = status_code
|
||||||
|
|||||||
@@ -68,3 +68,15 @@ def get_nested_value(
|
|||||||
f'The key {key} found, but its value is not a dictionary.'
|
f'The key {key} found, but its value is not a dictionary.'
|
||||||
)
|
)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def camel_to_snake(name: str) -> str:
|
||||||
|
result = []
|
||||||
|
for i, ch in enumerate(name):
|
||||||
|
if ch.isupper():
|
||||||
|
if i > 0 and not name[i - 1].isupper():
|
||||||
|
result.append('_')
|
||||||
|
result.append(ch.lower())
|
||||||
|
else:
|
||||||
|
result.append(ch)
|
||||||
|
return ''.join(result)
|
||||||
|
|||||||
@@ -1,224 +0,0 @@
|
|||||||
from collections.abc import Callable
|
|
||||||
from dataclasses import dataclass
|
|
||||||
import inspect
|
|
||||||
import os
|
|
||||||
from types import GenericAlias, UnionType
|
|
||||||
from typing import Any, get_args
|
|
||||||
from urllib3 import disable_warnings
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
import requests
|
|
||||||
import dynamix_sdk.types as sdk_types
|
|
||||||
from dynamix_sdk.base import (
|
|
||||||
gen_api_params_cls_name,
|
|
||||||
create_api_params_cls,
|
|
||||||
BaseAPIFunctionProtocol,
|
|
||||||
base_proto_to_http_method,
|
|
||||||
)
|
|
||||||
from dynamix_sdk.utils import JSON, HTTPMethod
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(kw_only=True)
|
|
||||||
class SDKFunction:
|
|
||||||
api_cls: type[sdk_types.BaseAPI]
|
|
||||||
call_attrs: tuple[str, ...]
|
|
||||||
url_path: str
|
|
||||||
proto_cls: type[BaseAPIFunctionProtocol]
|
|
||||||
proto_method: Callable
|
|
||||||
http_method: HTTPMethod
|
|
||||||
params_model_cls: type[sdk_types.BaseAPIParamsModel]
|
|
||||||
result_cls: type[sdk_types.BaseAPIResult]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(kw_only=True)
|
|
||||||
class APISubgroup:
|
|
||||||
name: str
|
|
||||||
cls: sdk_types.BaseAPI
|
|
||||||
functions: tuple[SDKFunction, ...]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(kw_only=True)
|
|
||||||
class APIGroup:
|
|
||||||
name: str
|
|
||||||
cls: sdk_types.BaseAPI
|
|
||||||
subgroups: tuple[APISubgroup, ...]
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def api_groups():
|
|
||||||
result_list: list[APIGroup] = []
|
|
||||||
for attr_name, attr_annot in sdk_types.API.__annotations__.items():
|
|
||||||
api_group_name = attr_name
|
|
||||||
api_group_cls = attr_annot
|
|
||||||
|
|
||||||
api_subgroups: list[APISubgroup] = []
|
|
||||||
for attr_name, attr_annot in api_group_cls.__annotations__.items():
|
|
||||||
api_subgroup_name = attr_name
|
|
||||||
api_subgroup_cls = attr_annot
|
|
||||||
|
|
||||||
sdk_functions: list[SDKFunction] = []
|
|
||||||
for attr_name in dir(api_subgroup_cls):
|
|
||||||
if attr_name.startswith('_'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
attr = getattr(api_subgroup_cls, attr_name)
|
|
||||||
if not callable(attr):
|
|
||||||
continue
|
|
||||||
method_name = attr_name
|
|
||||||
method = attr
|
|
||||||
|
|
||||||
for mixin_cls in api_subgroup_cls.__bases__[1:]:
|
|
||||||
if not hasattr(mixin_cls, method_name):
|
|
||||||
continue
|
|
||||||
|
|
||||||
assert issubclass(mixin_cls, BaseAPIFunctionProtocol), (
|
|
||||||
f'Class {mixin_cls.__qualname__}'
|
|
||||||
f' must be inherited from'
|
|
||||||
f' {BaseAPIFunctionProtocol.__qualname__}.'
|
|
||||||
)
|
|
||||||
valid_bases = base_proto_to_http_method.keys()
|
|
||||||
mixin_cls_base = mixin_cls.__base__
|
|
||||||
assert (
|
|
||||||
mixin_cls_base
|
|
||||||
and issubclass(mixin_cls_base, BaseAPIFunctionProtocol)
|
|
||||||
and mixin_cls_base in valid_bases
|
|
||||||
), (
|
|
||||||
f'Class {mixin_cls.__qualname__}'
|
|
||||||
f' must be inherited from one of these classes:'
|
|
||||||
f" {', '.join(p.__qualname__ for p in valid_bases)}."
|
|
||||||
)
|
|
||||||
proto_cls = mixin_cls
|
|
||||||
proto_cls_base = mixin_cls_base
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise LookupError(
|
|
||||||
f'{api_subgroup_cls.__qualname__}:'
|
|
||||||
f'mixin class for method "{method_name}" not found.'
|
|
||||||
)
|
|
||||||
|
|
||||||
attr_names = (
|
|
||||||
api_group_name,
|
|
||||||
api_subgroup_name,
|
|
||||||
attr_name,
|
|
||||||
)
|
|
||||||
api_func_url_path = ''
|
|
||||||
for sdk_func_path_part in attr_names:
|
|
||||||
url_path_part = api_subgroup_cls._path_mapping_dict.get(
|
|
||||||
sdk_func_path_part,
|
|
||||||
sdk_func_path_part
|
|
||||||
)
|
|
||||||
api_func_url_path = f'{api_func_url_path}/{url_path_part}'
|
|
||||||
|
|
||||||
api_params_cls_name = gen_api_params_cls_name(
|
|
||||||
api_path=api_func_url_path,
|
|
||||||
)
|
|
||||||
result_cls = inspect.signature(method).return_annotation
|
|
||||||
sdk_functions.append(
|
|
||||||
SDKFunction(
|
|
||||||
api_cls=api_subgroup_cls,
|
|
||||||
call_attrs=attr_names,
|
|
||||||
url_path=api_func_url_path,
|
|
||||||
proto_cls=proto_cls,
|
|
||||||
proto_method=method,
|
|
||||||
http_method=base_proto_to_http_method[proto_cls_base],
|
|
||||||
params_model_cls=create_api_params_cls(
|
|
||||||
cls_name=api_params_cls_name,
|
|
||||||
module_name=result_cls.__module__,
|
|
||||||
protocol_method=method,
|
|
||||||
),
|
|
||||||
result_cls=result_cls,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
api_subgroups.append(
|
|
||||||
APISubgroup(
|
|
||||||
name=api_subgroup_name,
|
|
||||||
cls=api_subgroup_cls,
|
|
||||||
functions=tuple(sdk_functions),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
result_list.append(
|
|
||||||
APIGroup(
|
|
||||||
name=api_group_name,
|
|
||||||
cls=api_group_cls,
|
|
||||||
subgroups=tuple(api_subgroups),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return tuple(result_list)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def sdk_dx_functions(api_groups):
|
|
||||||
result_list: list[SDKFunction] = []
|
|
||||||
for api_group in api_groups:
|
|
||||||
for api_subgroup in api_group.subgroups:
|
|
||||||
result_list += api_subgroup.functions
|
|
||||||
return tuple(result_list)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def dx_models(sdk_dx_functions: tuple[SDKFunction, ...]):
|
|
||||||
def get_models_from_annotation(annotation: Any):
|
|
||||||
if not annotation:
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
models = []
|
|
||||||
|
|
||||||
if annotation is Any:
|
|
||||||
return models
|
|
||||||
|
|
||||||
if isinstance(annotation, (UnionType, GenericAlias)):
|
|
||||||
for annotation in get_args(annotation):
|
|
||||||
models += get_models_from_annotation(annotation=annotation)
|
|
||||||
elif issubclass(annotation, sdk_types.BaseModel):
|
|
||||||
model_cls = annotation
|
|
||||||
models.append(model_cls)
|
|
||||||
|
|
||||||
return set(models)
|
|
||||||
|
|
||||||
def get_nested_models(model_cls: type[sdk_types.BaseModel]):
|
|
||||||
models = []
|
|
||||||
|
|
||||||
for field_info in model_cls.model_fields.values():
|
|
||||||
models += get_models_from_annotation(
|
|
||||||
annotation=field_info.annotation,
|
|
||||||
)
|
|
||||||
for model in models:
|
|
||||||
models += get_nested_models(model_cls=model)
|
|
||||||
|
|
||||||
return set(models)
|
|
||||||
|
|
||||||
dx_models = []
|
|
||||||
for sdk_func in sdk_dx_functions:
|
|
||||||
dx_models.append(sdk_func.params_model_cls)
|
|
||||||
dx_models += get_nested_models(model_cls=sdk_func.params_model_cls)
|
|
||||||
|
|
||||||
if issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultModel):
|
|
||||||
dx_models.append(sdk_func.result_cls)
|
|
||||||
dx_models += get_nested_models(model_cls=sdk_func.result_cls)
|
|
||||||
|
|
||||||
return set(dx_models)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def dx_url():
|
|
||||||
dx_url = os.getenv('DYNAMIX_URL')
|
|
||||||
assert dx_url
|
|
||||||
return dx_url
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def dx_api_definition(dx_url: str) -> JSON:
|
|
||||||
API_DEFINITION_API_PATH = '/restmachine/system/docgenerator/prepareCatalog'
|
|
||||||
|
|
||||||
disable_warnings()
|
|
||||||
|
|
||||||
api_definition_resp = requests.post(
|
|
||||||
url=f'{dx_url}{API_DEFINITION_API_PATH}',
|
|
||||||
verify=False,
|
|
||||||
)
|
|
||||||
api_definition_resp.raise_for_status()
|
|
||||||
|
|
||||||
return api_definition_resp.json()
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
import dynamix_sdk.types as sdk_types
|
|
||||||
from dynamix_sdk.utils import gen_cls_name_from_url_path
|
|
||||||
|
|
||||||
|
|
||||||
def test_api_class_naming(api_groups):
|
|
||||||
for api_group in api_groups:
|
|
||||||
correct_class_name = gen_cls_name_from_url_path(
|
|
||||||
url_path=api_group.name,
|
|
||||||
postfix='API',
|
|
||||||
)
|
|
||||||
assert api_group.cls.__qualname__ == correct_class_name, (
|
|
||||||
f'\nAPI group: {api_group.name}'
|
|
||||||
f'\nCorrect API class name: {correct_class_name}'
|
|
||||||
)
|
|
||||||
|
|
||||||
for api_subgroup in api_group.subgroups:
|
|
||||||
correct_class_name = gen_cls_name_from_url_path(
|
|
||||||
url_path=f'{api_group.name}/{api_subgroup.name}',
|
|
||||||
postfix='API',
|
|
||||||
)
|
|
||||||
assert api_subgroup.cls.__qualname__ == correct_class_name, (
|
|
||||||
f'\nAPI group: {api_group.name}'
|
|
||||||
f'\nAPI subgroup: {api_subgroup.name}'
|
|
||||||
f'\nCorrect API class name: {correct_class_name}'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_protocol_class_naming(sdk_dx_functions):
|
|
||||||
for sdk_func in sdk_dx_functions:
|
|
||||||
correct_class_name = gen_cls_name_from_url_path(
|
|
||||||
url_path=sdk_func.url_path,
|
|
||||||
postfix='Protocol',
|
|
||||||
)
|
|
||||||
|
|
||||||
assert sdk_func.proto_cls.__qualname__ == correct_class_name, (
|
|
||||||
f'\nFunction call attributes: {sdk_func.call_attrs}'
|
|
||||||
f'\nURL path: {sdk_func.url_path}'
|
|
||||||
f'\nCorrect Protocol class name: {correct_class_name}'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def get_subclasses(cls: type, result: list[type] | None = None):
|
|
||||||
if result:
|
|
||||||
_result = result
|
|
||||||
else:
|
|
||||||
_result: list[type] = []
|
|
||||||
|
|
||||||
for subclass in cls.__subclasses__():
|
|
||||||
if issubclass(subclass.__bases__[0], cls):
|
|
||||||
_result.append(subclass)
|
|
||||||
_result += get_subclasses(subclass)
|
|
||||||
|
|
||||||
return _result
|
|
||||||
|
|
||||||
|
|
||||||
def test_params_nested_model_class_naming():
|
|
||||||
base_cls = sdk_types.BaseAPIParamsNestedModel
|
|
||||||
for params_nm_cls in get_subclasses(base_cls):
|
|
||||||
suffix = 'APIParamsNM'
|
|
||||||
assert params_nm_cls.__qualname__.endswith(suffix), (
|
|
||||||
f'Class {params_nm_cls.__qualname__}:'
|
|
||||||
f' all subclasses of {base_cls.__qualname__}'
|
|
||||||
f' must have a name with suffix "{suffix}".'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_result_class_naming(sdk_dx_functions):
|
|
||||||
for sdk_func in sdk_dx_functions:
|
|
||||||
if issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultModel):
|
|
||||||
result_cls_postfix = 'ResultModel'
|
|
||||||
elif issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultStr):
|
|
||||||
result_cls_postfix = 'ResultStr'
|
|
||||||
elif issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultInt):
|
|
||||||
result_cls_postfix = 'ResultInt'
|
|
||||||
elif issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultBool):
|
|
||||||
result_cls_postfix = 'ResultBool'
|
|
||||||
else:
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
result_cls_name = gen_cls_name_from_url_path(
|
|
||||||
url_path=sdk_func.url_path,
|
|
||||||
postfix=result_cls_postfix,
|
|
||||||
)
|
|
||||||
assert sdk_func.result_cls.__qualname__ == result_cls_name, (
|
|
||||||
f'\nFunction call attributes: {sdk_func.call_attrs}'
|
|
||||||
f'\nURL path: {sdk_func.url_path}'
|
|
||||||
f'\nResult base class:'
|
|
||||||
f' {sdk_func.result_cls.__bases__[0].__qualname__}'
|
|
||||||
f'\nCorrect result class name: {result_cls_name}'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_result_nested_model_class_naming():
|
|
||||||
base_cls = sdk_types.BaseAPIResultNestedModel
|
|
||||||
for result_nm_cls in get_subclasses(base_cls):
|
|
||||||
suffix = 'APIResultNM'
|
|
||||||
assert result_nm_cls.__qualname__.endswith(suffix), (
|
|
||||||
f'Class {result_nm_cls.__qualname__}:'
|
|
||||||
f' all subclasses of {base_cls.__qualname__}'
|
|
||||||
f' must have a name with suffix "{suffix}".'
|
|
||||||
)
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
from dynamix_sdk import types as sdk_types
|
|
||||||
from dynamix_sdk.base import (
|
|
||||||
get_alias,
|
|
||||||
name_mapping_dict,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_missing_mappings_in_name_mapping_file(dx_models):
|
|
||||||
attrs_without_mapping = []
|
|
||||||
for model_cls in dx_models:
|
|
||||||
for field_name in model_cls.model_fields.keys():
|
|
||||||
try:
|
|
||||||
get_alias(
|
|
||||||
field_name=field_name,
|
|
||||||
model_cls=model_cls,
|
|
||||||
name_mapping_dict=name_mapping_dict
|
|
||||||
)
|
|
||||||
except KeyError:
|
|
||||||
attrs_without_mapping.append(
|
|
||||||
f'{model_cls.__qualname__}.{field_name}'
|
|
||||||
)
|
|
||||||
|
|
||||||
attrs_without_mapping.sort()
|
|
||||||
|
|
||||||
assert not attrs_without_mapping, (
|
|
||||||
f'{len(attrs_without_mapping)} attributes without mapping:'
|
|
||||||
f' {attrs_without_mapping}'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_unused_mappings_in_name_mapping_file(dx_models):
|
|
||||||
mapping_dict_keys = set(name_mapping_dict.keys())
|
|
||||||
|
|
||||||
def exclude_used_keys(
|
|
||||||
model_cls: type[sdk_types.BaseModel],
|
|
||||||
mapping_dict_keys: set[str],
|
|
||||||
):
|
|
||||||
for field_name in model_cls.__annotations__.keys():
|
|
||||||
used_key = None
|
|
||||||
|
|
||||||
individual_alias_key = f'{field_name}__{model_cls.__qualname__}'
|
|
||||||
if individual_alias_key in mapping_dict_keys:
|
|
||||||
used_key = individual_alias_key
|
|
||||||
elif field_name in mapping_dict_keys:
|
|
||||||
used_key = field_name
|
|
||||||
|
|
||||||
if used_key and used_key in mapping_dict_keys:
|
|
||||||
mapping_dict_keys.remove(used_key)
|
|
||||||
|
|
||||||
for base_cls in model_cls.__bases__:
|
|
||||||
if issubclass(base_cls, sdk_types.BaseModel):
|
|
||||||
exclude_used_keys(
|
|
||||||
model_cls=base_cls,
|
|
||||||
mapping_dict_keys=mapping_dict_keys,
|
|
||||||
)
|
|
||||||
|
|
||||||
for model_cls in dx_models:
|
|
||||||
exclude_used_keys(
|
|
||||||
model_cls=model_cls,
|
|
||||||
mapping_dict_keys=mapping_dict_keys,
|
|
||||||
)
|
|
||||||
|
|
||||||
unused_mapping_dict_keys = sorted(mapping_dict_keys)
|
|
||||||
|
|
||||||
assert not unused_mapping_dict_keys, (
|
|
||||||
f'{len(unused_mapping_dict_keys)} unused keys in mapping file:'
|
|
||||||
f' {unused_mapping_dict_keys}.'
|
|
||||||
)
|
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
from enum import Enum
|
|
||||||
import inspect
|
|
||||||
from types import GenericAlias, ModuleType, UnionType
|
|
||||||
from typing import Any, get_args
|
|
||||||
|
|
||||||
import dynamix_sdk.types as sdk_types
|
|
||||||
import dynamix_sdk.api._nested.params as nested_params
|
|
||||||
import dynamix_sdk.api._nested.result as nested_result
|
|
||||||
import dynamix_sdk.api._nested.enums as nested_enums
|
|
||||||
|
|
||||||
from tests.conftest import SDKFunction
|
|
||||||
|
|
||||||
|
|
||||||
def check_model_field_annotation(
|
|
||||||
annotation: Any,
|
|
||||||
field_descr: str,
|
|
||||||
valid_nested_model_cls: type[sdk_types.BaseModel],
|
|
||||||
):
|
|
||||||
if not annotation:
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
if annotation is Any:
|
|
||||||
return
|
|
||||||
|
|
||||||
assert annotation is not list, (
|
|
||||||
f'{field_descr}: missing list elements type annotation.'
|
|
||||||
)
|
|
||||||
|
|
||||||
if isinstance(annotation, (UnionType, GenericAlias)):
|
|
||||||
for annotation in get_args(annotation):
|
|
||||||
check_model_field_annotation(
|
|
||||||
annotation=annotation,
|
|
||||||
field_descr=field_descr,
|
|
||||||
valid_nested_model_cls=valid_nested_model_cls,
|
|
||||||
)
|
|
||||||
elif issubclass(annotation, sdk_types.BaseModel):
|
|
||||||
model_cls = annotation
|
|
||||||
assert issubclass(model_cls, valid_nested_model_cls), (
|
|
||||||
f'{field_descr}: nested model class must be'
|
|
||||||
f' a subclass of {valid_nested_model_cls.__qualname__}.'
|
|
||||||
)
|
|
||||||
|
|
||||||
check_model_field_annotations(
|
|
||||||
model_cls=model_cls,
|
|
||||||
valid_nested_model_cls=valid_nested_model_cls,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def check_model_field_annotations(
|
|
||||||
model_cls: type[sdk_types.BaseModel],
|
|
||||||
valid_nested_model_cls: type[sdk_types.BaseModel],
|
|
||||||
):
|
|
||||||
for field_name, field_info in model_cls.model_fields.items():
|
|
||||||
field_descr = f'{model_cls.__qualname__}.{field_name}'
|
|
||||||
|
|
||||||
check_model_field_annotation(
|
|
||||||
annotation=field_info.annotation,
|
|
||||||
field_descr=field_descr,
|
|
||||||
valid_nested_model_cls=valid_nested_model_cls,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_params_model_fields_type(sdk_dx_functions: tuple[SDKFunction, ...]):
|
|
||||||
for sdk_func in sdk_dx_functions:
|
|
||||||
params = inspect.signature(sdk_func.proto_method).parameters
|
|
||||||
for param_name, param in params.items():
|
|
||||||
if param_name == 'self':
|
|
||||||
continue
|
|
||||||
|
|
||||||
field_descr = (
|
|
||||||
f'{sdk_func.proto_cls.__qualname__}.'
|
|
||||||
f'{sdk_func.call_attrs[-1]}.'
|
|
||||||
f'{param_name}'
|
|
||||||
)
|
|
||||||
|
|
||||||
assert param.annotation is not inspect.Parameter.empty, (
|
|
||||||
f'{field_descr}: missing type annotation.'
|
|
||||||
)
|
|
||||||
|
|
||||||
assert param.kind == param.KEYWORD_ONLY, (
|
|
||||||
f'Parameter {field_descr} must be keyword-only.'
|
|
||||||
)
|
|
||||||
|
|
||||||
check_model_field_annotation(
|
|
||||||
annotation=param.annotation,
|
|
||||||
field_descr=field_descr,
|
|
||||||
valid_nested_model_cls=sdk_types.BaseAPIParamsNestedModel,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_function_return_type(sdk_dx_functions):
|
|
||||||
for sdk_func in sdk_dx_functions:
|
|
||||||
assert issubclass(sdk_func.result_cls, sdk_types.BaseAPIResult), (
|
|
||||||
f'Return type for method'
|
|
||||||
f' {sdk_func.proto_cls.__qualname__}.{sdk_func.call_attrs[-1]}'
|
|
||||||
f' must be a subclass of BaseAPIResult.'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_result_model_fields_type():
|
|
||||||
valid_nested_model_cls = sdk_types.BaseAPIResultNestedModel
|
|
||||||
|
|
||||||
for subcls in sdk_types.BaseAPIResultModel.__subclasses__():
|
|
||||||
check_model_field_annotations(
|
|
||||||
model_cls=subcls,
|
|
||||||
valid_nested_model_cls=valid_nested_model_cls,
|
|
||||||
)
|
|
||||||
for subcls in sdk_types.BaseAPIResultNestedModel.__subclasses__():
|
|
||||||
check_model_field_annotations(
|
|
||||||
model_cls=subcls,
|
|
||||||
valid_nested_model_cls=valid_nested_model_cls,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def check_class_inheritance_in_module(
|
|
||||||
module: ModuleType,
|
|
||||||
valid_base_cls: type,
|
|
||||||
):
|
|
||||||
for attr_name in dir(module):
|
|
||||||
if attr_name.startswith('_'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
attr = getattr(module, attr_name)
|
|
||||||
|
|
||||||
if not isinstance(attr, type):
|
|
||||||
continue
|
|
||||||
|
|
||||||
nested_result_cls = attr
|
|
||||||
|
|
||||||
assert issubclass(nested_result_cls, valid_base_cls), (
|
|
||||||
f'Class {nested_result_cls.__qualname__}:'
|
|
||||||
f' must be a subclass of class {valid_base_cls.__qualname__}.'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_class_inheritance_in_nested_result_module():
|
|
||||||
check_class_inheritance_in_module(
|
|
||||||
module=nested_result,
|
|
||||||
valid_base_cls=sdk_types.BaseAPIResultNestedModel,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_class_inheritance_in_nested_params_module():
|
|
||||||
check_class_inheritance_in_module(
|
|
||||||
module=nested_params,
|
|
||||||
valid_base_cls=sdk_types.BaseAPIParamsNestedModel,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_class_inheritance_in_nested_enums_module():
|
|
||||||
check_class_inheritance_in_module(
|
|
||||||
module=nested_enums,
|
|
||||||
valid_base_cls=Enum,
|
|
||||||
)
|
|
||||||
@@ -1,442 +0,0 @@
|
|||||||
from enum import Enum
|
|
||||||
import inspect
|
|
||||||
from types import GenericAlias, NoneType, UnionType
|
|
||||||
from typing import Any, get_args
|
|
||||||
from warnings import warn
|
|
||||||
|
|
||||||
from dynamix_sdk import types as sdk_types
|
|
||||||
from dynamix_sdk.base import (
|
|
||||||
get_alias,
|
|
||||||
name_mapping_dict,
|
|
||||||
)
|
|
||||||
|
|
||||||
from dynamix_sdk.utils import JSON, get_nested_value
|
|
||||||
from tests.conftest import SDKFunction
|
|
||||||
|
|
||||||
|
|
||||||
expected_inconsistencies: list[str] = [
|
|
||||||
'''cloudapi.sep.list_available_sep_and_pools: result type must be child of BaseAPIParamsNestedModel.''', # noqa E501
|
|
||||||
'''cloudapi.k8s.create: parameter "lb_sysctl_params", target_annotation = dict[str, str], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa E501
|
|
||||||
'cloudbroker.storage_policy.get: result type must be child of BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'cloudbroker.storage_policy.add_pool: result type must be child of BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'''cloudapi.lb.create: parameter "sysctl_params", target_annotation = dict[str, str], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa E501
|
|
||||||
'cloudbroker.storage_policy.delete_pool: result type must be child of BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'cloudbroker.storage_policy.update: result type must be child of BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'cloudapi.zone.list: result type must be child of BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'cloudapi.storage_policy.get: result type must be child of BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'''cloudapi.compute.guest_agent_execute: parameter "args", target_annotation = dict[str, typing.Any], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa: E501
|
|
||||||
'''cloudapi.image.create: API has parameter "asyncMode" but this SDK function doesn't have corresponding parameter.''', # noqa: E501
|
|
||||||
'''cloudapi.flipgroup.create: API has parameter "clientType" but this SDK function doesn't have corresponding parameter.''', # noqa: E501
|
|
||||||
'''cloudapi.k8s.create: API has parameter "oidcCertificate" but this SDK function doesn't have corresponding parameter.''', # noqa: E501
|
|
||||||
'cloudapi.disks.limit_io: API has parameter "iops" but this SDK function doesn\'t have corresponding parameter.', # noqa: E501
|
|
||||||
'cloudapi.bservice.group_stop: default value of parameter "force" must be None.', # noqa: E501
|
|
||||||
'cloudapi.bservice.group_stop: annotation of parameter "force" must be Union.', # noqa: E501
|
|
||||||
'cloudapi.compute.net_attach: default value of parameter "mtu" must be 1500.', # noqa: E501
|
|
||||||
'cloudapi.disks.create: default value of parameter "size_gb" must be 10.',
|
|
||||||
'cloudapi.kvmx86.create: annotation of parameter "ci_user_data" must contain BaseAPIParamsNestedModel.', # noqa: E501
|
|
||||||
'''cloudapi.lb.update_sysctl_params: parameter "sysctl_params", target_annotation = dict[str, str], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa: E501
|
|
||||||
'''cloudbroker.compute.start_migration_out: parameter "disk_mapping", target_annotation = dict[str, str], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa E501
|
|
||||||
'''cloudbroker.compute.start_migration_out: parameter "cdrom_mapping", target_annotation = dict[str, str], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa E501
|
|
||||||
'''cloudbroker.compute.start_migration_out: parameter "net_mapping", target_annotation = dict[str, dynamix_sdk.api._nested.params.NetMapConfigAPIParamsNM], expected_annot = <class 'dynamix_sdk.base.BaseAPIParamsNestedModel'>''', # noqa E501
|
|
||||||
'cloudbroker.user.create: default value of parameter "password" must be strongpassword.', # noqa: E501
|
|
||||||
]
|
|
||||||
|
|
||||||
type_mappings = {
|
|
||||||
'integer': int,
|
|
||||||
'string': str,
|
|
||||||
'boolean': bool,
|
|
||||||
'object': sdk_types.BaseAPIParamsNestedModel,
|
|
||||||
'number': float,
|
|
||||||
'dict': sdk_types.BaseAPIResultModel,
|
|
||||||
'array': list,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def check_param(
|
|
||||||
*,
|
|
||||||
sdk_func_name: str,
|
|
||||||
sdk_func_params: dict[str, inspect.Parameter],
|
|
||||||
param_name: str,
|
|
||||||
param_def: dict,
|
|
||||||
required: bool,
|
|
||||||
) -> list[str]:
|
|
||||||
inconsistencies: list[str] = []
|
|
||||||
api_def_param_enum = param_def.get('enum')
|
|
||||||
if (
|
|
||||||
api_def_param_enum is not None
|
|
||||||
and not isinstance(api_def_param_enum, list)
|
|
||||||
):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
api_def_param_default = param_def.get('default')
|
|
||||||
api_def_param_type = param_def.get('type')
|
|
||||||
if (
|
|
||||||
api_def_param_type is not None
|
|
||||||
and not isinstance(api_def_param_type, str)
|
|
||||||
):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
api_def_param_items = param_def.get('items')
|
|
||||||
if (
|
|
||||||
api_def_param_items is not None
|
|
||||||
and not isinstance(api_def_param_items, dict)
|
|
||||||
):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
necessary_dx_param = required or not (
|
|
||||||
api_def_param_enum
|
|
||||||
and len(api_def_param_enum) == 1
|
|
||||||
and api_def_param_default is not None
|
|
||||||
)
|
|
||||||
|
|
||||||
if not isinstance(param_name, str):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
param_exists_in_sdk = param_name in sdk_func_params.keys()
|
|
||||||
|
|
||||||
if not param_exists_in_sdk:
|
|
||||||
if necessary_dx_param:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' API has parameter "{param_name}"'
|
|
||||||
f" but this SDK function doesn't have"
|
|
||||||
f' corresponding parameter.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
sdk_func_param = sdk_func_params[param_name]
|
|
||||||
sdk_param_name = sdk_func_param.name
|
|
||||||
|
|
||||||
if not necessary_dx_param:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' parameter "{sdk_param_name} is unnecessary in SDK.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if sdk_func_param.annotation is Any:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must not be Any.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if api_def_param_default and api_def_param_default != -1:
|
|
||||||
if sdk_func_param.default != api_def_param_default:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' default value of parameter "{sdk_param_name}"'
|
|
||||||
f' must be {api_def_param_default}.'
|
|
||||||
)
|
|
||||||
|
|
||||||
target_annotation = sdk_func_param.annotation
|
|
||||||
if not required and (
|
|
||||||
api_def_param_default is None
|
|
||||||
or (api_def_param_default == 0 and api_def_param_default is not False)
|
|
||||||
or api_def_param_default == ''
|
|
||||||
or api_def_param_default == -1
|
|
||||||
or api_def_param_default == []
|
|
||||||
):
|
|
||||||
if sdk_func_param.default is not None:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' default value of parameter "{sdk_param_name}"'
|
|
||||||
f' must be None.'
|
|
||||||
)
|
|
||||||
|
|
||||||
if not isinstance(sdk_func_param.annotation, UnionType):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must be Union.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
annot_union_args = get_args(sdk_func_param.annotation)
|
|
||||||
if NoneType not in annot_union_args:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must contain None.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if not len(annot_union_args) == 2:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must contain two types.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if annot_union_args[0] is NoneType:
|
|
||||||
target_annotation = annot_union_args[1]
|
|
||||||
else:
|
|
||||||
target_annotation = annot_union_args[0]
|
|
||||||
|
|
||||||
if api_def_param_type == 'array':
|
|
||||||
if (
|
|
||||||
not isinstance(target_annotation, GenericAlias)
|
|
||||||
or target_annotation.__origin__ is not list
|
|
||||||
):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must contain list[...]'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if api_def_param_items is not None:
|
|
||||||
api_def_param_items_type = api_def_param_items.get('type')
|
|
||||||
if api_def_param_items_type is None:
|
|
||||||
return inconsistencies
|
|
||||||
if not isinstance(api_def_param_items_type, str):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
target_annotation = get_args(target_annotation)[0]
|
|
||||||
expected_annot = type_mappings.get(api_def_param_items_type)
|
|
||||||
if expected_annot is None:
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
elif api_def_param_type is not None:
|
|
||||||
expected_annot = type_mappings.get(api_def_param_type)
|
|
||||||
if expected_annot is None:
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if (
|
|
||||||
not inspect.isclass(target_annotation)
|
|
||||||
or isinstance(target_annotation, GenericAlias)
|
|
||||||
):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' parameter "{sdk_param_name}",'
|
|
||||||
f' {target_annotation = },' # noqa: E202, E251
|
|
||||||
f' {expected_annot = }' # noqa: E202, E251
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
if api_def_param_enum:
|
|
||||||
if not issubclass(target_annotation, Enum):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must contain enum.'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
enum_from_annot = target_annotation
|
|
||||||
enum_values = [e.value for e in enum_from_annot]
|
|
||||||
if sorted(api_def_param_enum) != sorted(enum_values):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' parameter "{sdk_param_name}":'
|
|
||||||
f' enum {enum_from_annot.__qualname__}'
|
|
||||||
f' must contain these values:'
|
|
||||||
f' {api_def_param_enum}.'
|
|
||||||
)
|
|
||||||
elif not issubclass(target_annotation, expected_annot):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' annotation of parameter "{sdk_param_name}"'
|
|
||||||
f' must contain {expected_annot.__qualname__}.'
|
|
||||||
)
|
|
||||||
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
|
|
||||||
def find_unused_sdk_params(
|
|
||||||
*,
|
|
||||||
sdk_func_name: str,
|
|
||||||
sdk_func_params: dict[str, inspect.Parameter],
|
|
||||||
dx_param_names: set[str],
|
|
||||||
) -> list[str]:
|
|
||||||
inconsistencies: list[str] = []
|
|
||||||
unused_sdk_param_names = [
|
|
||||||
sdk_param.name
|
|
||||||
for alias, sdk_param in sdk_func_params.items()
|
|
||||||
if alias not in dx_param_names
|
|
||||||
]
|
|
||||||
|
|
||||||
if unused_sdk_param_names:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' unused parameters:'
|
|
||||||
f' {", ".join(sorted(unused_sdk_param_names))}'
|
|
||||||
)
|
|
||||||
return inconsistencies
|
|
||||||
|
|
||||||
|
|
||||||
def test_with_api_definition(
|
|
||||||
dx_api_definition: JSON,
|
|
||||||
sdk_dx_functions: tuple[SDKFunction, ...],
|
|
||||||
):
|
|
||||||
inconsistencies: list[str] = []
|
|
||||||
for sdk_func in sdk_dx_functions:
|
|
||||||
sdk_func_name = ".".join(sdk_func.call_attrs)
|
|
||||||
func_full_api_path = f'/restmachine{sdk_func.url_path}'
|
|
||||||
|
|
||||||
if not isinstance(dx_api_definition, dict):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
dx_api_definition_paths = dx_api_definition['paths']
|
|
||||||
|
|
||||||
if not isinstance(dx_api_definition_paths, dict):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
if func_full_api_path not in dx_api_definition_paths:
|
|
||||||
inconsistencies.append(
|
|
||||||
f"{sdk_func_name}:"
|
|
||||||
f' url path {sdk_func.url_path} not found in'
|
|
||||||
f' DX API definition.'
|
|
||||||
)
|
|
||||||
continue
|
|
||||||
|
|
||||||
func_api_definition = dx_api_definition_paths[func_full_api_path]
|
|
||||||
|
|
||||||
if not isinstance(func_api_definition, dict):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
http_method_lower = sdk_func.http_method.lower()
|
|
||||||
if http_method_lower not in func_api_definition:
|
|
||||||
api_def_http_methods = [
|
|
||||||
m.upper() for m in func_api_definition.keys()
|
|
||||||
]
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' HTTP method {sdk_func.http_method} not found.'
|
|
||||||
f' DX API definition for {sdk_func.url_path} has'
|
|
||||||
f' only these HTTP methods:'
|
|
||||||
f" {', '.join(api_def_http_methods)}."
|
|
||||||
)
|
|
||||||
continue
|
|
||||||
func_api_def_method = func_api_definition[http_method_lower]
|
|
||||||
|
|
||||||
if not isinstance(func_api_def_method, dict):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
if api_def_result_type := get_nested_value(
|
|
||||||
d=func_api_def_method,
|
|
||||||
keys=('responses', '200', 'schema', 'type'),
|
|
||||||
):
|
|
||||||
expected_result_type = type_mappings[api_def_result_type]
|
|
||||||
if expected_result_type is bool:
|
|
||||||
expected_result_type = sdk_types.BaseAPIResultBool
|
|
||||||
if not issubclass(sdk_func.result_cls, expected_result_type):
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}:'
|
|
||||||
f' result type must be child of'
|
|
||||||
f' {expected_result_type.__qualname__}.'
|
|
||||||
)
|
|
||||||
|
|
||||||
sdk_func_params: dict[str, inspect.Parameter] = {}
|
|
||||||
for p in inspect.signature(sdk_func.proto_method).parameters.values():
|
|
||||||
if p.name == 'self':
|
|
||||||
continue
|
|
||||||
alias = get_alias(
|
|
||||||
field_name=p.name,
|
|
||||||
model_cls=sdk_func.params_model_cls,
|
|
||||||
name_mapping_dict=name_mapping_dict,
|
|
||||||
)
|
|
||||||
sdk_func_params[alias] = p
|
|
||||||
|
|
||||||
api_definition_params = func_api_def_method.get('parameters') or []
|
|
||||||
body_schema = None
|
|
||||||
|
|
||||||
if not isinstance(api_definition_params, list):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
for p in api_definition_params:
|
|
||||||
if (
|
|
||||||
isinstance(p, dict)
|
|
||||||
and p.get('name') == 'body' and 'schema' in p
|
|
||||||
):
|
|
||||||
body_schema = p['schema']
|
|
||||||
break
|
|
||||||
|
|
||||||
dx_param_names = set()
|
|
||||||
param_defs = dict()
|
|
||||||
required_params = set()
|
|
||||||
|
|
||||||
if isinstance(body_schema, dict) and 'properties' in body_schema:
|
|
||||||
properties = body_schema['properties']
|
|
||||||
|
|
||||||
if not isinstance(properties, dict):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
required = body_schema.get('required', [])
|
|
||||||
if not isinstance(required, list):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
dx_param_names.update(properties.keys())
|
|
||||||
param_defs.update(properties)
|
|
||||||
required_params.update(required)
|
|
||||||
|
|
||||||
else:
|
|
||||||
if not api_definition_params:
|
|
||||||
if sdk_func_params:
|
|
||||||
inconsistencies.append(
|
|
||||||
f'{sdk_func_name}: this function '
|
|
||||||
f'must not have parameters.'
|
|
||||||
)
|
|
||||||
continue
|
|
||||||
|
|
||||||
for p in api_definition_params:
|
|
||||||
if not isinstance(p, dict):
|
|
||||||
raise TypeError
|
|
||||||
param_name = p['name']
|
|
||||||
if not isinstance(param_name, str):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
dx_param_names.add(param_name)
|
|
||||||
param_defs[param_name] = p
|
|
||||||
if p.get('required', False):
|
|
||||||
required_params.add(param_name)
|
|
||||||
|
|
||||||
if not dx_param_names:
|
|
||||||
if sdk_func_params:
|
|
||||||
inconsistencies.append(
|
|
||||||
f"{sdk_func_name}: this function must not have parameters."
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
inconsistencies.extend(
|
|
||||||
find_unused_sdk_params(
|
|
||||||
sdk_func_name=sdk_func_name,
|
|
||||||
sdk_func_params=sdk_func_params,
|
|
||||||
dx_param_names=dx_param_names,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
for param_name, param_def in param_defs.items():
|
|
||||||
if not isinstance(param_def, dict):
|
|
||||||
raise TypeError
|
|
||||||
|
|
||||||
inconsistencies.extend(
|
|
||||||
check_param(
|
|
||||||
sdk_func_name=sdk_func_name,
|
|
||||||
sdk_func_params=sdk_func_params,
|
|
||||||
param_name=param_name,
|
|
||||||
param_def=param_def,
|
|
||||||
required=param_name in required_params,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
for expected_inconsistency in expected_inconsistencies:
|
|
||||||
if expected_inconsistency in inconsistencies:
|
|
||||||
inconsistencies.remove(expected_inconsistency)
|
|
||||||
else:
|
|
||||||
inconsistencies.append(
|
|
||||||
'This expected inconsistency not found:'
|
|
||||||
f' {expected_inconsistency}'
|
|
||||||
)
|
|
||||||
|
|
||||||
if expected_inconsistencies:
|
|
||||||
warn(
|
|
||||||
'\nExpected inconsistencies:\n'
|
|
||||||
+ '\n'.join(expected_inconsistencies)
|
|
||||||
)
|
|
||||||
|
|
||||||
assert not inconsistencies, (
|
|
||||||
f'found {len(inconsistencies)} inconsistencies:\n'
|
|
||||||
+ '\n'.join(inconsistencies)
|
|
||||||
)
|
|
||||||
Reference in New Issue
Block a user