diff --git a/CHANGELOG.md b/CHANGELOG.md index ce36029..473a410 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,376 @@ -# Список изменений в версии 1.2.2 +# Список изменений в версии 1.3.0 ## Добавлено -### Функциональный интерфейс | Идентификатор
задачи | Описание | | --- | --- | +| BPYS-89 | Добавлены функции `cloudapi.vfpool.get`, `cloudapi.vfpool.list`. | +| BPYS-314 | Функция `cloudapi.compute.get`: тип атрибута `CloudapiComputeGetResultModel.stateless_sep_id` изменен с `int` на `int \| None`. | +| BPYS-315 | Функция `cloudapi.compute.get`: тип атрибута `CloudapiComputeGetResultModel.stateless_sep_type` изменен с `str` на `str \| None`. | +| BPYS-174 | Добавлена функция `cloudapi.compute.get_console_url`. | +| BPYS-168 | Добавлена функция `cloudapi.lb.config_reset`. | +| BPYS-166 | Добавлена функция `cloudapi.lb.update`. | +| BPYS-164 | Добавлены функции `cloudapi.lb.start`, `cloudapi.lb.stop`. | +| BPYS-333 | Функция `cloudapi.compute.list`: тип атрибута `CloudapiComputeListResultModel.data.stateless_sep_id` изменен с `int` на `int \| None`. | +| BPYS-334 | Функция `cloudapi.compute.list`: тип атрибута `CloudapiComputeListResultModel.data.stateless_sep_type` изменен с `str` на `str \| None`. | +| BPYS-324 | Функция `cloudapi.k8s.list`: у атрибута `CloudapiK8sListResultModel.data` изменен тип с `K8sListAPIResultNM` на `K8sAPIResultNM`. | +| BPYS-324 | Функция `cloudapi.k8s.list_deleted`: у атрибута `CloudapiK8sListDeletedResultModel.data` изменен тип с `K8sListDeletedAPIResultNM` на `K8sAPIResultNM`. | +| BPYS-188 | Добавлены функции `cloudapi.k8s.delete_master_from_group`, `cloudapi.k8s.delete_worker_from_group`. | +| BPYS-359 | Функция `cloudapi.account.get`: добавлен атрибут `CloudapiAccountGetResultModel.quotas.ext_ip_count` в связи с переименованием из `public_ip_count`. | +| BPYS-359 | Функция `cloudapi.account.update`: добавлен параметр `ext_ip_count_quota` в связи с переименованием из `public_ip_count_quota`. | +| BPYS-359 | Функция `cloudapi.rg.create`: добавлен параметр `ext_ip_count_quota` в связи с переименованием из `public_ip_count_quota`. | +| BPYS-359 | Функция `cloudapi.rg.get`: добавлен атрибут `CloudapiRgGetResultModel.quotas.ext_ip_count` в связи с переименованием из `public_ip_count`. | +| BPYS-359 | Функция `cloudapi.rg.list`: добавлен атрибут `CloudapiRgListResultModel.data.quotas.ext_ip_count` в связи с переименованием из `public_ip_count`. | +| BPYS-359 | Функция `cloudapi.rg.update`: добавлен параметр `ext_ip_count_quota` в связи с переименованием из `public_ip_count_quota`. | +| BPYS-359 | Функция `cloudbroker.account.create`: добавлен параметр `ext_ip_count_quota` в связи с переименованием из `public_ip_count_quota`. | +| BPYS-150 | Добавлены функции `cloudapi.vins.nat_rule_add`, `cloudapi.vins.nat_rule_del`, `cloudapi.vins.nat_rule_list`. | +| BPYS-176 | Добавлена функция `cloudapi.compute.power_cycle`. | +| BPYS-374 | Функция `cloudapi.image.create`: добавлен параметр `storage_policy_id`. | +| BPYS-379 | Функция `cloudapi.kvmx86.create`: добавлен параметр `storage_policy_id`. | +| BPYS-380 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `storage_policy_id`. | +| BPYS-370 | Функция `cloudapi.compute.disk_add`: добавлен параметр `storage_policy_id`. | +| BPYS-372 | Функция `cloudapi.disks.create`: добавлен параметр `storage_policy_id`. | +| BPYS-376 | Функция `cloudapi.k8s.create`: добавлен параметр `storage_policy_id`. | +| BPYS-378 | Функция `cloudapi.k8s.workers_group_add`: добавлен параметр `storage_policy_id`. | +| BPYS-368 | Функция `cloudapi.bservice.group_add`: добавлен параметр `storage_policy_id`. | +| BPYS-177 | Добавлена функция `cloudapi.compute.reset`. | +| BPYS-192 | Добавлена функция `cloudapi.k8s.enable`, `cloudapi.k8s.disable`. | +| BPYS-193 | Добавлена функция `cloudapi.k8s.update`. | +| BPYS-194 | Добавлена функция `cloudapi.k8s.start`, `cloudapi.k8s.stop`. | +| BPYS-170 | Добавлена функция `cloudapi.lb.restart`. | +| BPYS-169 | Добавлена функция `cloudapi.lb.restore`. | +| BPYS-175 | Добавлена функция `cloudapi.compute.change_link_state`. | +| BPYS-139 | Добавлена функция `cloudapi.compute.abort_shared_snapshot_merge`. | +| BPYS-173 | Добавлена функция `cloudapi.lb.update_syscl_params`. | +| BPYS-389 | Функция `cloudapi.account.get`: добавлен атрибут `CloudapiAccountGetResultModel.storage_policy_ids`. | +| BPYS-414 | Функция `cloudapi.account.get`: добавлен атрибут `CloudapiAccountGetResultModel.quotas.storage_policies`. | +| BPYS-414 | Функция `cloudapi.rg.get`: добавлен атрибут `CloudapiRgGetResultModel.quotas.storage_policies`. | +| BPYS-414 | Функция `cloudapi.rg.list`: добавлен атрибут `CloudapiRgListResultModel.data.quotas.storage_policies`. | +| BPYS-385 | Функция `cloudapi.compute.redeploy`: добавлен параметр `storage_policy_id`. | +| BPYS-386 | Функция `cloudapi.disks.get`: добавлен атрибут `CloudapiDisksGetResultModel.storage_policy_id`. | +| BPYS-387 | Функция `cloudapi.disks.list`: добавлен атрибут `CloudapiDisksListResultModel.data.storage_policy_id`. | +| BPYS-387 | Функция `cloudapi.disks.list_deleted`: добавлен атрибут `CloudapiDisksListDeletedResultModel.data.storage_policy_id`. | +| BPYS-391 | Функция `cloudapi.rg.get`: добавлен атрибут `CloudapiRgGetResultModel.storage_policy_ids`. | +| BPYS-181 | Добавлена функция `cloudapi.vins.dns_apply`. | +| BPYS-388 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.disks.storage_policy_id`. | +| BPYS-417 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.interfaces.security_group_ids`. | +| BPYS-418 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.interfaces.security_group_mode`. | +| BPYS-418 | Функция `cloudapi.compute.net_attach`: добавлен атрибут `CloudapiComputeNetAttachResultModel.interfaces.security_group_ids`. | +| BPYS-418 | Функция `cloudapi.compute.net_attach`: добавлен атрибут `CloudapiComputeNetAttachResultModel.interfaces.security_group_mode`. | +| BPYS-155 | Добавлены функции `cloudbroker.user.block`, `cloudbroker.user.unblock`. | +| BPYS-308 | Функция `cloudapi.image.create_virtual`: добавлен параметр `account_id`. | +| BPYS-422 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.interfaces.security_group_ids`. | +| BPYS-423 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.interfaces.security_group_mode`. | +| BPYS-156 | Функция `cloudapi.compute.user_list`: у атрибута `CloudapiComputeUserListResultModel.data.account.explicit` изменен тип с `bool \| str` на `bool`. | +| BPYS-156 | Функция `cloudapi.compute.user_list`: у атрибута `CloudapiComputeUserListResultModel.data.vm.explicit` изменен тип с `bool \| str` на `bool`. | +| BPYS-156 | Функция `cloudapi.compute.user_list`: у атрибута `CloudapiComputeUserListResultModel.data.rg.explicit` изменен тип с `bool \| str` на `bool`. | +| BPYS-156 | Функция `cloudapi.compute.get`: у атрибута `CloudapiComputeGetResultModel.acl.account.explicit` изменен тип с `bool \| str` на `bool`. | +| BPYS-156 | Функция `cloudapi.compute.get`: у атрибута `CloudapiComputeGetResultModel.acl.vm.explicit` изменен тип с `bool \| str` на `bool`. | +| BPYS-156 | Функция `cloudapi.compute.get`: у атрибута `CloudapiComputeGetResultModel.acl.rg.explicit` изменен тип с `bool \| str` на `bool`. | +| BPYS-100 | Добавлены функции `cloudapi.zone.get`, `cloudapi.zone.list`. | +| BPYS-141 | Добавлены функции `cloudapi.compute.guest_agent_disable`, `cloudapi.compute.guest_agent_enable`, `cloudapi.compute.guest_agent_execute`, `cloudapi.compute.guest_agent_feature_update`. | +| BPYS-436 | Функция `cloudapi.disks.list`: добавлен параметр `storage_policy_id`. | +| BPYS-427 | Функция `cloudapi.kvmx86.create`: добавлен параметр `interfaces.security_group_mode`. | +| BPYS-428 | Функция `cloudapi.kvmx86.create`: добавлен параметр `interfaces.security_group_ids`. | +| BPYS-428 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.security_group_mode`. | +| BPYS-428 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.security_group_ids`. | +| BPYS-433 | Функция `cloudapi.compute.net_attach`: добавлен параметр `security_group_mode`. | +| BPYS-434 | Функция `cloudapi.compute.net_attach`: добавлен параметр `security_group_ids`. | +| BPYS-447 | Добавлена функция `cloudapi.image.change_storage_policy`. | +| BPYS-459 | Функция `cloudapi.rg.update`: добавлен параметр `storage_policies`. | +| BPYS-101 | Добавлены функции `cloudapi.bservice.migrate_to_zone`, `cloudapi.compute.migrate_to_zone`, `cloudapi.k8s.migrate_to_zone`, `cloudapi.lb.migrate_to_zone`, `cloudapi.vins.migrate_to_zone`. | +| BPYS-446 | Добавлена функция `cloudapi.security_group.update`. | +| BPYS-251 | Добавлена функция `cloudapi.compute.change_mtu`. | +| BPYS-439 | Добавлена функция `cloudapi.compute.change_security_groups`. | +| BPYS-217 | Добавлены функции `cloudapi.trunk.get`, `cloudapi.trunk.list`. | +| BPYS-462 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `data_disks.storage_policy_id`. | +| BPYS-462 | Функция `cloudapi.kvmx86.create`: добавлен параметр `data_disks.storage_policy_id`. | +| BPYS-464 | Функция `cloudapi.user.get_audit`: в параметре `sort_by` изменено значение по умолчанию с `-Time` на `-timestamp`. | +| BPYS-470 | Функция `cloudapi.bservice.list`: добавлен параметр `zone_id`. | +| BPYS-496 | Функция `cloudapi.account.list`: добавлен атрибут `CloudapiAccountListResultModel.data.zone_ids`. | +| BPYS-496 | Функция `cloudapi.account.list_deleted`: добавлен атрибут `CloudapiAccountListDeletedResultModel.data.zone_ids`. | +| BPYS-468 | Функция `cloudapi.account.list`: добавлен параметр `zone_id`. | +| BPYS-492 | Функция `cloudapi.kvmx86.create`: добавлен параметр `interfaces.enabled`. | +| BPYS-492 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `interfaces.enabled`. | +| BPYS-480 | Функция `cloudapi.vins.list`: добавлен параметр `zone_id`. | +| BPYS-397 | Добавлена функция `cloudapi.storage_policy.get`. | +| BPYS-472 | Функция `cloudapi.compute.list`: добавлен параметр `zone_id`. | +| BPYS-474 | Функция `cloudapi.extnet.list`: добавлен параметр `zone_id`. | +| BPYS-476 | Функция `cloudapi.k8s.list`: добавлен параметр `zone_id`. | +| BPYS-478 | Функция `cloudapi.lb.list`: добавлен параметр `zone_id`. | +| BPYS-493 | Функция `cloudapi.compute.net_attach`: добавлен параметр `enabled`. | +| BPYS-180 | Добавлены функции `cloudapi.vins.ext_net_list`, `cloudapi.vins.ext_net_connect`, `cloudapi.vins.ext_net_disconnect`. | +| BPYS-445 | Добавлена функция `cloudapi.security_group.list`. | +| BPYS-442 | Добавлена функция `cloudapi.security_group.delete`. | +| BPYS-440 | Добавлена функция `cloudapi.security_group.create`. | +| BPYS-441 | Добавлена функция `cloudapi.security_group.create_rule`. | +| BPYS-398 | Добавлена функция `cloudapi.storage_policy.list`. | +| BPYS-443 | Добавлена функция `cloudapi.security_group.delete_rule`. | +| BPYS-400 | Добавлена функция `cloudbroker.storage_policy.create`. | +| BPYS-403 | Добавлена функция `cloudbroker.account.add_storage_policy`. | +| BPYS-404 | Добавлена функция `cloudbroker.account.del_storage_policy`. | +| BPYS-405 | Добавлена функция `cloudbroker.rg.add_storage_policy`. | +| BPYS-448 | Добавлена функция `cloudbroker.image.change_storage_policy`. | +| BPYS-396 | Функция `cloudbroker.account.create`: добавлен параметр `storage_policy_quotas`. | +| BPYS-444 | Добавлена функция `cloudapi.security_group.get`. | +| BPYS-449 | Добавлена функция `cloudbroker.compute.change_security_groups`. | +| BPYS-450 | Добавлена функция `cloudbroker.vins.update`. | +| BPYS-505 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.disks.to_clean`. | +| BPYS-515 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.os_version`. | +| BPYS-518 | Функция `cloudapi.compute.get`: у атрибута `CloudapiComputeGetResultModel.image_id` изменен тип с `int` на `None \| int`. | +| BPYS-504 | Функция `cloudapi.disks.list`: добавлен атрибут `CloudapiDisksListResultModel.data.to_clean`. | +| BPYS-504 | Функция `cloudapi.disks.list_deleted`: добавлен атрибут `CloudapiDisksListDeletedResultModel.data.to_clean`. | +| BPYS-503 | Функция `cloudapi.disks.get`: добавлен атрибут `CloudapiDisksGetResultModel.to_clean`. | +| BPYS-406 | Добавлена функция `cloudbroker.rg.del_storage_policy`. | +| BPYS-438 | Функция `cloudapi.rg.create`: добавлен параметр `storage_policy_quotas`. | +| BPYS-514 | Функция `cloudapi.kvmx86.create`: добавлен параметр `os_version`. | +| BPYS-521 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.os_version`. | +| BPYS-513 | Функция `cloudapi.kvmx86.create_blank`: добавлен параметр `os_version`. | +| BPYS-512 | Функция `cloudapi.compute.update`: добавлен параметр `os_version`. | +| BPYS-409 | Добавлена функция `cloudbroker.storage_policy.disable`. | +| BPYS-402 | Добавлена функция `cloudbroker.storage_policy.update`. | +| BPYS-407 | Добавлена функция `cloudbroker.storage_policy.add_pool`. | +| BPYS-410 | Добавлена функция `cloudbroker.storage_policy.enable`. | +| BPYS-532 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.security_group_ids`. | +| BPYS-533 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.security_group_mode`. | +| BPYS-534 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.security_group_mode`. | +| BPYS-531 | Функция `cloudapi.image.get`: добавлен атрибут `CloudapiImageGetResultModel.storage_policy_id`. | +| BPYS-529 | Функция `cloudapi.extnet.get`: добавлен атрибут `CloudapiExtnetGetResultModel.security_group_mode`. | +| BPYS-528 | Функция `cloudapi.dpdknet.get`: добавлен атрибут `CloudapiDpdknetGetResultModel.security_group_mode`. | +| BPYS-528 | Функция `cloudapi.dpdknet.list`: добавлен атрибут `CloudapiDpdknetListResultModel.data.security_group_mode`. | +| BPYS-524 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.correlation_id`. | +| BPYS-411 | Добавлена функция `cloudbroker.storage_policy.get`. | +| BPYS-451 | Добавлена функция `cloudbroker.security_group.create`. | +| BPYS-412 | Добавлена функция `cloudbroker.storage_policy.list`. | +| BPYS-452 | Добавлена функция `cloudbroker.security_group.create_rule`. | +| BPYS-542 | Функция `cloudapi.disks.list_unattached`: добавлен параметр `storage_policy_id`. | +| BPYS-408 | Добавлена функция `cloudbroker.storage_policy.delete_pool`. | +| BPYS-453 | Добавлена функция `cloudbroker.security_group.delete`. | +| BPYS-455 | Добавлена функция `cloudbroker.security_group.get`. | +| BPYS-456 | Добавлена функция `cloudbroker.security_group.list`. | +| BPYS-457 | Добавлена функция `cloudbroker.security_group.update`. | +| BPYS-564 | Функция `cloudapi.image.list`: добавлен параметр `storage_policy_id`. | +| BPYS-562 | Функция `cloudapi.compute.redeploy`: добавлен параметр `os_version`. | +| BPYS-570 | Функция `cloudapi.storage_policy.get`: добавлен атрибут `CloudapiStoragePolicyGetResultModel.sep_pools.sep_name`. | +| BPYS-570 | Функция `cloudapi.storage_policy.list`: добавлен атрибут `CloudapiStoragePolicyListResultModel.data.sep_pools.sep_name`. | +| BPYS-570 | Функция `cloudbroker.storage_policy.add_pool`: добавлен атрибут `CloudbrokerStoragePolicyAddPoolResultModel.sep_pools.sep_name`. | +| BPYS-570 | Функция `cloudbroker.storage_policy.delete_pool`: добавлен атрибут `CloudbrokerStoragePolicyDeletePoolResultModel.sep_pools.sep_name`. | +| BPYS-570 | Функция `cloudbroker.storage_policy.get`: добавлен атрибут `CloudbrokerStoragePolicyGetResultModel.sep_pools.sep_name`. | +| BPYS-570 | Функция `cloudbroker.storage_policy.list`: добавлен атрибут `CloudbrokerStoragePolicyListResultModel.data.sep_pools.sep_name`. | +| BPYS-570 | Функция `cloudbroker.storage_policy.update`: добавлен атрибут `CloudbrokerStoragePolicyUpdateResultModel.sep_pools.sep_name`. | +| BPYS-550 | Добавлена функция `cloudbroker.node.get_ssh_identity`. | +| BPYS-566 | Добавлена функция `cloudbroker.compute.start_migration_in`. | +| BPYS-581 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.boot_loader_metaiso`. | +| BPYS-582 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.disks.device_name`. | +| BPYS-580 | Функция `cloudapi.image.list`: добавлен атрибут `CloudapiImageListResultModel.data.storage_policy_id`. | +| BPYS-567 | Добавлена функция `cloudbroker.compute.stop_migration_in`. | +| BPYS-556 | Функция `cloudapi.compute.disk_add`: добавлен параметр `pci_slot_num_hex`. | +| BPYS-557 | Функция `cloudapi.compute.disk_add`: добавлен параметр `bus_num_hex`. | +| BPYS-559 | Функция `cloudapi.compute.disk_attach`: добавлен параметр `pci_slot_num_hex`. | +| BPYS-560 | Функция `cloudapi.compute.disk_attach`: добавлен параметр `bus_num_hex`. | +| BPYS-565 | Добавлена функция `cloudbroker.compute.migrate_storage_list`. | +| BPYS-553 | Функция `cloudapi.k8s.create`: тип параметра `lb_sysctl_params` изменен с `list[dict]` на `list[dict[str, str]]`. | +| BPYS-552 | Функция `cloudapi.lb.update_sysctl_params`: тип параметра `sysctl_params` изменен с `list[dict]` на `list[dict[str, str]]`. | +| BPYS-497 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.interfaces.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.interfaces.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.compute.net_attach`: добавлен атрибут `CloudapiComputeNetAttachResultModel.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.flipgroup.create`: добавлен атрибут `CloudapiFlipgroupCreateResultModel.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.flipgroup.list`: добавлен атрибут `CloudapiFlipgroupListResultModel.data.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.extnet.get`: добавлен атрибут `CloudapiExtnetGetResultModel.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfs.dhcp.config.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-497 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfs.gw.config.ext_net_prefix` в связи с переименованием из `ext_net_mask`. | +| BPYS-497 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfs.nat.config.net_prefix` в связи с переименованием из `net_mask`. | +| BPYS-587 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.account_id`. | +| BPYS-588 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.vm_id`. | +| BPYS-589 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.rg_id`. | +| BPYS-590 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.vins_id`. | +| BPYS-591 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.bservice_id`. | +| BPYS-592 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.k8s_id`. | +| BPYS-593 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.flip_group_id`. | +| BPYS-594 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.lb_id`. | +| BPYS-595 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.sep_id`. | +| BPYS-596 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.node_ids`. | +| BPYS-597 | Функция `cloudapi.audit.get`: добавлен атрибут `CloudapiAuditGetResultModel.apitask`. | +| BPYS-575 | Добавлена функция `cloudapi.compute.create_template`. | +| BPYS-195 | Добавлены функции `cloudapi.k8s.get_node_annotations`, `cloudapi.k8s.get_node_labels`, `cloudapi.k8s.get_node_taints`. | +| BPYS-189 | Добавлена функция `cloudapi.k8s.update_worker_nodes_meta_data`. | +| BPYS-579 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.disks.bus_num` в связи с переименованием из `bus_number`. | +| BPYS-579 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.interfaces.bus_num` в связи с переименованием из `bus_number`. | +| BPYS-579 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.interfaces.bus_num` в связи с переименованием из `bus_number`. | +| BPYS-579 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.bus_num` в связи с переименованием из `bus_number`. | +| BPYS-578 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.disks.pci_slot_num` в связи с переименованием из `pci_slot`. | +| BPYS-578 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.interfaces.pci_slot_num` в связи с переименованием из `pci_slot`. | +| BPYS-578 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.interfaces.pci_slot_num` в связи с переименованием из `pci_slot`. | +| BPYS-578 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.pci_slot_num` в связи с переименованием из `pci_slot`. | +| BPYS-586 | Добавлена функция `cloudapi.audit.list`. | +| BPYS-601 | Добавлена функция `cloudbroker.audit.list`. | +| BPYS-607 | Функция `cloudapi.compute.clone`: добавлен параметр `storage_policy_id`. | +| BPYS-617 | Функция `cloudapi.compute.clone`: изменен тип возвращаемого функцией значения с `int` на `str`. | +| BPYS-621 | Функция `cloudbroker.storage_policy.update`: добавлен параметр `sep_pools`. | +| BPYS-603 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.vgpu_ids` в связи с переименованием из `vgpus`. | +| BPYS-127 | Функция `cloudapi.compute.get`: у атрибута `CloudapiComputeGetResultModel.vgpus` изменен тип с `list[dict[str, _typing.Any]]` на `list[VGPUAPIResultNM]`. | +| BPYS-604 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.migration_job_id` в связи с переименованием из `migration_job`. | +| BPYS-604 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.migration_job_id` в связи с переименованием из `migration_job`. | +| BPYS-609 | Функция `cloudapi.compute.clone`: добавлен параметр `sep_pool_name`. | +| BPYS-610 | Функция `cloudapi.compute.clone`: добавлен параметр `sep_id`. | +| BPYS-549 | Добавлена функция `cloudbroker.node.add_ssh_identity`. | +| BPYS-401 | Добавлена функция `cloudbroker.storage_policy.delete`. | +| BPYS-454 | Добавлена функция `cloudbroker.security_group.delete_rule`. | +| BPYS-154 | Добавлена функция `cloudbroker.user.create`. | +| BPYS-576 | Добавлена функция `cloudbroker.compute.start_migration_out`. | +| BPYS-577 | Добавлена функция `cloudbroker.compute.stop_migration_out`. | +| BPYS-613 | Добавлена функция `cloudbroker.compute.clone`. | +| BPYS-612 | Добавлена функция `cloudbroker.compute.clone_abort`. | +| BPYS-618 | Добавлена функция `cloudapi.compute.clone_abort`. | +| BPYS-614 | Добавлена функция `cloudbroker.disks.migrate`. | +| BPYS-615 | Добавлена функция `cloudbroker.disks.migrate_abort`. | +| BPYS-623 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.boot_image_id`. | +| BPYS-625 | Функция `cloudapi.compute.list`: добавлен атрибут `CloudapiComputeListResultModel.data.boot_image_id`. | +| BPYS-634 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.live_migration_job_id`. | +| BPYS-643 | Функции `cloudapi.bservice.get`, `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.k8s.get`: в перечисляемый тип `VMTechStatus` добавлено значение `MIGRATING_IN`. | +| BPYS-644 | Функции `cloudapi.bservice.get`, `cloudapi.compute.get`, `cloudapi.compute.list`, `cloudapi.k8s.get`: в перечисляемый тип `VMTechStatus` добавлено значение `MIGRATING_OUT`. | +| BPYS-215 | Добавлены функции `cloudbroker.user.get`, `cloudbroker.user.list`. | +| BPYS-399 | Добавлена функция `cloudapi.disks.change_disk_storage_policy`. | +| BPYS-616 | Добавлена функция `cloudbroker.disks.migrate_status`. | +| BPYS-660 | Функция `cloudapi.image.get`: добавлен атрибут `CloudapiImageGetResultModel.to_clean`. | +| BPYS-641 | Добавлена функция `cloudapi.rg.del_storage_policy`. | +| BPYS-640 | Добавлена функция `cloudapi.rg.add_storage_policy`. | +| BPYS-642 | Функция `cloudapi.compute.get`: добавлен атрибут `CloudapiComputeGetResultModel.os_users.ssh_public_key` в связи с переименованием из `pub_key`. | +| BPYS-642 | Функция `cloudbroker.compute.stop_migration_in`: добавлен параметр `os_users.ssh_public_key` в связи с переименованием из `pub_key`. | +| BPYS-629 | Добавлена функция `cloudbroker.node.update_description`. | +| BPYS-630 | Добавлена функция `cloudbroker.vnfdev.migrate_abort`. | +| BPYS-668 | Функция `cloudapi.bservice.create`: добавлен параметр `ssh_public_key` в связи с переименованием из `ssh_key`. | +| BPYS-668 | Функция `cloudapi.bservice.get`: добавлен атрибут `CloudapiBserviceGetResultModel.ssh_public_key` в связи с переименованием из `ssh_key`. | +| BPYS-668 | Функция `cloudapi.vins.get`: добавлен атрибут `CloudapiVinsGetResultModel.vnfdev.config.mgmt.ssh_public_key` в связи с переименованием из `ssh_key`. | +| BPYS-667 | Функция `cloudapi.bservice.create`: добавлен параметр `ssh_user_name` в связи с переименованием из `ssh_user`. | +| BPYS-667 | Функция `cloudapi.bservice.get`: добавлен атрибут `CloudapiBserviceGetResultModel.ssh_user_name` в связи с переименованием из `ssh_user`. | +| BPYS-667 | Функция `cloudapi.bservice.list`: добавлен атрибут `CloudapiBserviceListResultModel.data.ssh_user_name` в связи с переименованием из `ssh_user`. | +| BPYS-667 | Функция `cloudapi.bservice.list_delete`: добавлен атрибут `CloudapiBserviceListDeleteResultModel.data.ssh_user_name` в связи с переименованием из `ssh_user`. | +| BPYS-676 | Добавлена функция `system.info.version`. | +| BPYS-681 | Добавлена функция `cloudapi.bservice.snapshot_rollback`. | +| BPYS-680 | Добавлена функция `cloudapi.bservice.snapshot_delete`. | +| BPYS-679 | Добавлена функция `cloudapi.bservice.snapshot_create`. | +| BPYS-684 | Добавлена функция `cloudapi.compute.attach_pci_device`. | +| BPYS-682 | Добавлена функция `cloudapi.bservice.snapshot_list`. | +| BPYS-683 | Добавлена функция `cloudapi.compute.attach_gpu`. | +| BPYS-687 | Добавлена функция `cloudapi.compute.detach_gpu`. | +| BPYS-686 | Добавлена функция `cloudapi.compute.boot_disk_set`. | +| BPYS-677 | Добавлена функция `cloudapi.account.get_resource_consumption`. | +| BPYS-688 | Добавлена функция `cloudapi.compute.detach_pci_device`. | +| BPYS-689 | Добавлена функция `cloudapi.compute.disable`. | +| BPYS-690 | Добавлена функция `cloudapi.compute.disk_migrate`. | +| BPYS-694 | Добавлена функция `cloudapi.compute.disk_switch_to_replication`. | +| BPYS-695 | Добавлена функция `cloudapi.compute.enable`. | +| BPYS-697 | Добавлена функция `cloudapi.compute.move_to_rg`. | +| BPYS-698 | Добавлена функция `cloudapi.compute.restore`. | +| BPYS-699 | Добавлена функция `cloudapi.compute.change_mac`. | +| BPYS-658 | Добавлена проверка совместимости с API и соответствующий параметр `ignore_api_compatibility` в конструктор класса `Dynamix`. | +| BPYS-708 | Добавлена функция `cloudapi.k8s.worker_add`. | +| BPYS-692 | Добавлен тип исключения `dynamix_sdk.exceptions.RequestException`. В конструкторы классов `Dynamix`, `DECS3OAuth`, `BVSAuth` добавлен параметр `wrap_request_exceptions`, позволяющий заменить исключения библиотеки requests на новый тип исключения, который кроме оригинального исключения содержит название функции SDK и переданные в неё параметры. | +| BPYS-693 | В конструкторы классов `Dynamix`, `DECS3OAuth`, `BVSAuth` добавлен параметр `f_decorators`, позволяющий задать список декораторов, которые будут применяться к каждой вызываемой функции SDK. | +| BPYS-709 | Добавлена функция `cloudapi.pcidevice.list`. | +| BPYS-711 | Добавлена функция `cloudapi.rg.get_resource_consumption`. | +| BPYS-713 | Добавлена функция `cloudapi.sep.list_available_sep_and_pools`. | +| BPYS-722 | Добавлена функция `cloudapi.user.set_data`. | +| BPYS-716 | Добавлена функция `cloudapi.vgpu.list`. | +| BPYS-724 | Добавлена функция `cloudbroker.account.get`. | +| BPYS-726 | Добавлена функция `cloudbroker.account.add_user`. | +| BPYS-696 | Добавлена функция `cloudapi.compute.list_deleted`. | +| BPYS-712 | Добавлена функция `cloudapi.rg.list_deleted`. | +| BPYS-714 | Добавлена функция `cloudapi.user.brief`. | +| BPYS-725 | Добавлена функция `cloudbroker.account.list`. | +| BPYS-727 | Добавлена функция `cloudbroker.account.add_zone`. | +| BPYS-734 | Добавлена функция `cloudbroker.account.delete_accounts`. | +| BPYS-735 | Добавлена функция `cloudbroker.account.delete_user`. | +| BPYS-736 | Добавлена функция `cloudbroker.account.disable`. | +| BPYS-737 | Добавлена функция `cloudbroker.account.disable_accounts`. | +| BPYS-738 | Добавлена функция `cloudbroker.account.enable`. | +| BPYS-728 | Добавлена функция `cloudbroker.account.delete`. | +| BPYS-715 | Добавлена функция `cloudapi.user.get_resource_consumption`. | +| BPYS-739 | Добавлена функция `cloudbroker.account.enable_accounts`. | +| BPYS-741 | Добавлена функция `cloudbroker.account.get_resource_consumption`. | +| BPYS-745 | Добавлена функция `cloudbroker.account.list_deleted`. | +| BPYS-746 | Добавлена функция `cloudbroker.account.restore`. | +| BPYS-747 | Добавлена функция `cloudbroker.account.remove_zone`. | ## Удалено -### Функциональный интерфейс | Идентификатор
задачи | Описание | | --- | --- | +| BPYS-322 | Функция `cloudapi.k8ci.list`: удален параметр `worker_node_driver`. | +| BPYS-323 | Функция `cloudapi.k8ci.list`: удален параметр `master_node_driver`. | +| BPYS-331 | Функция `cloudapi.kvmx86.create_blank`: удален параметр `driver`. | +| BPYS-329 | Функция `cloudapi.kvmx86.create`: удален параметр `driver`. | +| BPYS-326 | Функция `cloudapi.k8ci.list_deleted`: удален параметр `worker_node_driver`. | +| BPYS-327 | Функция `cloudapi.k8ci.list_deleted`: удален параметр `master_node_driver`. | +| BPYS-359 | Функция `cloudapi.account.get`: удален атрибут `CloudapiAccountGetResultModel.quotas.public_ip_count` в связи с переименованием в `ext_ip_count`. | +| BPYS-359 | Функция `cloudapi.account.update`: удален параметр `public_ip_count_quota` в связи с переименованием в `ext_ip_count_quota`. | +| BPYS-359 | Функция `cloudapi.rg.create`: удален параметр `public_ip_count_quota` в связи с переименованием в `ext_ip_count_quota`. | +| BPYS-359 | Функция `cloudapi.rg.get`: удален атрибут `CloudapiRgGetResultModel.quotas.public_ip_count` в связи с переименованием в `ext_ip_count`. | +| BPYS-359 | Функция `cloudapi.rg.list`: удален атрибут `CloudapiRgListResultModel.data.quotas.public_ip_count` в связи с переименованием в `ext_ip_count`. | +| BPYS-359 | Функция `cloudapi.rg.update`: удален параметр `public_ip_count_quota` в связи с переименованием в `ext_ip_count_quota`. | +| BPYS-359 | Функция `cloudbroker.account.create`: удален параметр `public_ip_count_quota` в связи с переименованием в `ext_ip_count_quota`. | +| BPYS-318 | Функция `cloudapi.image.create`: удален параметр `drivers`. | +| BPYS-372 | Функция `cloudapi.disks.create`: удален параметр `iops`. | +| BPYS-516 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.virtual_image_id`. | +| BPYS-517 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.virtual_image_name`. | +| BPYS-519 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.image_id`. | +| BPYS-520 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.virtual_image_id`. | +| BPYS-569 | Функция `cloudapi.storage_policy.get`: удален атрибут `CloudapiStoragePolicyGetResultModel.sep_pools.name`. | +| BPYS-569 | Функция `cloudapi.storage_policy.list`: удален атрибут `CloudapiStoragePolicyListResultModel.data.sep_pools.name`. | +| BPYS-569 | Функция `cloudbroker.storage_policy.add_pool`: удален атрибут `CloudbrokerStoragePolicyAddPoolResultModel.sep_pools.name`. | +| BPYS-569 | Функция `cloudbroker.storage_policy.delete_pool`: удален атрибут `CloudbrokerStoragePolicyDeletePoolResultModel.sep_pools.name`. | +| BPYS-569 | Функция `cloudbroker.storage_policy.get`: удален атрибут `CloudbrokerStoragePolicyGetResultModel.sep_pools.name`. | +| BPYS-569 | Функция `cloudbroker.storage_policy.list`: удален атрибут `CloudbrokerStoragePolicyListResultModel.data.sep_pools.name`. | +| BPYS-569 | Функция `cloudbroker.storage_policy.update`: удален атрибут `CloudbrokerStoragePolicyUpdateResultModel.sep_pools.name`. | +| BPYS-497 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.interfaces.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.interfaces.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.compute.net_attach`: удален атрибут `CloudapiComputeNetAttachResultModel.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.extnet.get`: удален атрибут `CloudapiExtnetGetResultModel.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.flipgroup.create`: удален атрибут `CloudapiFlipgroupCreateResultModel.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.flipgroup.list`: удален атрибут `CloudapiFlipgroupListResultModel.data.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfs.dhcp.config.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-497 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfs.gw.config.ext_net_mask` в связи с переименованием в `ext_net_prefix`. | +| BPYS-497 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfs.nat.config.net_mask` в связи с переименованием в `net_prefix`. | +| BPYS-579 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.disks.bus_number` в связи с переименованием в `bus_num`. | +| BPYS-579 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.interfaces.bus_number` в связи с переименованием в `bus_num`. | +| BPYS-579 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.interfaces.bus_number` в связи с переименованием в `bus_num`. | +| BPYS-579 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.bus_number` в связи с переименованием в `bus_num`. | +| BPYS-578 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.disks.pci_slot` в связи с переименованием в `pci_slot_num`. | +| BPYS-578 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.interfaces.pci_slot` в связи с переименованием в `pci_slot_num`. | +| BPYS-578 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.interfaces.pci_slot` в связи с переименованием в `pci_slot_num`. | +| BPYS-578 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfdev.interfaces.pci_slot` в связи с переименованием в `pci_slot_num`. | +| BPYS-603 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.vgpus` в связи с переименованием в `vgpu_ids`. | +| BPYS-604 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.migration_job` в связи с переименованием в `migration_job_id`. | +| BPYS-604 | Функция `cloudapi.compute.list`: удален атрибут `CloudapiComputeListResultModel.data.migration_job` в связи с переименованием в `migration_job_id`. | +| BPYS-651 | Удалена функция `cloudapi.user.get_audit`. | +| BPYS-642 | Функция `cloudapi.compute.get`: удален атрибут `CloudapiComputeGetResultModel.os_users.pub_key` в связи с переименованием в `ssh_public_key`. | +| BPYS-642 | Функция `cloudbroker.compute.stop_migration_in`: удален параметр `os_users.pub_key` в связи с переименованием в `ssh_public_key`. | +| BPYS-668 | Функция `cloudapi.bservice.create`: удален параметр `ssh_key` в связи с переименованием в `ssh_public_key`. | +| BPYS-668 | Функция `cloudapi.bservice.get`: удален атрибут `CloudapiBserviceGetResultModel.ssh_key` в связи с переименованием в `ssh_public_key`. | +| BPYS-668 | Функция `cloudapi.vins.get`: удален атрибут `CloudapiVinsGetResultModel.vnfdev.config.mgmt.ssh_key` в связи с переименованием в `ssh_public_key`. | +| BPYS-667 | Функция `cloudapi.bservice.create`: удален параметр `ssh_user` в связи с переименованием в `ssh_user_name`. | +| BPYS-667 | Функция `cloudapi.bservice.get`: удален атрибут `CloudapiBserviceGetResultModel.ssh_user` в связи с переименованием в `ssh_user_name`. | +| BPYS-667 | Функция `cloudapi.bservice.list`: удален атрибут `CloudapiBserviceListResultModel.data.ssh_user` в связи с переименованием в `ssh_user_name`. | +| BPYS-667 | Функция `cloudapi.bservice.list_delete`: удален атрибут `CloudapiBserviceListDeleteResultModel.data.ssh_user` в связи с переименованием в `ssh_user_name`. | +| BPYS-723 | Удалена функция `cloudapi.compute.disk_resize`: в связи с тем, что аналогичный функционал доступен через функцию `cloudapi.disks.resize2`. | ## Исправлено -### Функциональный интерфейс | Идентификатор
задачи | Описание | | --- | --- | +| BPYS-358 | Функция `cloudapi.k8s.get`: в некоторых случаях вызов функции завершался ошибкой валидации полей `k8sGroups.masters.detailedInfo.0.externalip` и `k8sGroups.workers.0.detailedInfo.0.externalip`. | +| BPYS-357 | Функция `cloudapi.k8s.list`: был неверно аннотирован тип элементов списка `data.acl`. | +| BPYS-357 | Функция `cloudapi.k8s.list_deleted`: был неверно аннотирован тип элементов списка `data.acl`. | +| BPYS-551 | Функция `cloudapi.lb.create`: при передаче корректного значения в параметр `sysctl_params` выполнение функции завершалось ошибкой валидации типа параметра. | +| BPYS-602 | Функция `cloudapi.compute.list`: выполнение функции завершалось ошибкой валидации при наличии элементов в списке `CloudapiComputeListResultModel.data.vgpus`. | +| BPYS-649 | Функция `cloudapi.account.update`: отсутствовало значение по умолчанию у параметра `send_access_emails`. | +| BPYS-654 | Функция `cloudapi.image.get`: отсутствовало значение `unknown` в перечисляемом типе `ImageType` у атрибута `CloudapiImageGetResultModel.type`, что приводило к ошибке валидации. | +| BPYS-654 | Функция `cloudapi.image.list`: отсутствовало значение `unknown` в перечисляемом типе `ImageType` у параметра `type` и атрибута `CloudapiImageListResultModel.data.type`, что приводило к ошибке валидации. | +| BPYS-654 | Функция `cloudapi.image.get`: было лишнее значение `other` в перечисляемом типе `ImageType` у атрибута `CloudapiImageGetResultModel.type`, что приводило к ошибке валидации. | +| BPYS-654 | Функция `cloudapi.image.list`: было лишнее значение `other` в перечисляемом типе `ImageType` у параметра `type` и атрибута `CloudapiImageListResultModel.data.type`, что приводило к ошибке валидации. | | BPYS-670 | Функция `cloudapi.bservice.group_get`: вызов функции завершался ошибкой валидации поля `computes.0.chipset`. | diff --git a/README.md b/README.md index 0564c64..0531fb2 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ - [Ошибки и исключения (exceptions)](#ошибки-и-исключения-exceptions) - [Ошибки валидации данных](#ошибки-валидации-данных) - [Ошибки HTTP](#ошибки-http) + - [Ошибка несовместимости c API](#ошибка-несовместимости-с-api) - [Доступный функционал](#доступный-функционал) - [Способы авторизации](#способы-авторизации) - [Функции API](#функции-api) @@ -34,6 +35,7 @@ | Версия платформы | Версия SDK | | --- | --- | +| 4.4.0 | 1.3.x | | 4.4.0 build 963 | 1.2.x | | 4.3.0 | 1.1.x | | 4.2.0 | 1.0.x | @@ -119,6 +121,24 @@ dx = Dynamix( +
Задание декораторов для всех вызываемых функций + +```python +from dynamix_sdk import Dynamix + + +Dynamix( + ..., + f_decorators=[decorator_1, decorator_2], +) +``` + +Декораторы будут применяться к вызываемым функциям SDK в обратном порядке, то есть сначала будет применяться декоратор decorator_2, а потом decorator_1. + +**Важно:** декораторы должны соответствовать аннотации параметра, то есть оставлять без изменений параметры и тип возвращаемого значения функции, иначе применение декораторов приведёт к некорректной работе SDK. + +
+
Настройка повторных попыток при 503 По умолчанию SDK при получении кода ответа 503 производит 10 повторных попыток с интервалом 5 секунд. Данное поведение можно скорректировать: @@ -186,6 +206,24 @@ BVSAuth(
+
Игнорирование проверки совместимости с API + +**Важно:** игнорирование проверки совместимости с API может вызвать непредвиденные ошибки в работе SDK, поэтому использование данного функционала допустимо только принимая на себя всю ответственность за возможные последствия. + +При игнорирование выводится только сообщение с предупреждением о несовместимости. + +```python +from dynamix_sdk import Dynamix + + +Dynamix( + ..., + ignore_api_compatibility=True, +) +``` + +
+ ### Функциональный интерфейс Функциональный интерфейс предоставляет функции, соответствующие функциям API платформы. @@ -477,6 +515,24 @@ except RequestException as e: Подробную информацию об исключениях библиотеки **Requests** можно получить в [соответствующем разделе официальной документации Requests](https://requests.readthedocs.io/en/latest/user/quickstart/#errors-and-exceptions). +
Использование исключения SDK + +Для возможности получать дополнительную информацию о функциях SDK при ошибках HTTP-запросов, в SDK есть возможность оборачивать все исключения requests.exceptions.RequestException в исключение dynamix_sdk.exceptions.RequestException: + +```python +class RequestException(Exception): + orig_exception: requests.exceptions.RequestException + func_name: str + func_kwargs: None | dict = None +``` + +Чтобы включить использование исключения dynamix_sdk.exceptions.RequestException, необходимо передать в конструкторы классов Dynamix, DECS3OAuth, BVSAuth параметр wrap_request_exceptions=True +
+ +#### Ошибка несовместимости с API +SDK производит проверку совместимости с API. +При несовместимости будет вызвано исключение `exceptions.IncompatibleAPIError`. + ## Доступный функционал ### Способы авторизации @@ -499,6 +555,7 @@ except RequestException as e: - /cloudapi/account/disable - /cloudapi/account/enable - /cloudapi/account/get +- /cloudapi/account/getResourceConsumption - /cloudapi/account/list - /cloudapi/account/listDeleted - /cloudapi/account/restore @@ -510,6 +567,7 @@ except RequestException as e:
audit - /cloudapi/audit/get +- /cloudapi/audit/list
@@ -534,7 +592,12 @@ except RequestException as e: - /cloudapi/bservice/groupUpdateVins - /cloudapi/bservice/list - /cloudapi/bservice/listDeleted +- /cloudapi/bservice/migrateToZone - /cloudapi/bservice/restore +- /cloudapi/bservice/snapshotCreate +- /cloudapi/bservice/snapshotDelete +- /cloudapi/bservice/snapshotList +- /cloudapi/bservice/snapshotRollback - /cloudapi/bservice/start - /cloudapi/bservice/stop @@ -542,6 +605,7 @@ except RequestException as e:
compute +- /cloudapi/compute/abort_shared_snapshot_merge - /cloudapi/compute/affinityLabelRemove - /cloudapi/compute/affinityLabelSet - /cloudapi/compute/affinityRelations @@ -551,19 +615,41 @@ except RequestException as e: - /cloudapi/compute/antiAffinityRuleAdd - /cloudapi/compute/antiAffinityRuleRemove - /cloudapi/compute/antiAffinityRulesClear +- /cloudapi/compute/attachGpu +- /cloudapi/compute/attachPciDevice +- /cloudapi/compute/bootDiskSet - /cloudapi/compute/cdEject - /cloudapi/compute/cdInsert +- /cloudapi/compute/changeMac +- /cloudapi/compute/change_mtu +- /cloudapi/compute/change_security_groups - /cloudapi/compute/changeIp +- /cloudapi/compute/changeLinkState - /cloudapi/compute/clone +- /cloudapi/compute/clone_abort +- /cloudapi/compute/createTemplate - /cloudapi/compute/delete - /cloudapi/compute/deleteCustomFields +- /cloudapi/compute/detachGpu +- /cloudapi/compute/detachPciDevice +- /cloudapi/compute/disable - /cloudapi/compute/diskAdd - /cloudapi/compute/diskAttach - /cloudapi/compute/diskDel - /cloudapi/compute/diskDetach -- /cloudapi/compute/diskResize +- /cloudapi/compute/diskMigrate +- /cloudapi/compute/diskSwitchToReplication +- /cloudapi/compute/enable - /cloudapi/compute/get +- /cloudapi/compute/getConsoleUrl +- /cloudapi/compute/guest_agent_disable +- /cloudapi/compute/guest_agent_enable +- /cloudapi/compute/guest_agent_execute +- /cloudapi/compute/guest_agent_feature_update - /cloudapi/compute/list +- /cloudapi/compute/listDeleted +- /cloudapi/compute/migrateToZone +- /cloudapi/compute/moveToRg - /cloudapi/compute/netAttach - /cloudapi/compute/netDetach - /cloudapi/compute/pause @@ -571,9 +657,12 @@ except RequestException as e: - /cloudapi/compute/pfwDel - /cloudapi/compute/pfwList - /cloudapi/compute/pinToStack +- /cloudapi/compute/powerCycle - /cloudapi/compute/reboot - /cloudapi/compute/redeploy +- /cloudapi/compute/reset - /cloudapi/compute/resize +- /cloudapi/compute/restore - /cloudapi/compute/resume - /cloudapi/compute/setCustomFields - /cloudapi/compute/snapshotCreate @@ -594,6 +683,7 @@ except RequestException as e:
disks +- /cloudapi/disks/change_disk_storage_policy - /cloudapi/disks/create - /cloudapi/disks/delete - /cloudapi/disks/deleteDisks @@ -642,6 +732,7 @@ except RequestException as e:
image +- /cloudapi/image/change_storage_policy - /cloudapi/image/create - /cloudapi/image/createVirtual - /cloudapi/image/delete @@ -664,11 +755,24 @@ except RequestException as e: - /cloudapi/k8s/create - /cloudapi/k8s/delete +- /cloudapi/k8s/deleteMasterFromGroup +- /cloudapi/k8s/deleteWorkerFromGroup +- /cloudapi/k8s/disable +- /cloudapi/k8s/enable - /cloudapi/k8s/get - /cloudapi/k8s/getConfig +- /cloudapi/k8s/getNodeAnnotations +- /cloudapi/k8s/getNodeLabels +- /cloudapi/k8s/getNodeTaints - /cloudapi/k8s/list - /cloudapi/k8s/listDeleted +- /cloudapi/k8s/migrateToZone - /cloudapi/k8s/restore +- /cloudapi/k8s/start +- /cloudapi/k8s/stop +- /cloudapi/k8s/update +- /cloudapi/k8s/updateWorkerNodesMetaData +- /cloudapi/k8s/workerAdd - /cloudapi/k8s/workerReset - /cloudapi/k8s/workerRestart - /cloudapi/k8s/workersGroupAdd @@ -692,6 +796,7 @@ except RequestException as e: - /cloudapi/lb/backendServerDelete - /cloudapi/lb/backendServerUpdate - /cloudapi/lb/backendUpdate +- /cloudapi/lb/configReset - /cloudapi/lb/create - /cloudapi/lb/delete - /cloudapi/lb/disable @@ -705,6 +810,13 @@ except RequestException as e: - /cloudapi/lb/list - /cloudapi/lb/listDeleted - /cloudapi/lb/makeHighlyAvailable +- /cloudapi/lb/migrateToZone +- /cloudapi/lb/restart +- /cloudapi/lb/restore +- /cloudapi/lb/start +- /cloudapi/lb/stop +- /cloudapi/lb/update +- /cloudapi/lb/updateSysctlParams
@@ -715,16 +827,26 @@ except RequestException as e:
+
pcidevice + +- /cloudapi/pcidevice/list + +
+
rg - /cloudapi/rg/accessGrant - /cloudapi/rg/accessRevoke +- /cloudapi/rg/add_storage_policy - /cloudapi/rg/create +- /cloudapi/rg/del_storage_policy - /cloudapi/rg/delete - /cloudapi/rg/disable - /cloudapi/rg/enable - /cloudapi/rg/get +- /cloudapi/rg/getResourceConsumption - /cloudapi/rg/list +- /cloudapi/rg/listDeleted - /cloudapi/rg/removeDefNet - /cloudapi/rg/restore - /cloudapi/rg/setDefNet @@ -732,6 +854,24 @@ except RequestException as e:
+
security_group + +- /cloudapi/security_group/get +- /cloudapi/security_group/create +- /cloudapi/security_group/create_rule +- /cloudapi/security_group/delete +- /cloudapi/security_group/delete_rule +- /cloudapi/security_group/list +- /cloudapi/security_group/update + +
+ +
sep + +- /cloudapi/sep/listAvailableSepAndPools + +
+
stack - /cloudapi/stack/get @@ -739,6 +879,13 @@ except RequestException as e:
+
storage_policy + +- /cloudapi/storage_policy/get +- /cloudapi/storage_policy/list + +
+
tasks - /cloudapi/tasks/get @@ -746,11 +893,33 @@ except RequestException as e:
+
trunk + +- /cloudapi/trunk/get +- /cloudapi/trunk/list + +
+
user - /cloudapi/user/apiList +- /cloudapi/user/brief - /cloudapi/user/get -- /cloudapi/user/getAudit +- /cloudapi/user/getResourceConsumption +- /cloudapi/user/setData + +
+ +
vfpool + +- /cloudapi/vfpool/get +- /cloudapi/vfpool/list + +
+ +
vgpu + +- /cloudapi/vgpu/list
@@ -760,13 +929,21 @@ except RequestException as e: - /cloudapi/vins/createInRG - /cloudapi/vins/delete - /cloudapi/vins/disable +- /cloudapi/vins/dnsApply - /cloudapi/vins/enable +- /cloudapi/vins/extNetConnect +- /cloudapi/vins/extNetDisconnect +- /cloudapi/vins/extNetList - /cloudapi/vins/get - /cloudapi/vins/ipList - /cloudapi/vins/ipRelease - /cloudapi/vins/ipReserve - /cloudapi/vins/list - /cloudapi/vins/listDeleted +- /cloudapi/vins/migrateToZone +- /cloudapi/vins/natRuleAdd +- /cloudapi/vins/natRuleDel +- /cloudapi/vins/natRuleList - /cloudapi/vins/restore - /cloudapi/vins/staticRouteAdd - /cloudapi/vins/staticRouteDel @@ -776,16 +953,142 @@ except RequestException as e:
+
zone + +- /cloudapi/zone/get +- /cloudapi/zone/list + +
+ #### Cloudbroker
account +- /cloudbroker/account/add_storage_policy +- /cloudbroker/account/addUser +- /cloudbroker/account/addZone - /cloudbroker/account/create +- /cloudbroker/account/del_storage_policy +- /cloudbroker/account/delete +- /cloudbroker/account/deleteAccounts +- /cloudbroker/account/deleteUser +- /cloudbroker/account/disable +- /cloudbroker/account/disableAccounts +- /cloudbroker/account/enable +- /cloudbroker/account/enableAccounts +- /cloudbroker/account/get +- /cloudbroker/account/getResourceConsumption +- /cloudbroker/account/list +- /cloudbroker/account/listDeleted +- /cloudbroker/account/removeZone +- /cloudbroker/account/restore + +
+ +
audit + +- /cloudbroker/audit/list + +
+ +
compute + +- /cloudbroker/compute/change_security_groups +- /cloudbroker/compute/clone +- /cloudbroker/compute/clone_abort +- /cloudbroker/compute/migrate_storage_list +- /cloudbroker/compute/start_migration_in +- /cloudbroker/compute/start_migration_out +- /cloudbroker/compute/stop_migration_in +- /cloudbroker/compute/stop_migration_out + +
+ +
disks + +- /cloudbroker/disks/migrate +- /cloudbroker/disks/migrate_abort +- /cloudbroker/disks/migrate_status + +
+ +
image + +- /cloudbroker/image/change_storage_policy + +
+ +
node + +- cloudbroker/node/add_ssh_identity +- cloudbroker/node/get_ssh_identity +- cloudbroker/node/update_description + +
+ +
rg + +- /cloudbroker/rg/add_storage_policy +- /cloudbroker/rg/del_storage_policy + +
+ +
security_group + +- /cloudbroker/security_group/create +- /cloudbroker/security_group/create_rule +- /cloudbroker/security_group/delete +- /cloudbroker/security_group/delete_rule +- /cloudbroker/security_group/get +- /cloudbroker/security_group/list +- /cloudbroker/security_group/update + +
+ +
storage_policy + +- /cloudbroker/storage_policy/add_pool +- /cloudbroker/storage_policy/create +- /cloudbroker/storage_policy/delete +- /cloudbroker/storage_policy/delete_pool +- /cloudbroker/storage_policy/disable +- /cloudbroker/storage_policy/enable +- /cloudbroker/storage_policy/get +- /cloudbroker/storage_policy/list +- /cloudbroker/storage_policy/update + +
+ +
user + +- /cloudbroker/user/block +- /cloudbroker/user/create +- /cloudbroker/user/get +- /cloudbroker/user/list +- /cloudbroker/user/unblock + +
+ +
vins + +- /cloudbroker/vins/update + +
+ +
vnfdev + +- /cloudbroker/vnfdev/migrate_abort
#### System +
info + +- /system/info/version + +
+
usermanager - /system/usermanager/whoami diff --git a/pyproject.toml b/pyproject.toml index f30ec23..e11b4eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ authors = [ {name = "Vladislav Nesterov"}, {name = "Stanislav Karimov"}, ] -version = "1.2.2" +version = "1.3.0" readme = "README.md" @@ -13,7 +13,7 @@ requires-python = ">=3.12" dependencies = [ "requests>=2.32.3", - "pydantic>=2.10.5", + "pydantic==2.10.5", "pyyaml>=6.0.2", ] diff --git a/src/dynamix_sdk/api/_nested/enums.py b/src/dynamix_sdk/api/_nested/enums.py index b6d9cfb..d8fff0d 100644 --- a/src/dynamix_sdk/api/_nested/enums.py +++ b/src/dynamix_sdk/api/_nested/enums.py @@ -1,3 +1,5 @@ +from enum import Enum + from dynamix_sdk.utils import ( AutoNameEnum as _AutoNameEnum, enum_auto as _enum_auto, @@ -169,6 +171,8 @@ class VMTechStatus(str, _AutoNameEnum): DOWN = _enum_auto() MERGE = _enum_auto() MIGRATING = _enum_auto() + MIGRATING_IN = _enum_auto() + MIGRATING_OUT = _enum_auto() PAUSED = _enum_auto() PAUSING = _enum_auto() ROLLBACK = _enum_auto() @@ -516,3 +520,101 @@ class DPDKNetStatus(str, _AutoNameEnum): DESTROYED = _enum_auto() DISABLED = _enum_auto() ENABLED = _enum_auto() + + +class VFPoolStatus(str, _AutoNameEnum): + CREATED = _enum_auto() + DESTROYED = _enum_auto() + DISABLED = _enum_auto() + ENABLED = _enum_auto() + + +class LinkState(str, _AutoNameEnum): + on = _enum_auto() + off = _enum_auto() + + +class ZoneStatus(str, _AutoNameEnum): + CREATED = _enum_auto() + DESTROYED = _enum_auto() + + +class TrafficDirection(str, _AutoNameEnum): + INBOUND = 'inbound' + OUTBOUND = 'outbound' + + +class SGRuleEthertype(str, _AutoNameEnum): + IPV4 = 'IPv4' + IPV6 = 'IPv6' + + +class SGRuleProtocol(str, _AutoNameEnum): + ICMP = 'icmp' + TCP = 'tcp' + UDP = 'udp' + + +class TrunkStatus(str, _AutoNameEnum): + CREATED = _enum_auto() + DESTROYED = _enum_auto() + DESTROYING = _enum_auto() + DISABLED = _enum_auto() + ENABLED = _enum_auto() + ENABLING = _enum_auto() + MODELED = _enum_auto() + + +class StoragePolicyStatus(str, _AutoNameEnum): + DISABLED = _enum_auto() + ENABLED = _enum_auto() + + +class JobStatus(str, _AutoNameEnum): + ABORTED = _enum_auto() + CLEANUPED = _enum_auto() + ERROR = _enum_auto() + OK = _enum_auto() + PROCESSING = _enum_auto() + SCHEDULED = _enum_auto() + + +class PGPUProcessorType(str, _AutoNameEnum): + NVIDIA = _enum_auto() + DUMMY = _enum_auto() + + +class PGPUMode(str, _AutoNameEnum): + PASSTHROUGH = _enum_auto() + + +class VGPUStatus(str, _AutoNameEnum): + ALLOCATED = _enum_auto() + ALLOCATING = _enum_auto() + CLAIMED = _enum_auto() + CLAIMING = _enum_auto() + CREATED = _enum_auto() + DEALLOCATED = _enum_auto() + DEALLOCATING = _enum_auto() + DESTROYED = _enum_auto() + ERROR = _enum_auto() + + +class NetMapSourceType(str, _AutoNameEnum): + NETWORK = 'network' + BRIDGE = 'bridge' + + +class DiskMigrateJobType(int, Enum): + PULL = 1 + COPY = 2 + COMMIT = 3 + + +class PCIDeviceStatus(str, _AutoNameEnum): + CLAIMED = _enum_auto() + CLAIMING = _enum_auto() + DESTROYED = _enum_auto() + DISABLED = _enum_auto() + ENABLED = _enum_auto() + ERROR = _enum_auto() diff --git a/src/dynamix_sdk/api/_nested/params.py b/src/dynamix_sdk/api/_nested/params.py index edeb5f8..e436bfd 100644 --- a/src/dynamix_sdk/api/_nested/params.py +++ b/src/dynamix_sdk/api/_nested/params.py @@ -5,6 +5,7 @@ from . import enums as _enums class DiskAPIParamsNM(_base.BaseAPIParamsNestedModel): name: str size_gb: int + storage_policy_id: int description: None | str = None image_id: None | int = None @@ -13,9 +14,12 @@ class DiskAPIParamsNM(_base.BaseAPIParamsNestedModel): class InterfaceAPIParamsNM(_base.BaseAPIParamsNestedModel): + enabled: bool = True net_id: int net_type: _enums.NetType sdn_logical_port_id: str + security_group_ids: None | list[int] = None + security_group_mode: bool = False ip_addr: None | str = None mac: None | str = None @@ -26,3 +30,26 @@ class RouteAPIParamsNM(_base.BaseAPIParamsNestedModel): dst_net_ip: str dst_net_mask: str gateway: str + + +class StoragePolicyQuotasAPIParamsNM(_base.BaseAPIParamsNestedModel): + id: int + storage_size_gb: int + + +class SEPPoolsAPIParamsNM(_base.BaseAPIParamsNestedModel): + pool_names: list[str] + sep_id: int + + +class OSUserAPIParamsNM(_base.BaseAPIParamsNestedModel): + guid: str + login: str + password: str + ssh_public_key: str + + +class NetMapConfigAPIParamsNM(_base.BaseAPIParamsNestedModel): + target_dev: str + source_type: _enums.NetMapSourceType + source_value: str diff --git a/src/dynamix_sdk/api/_nested/result.py b/src/dynamix_sdk/api/_nested/result.py index 37e71ec..5b95842 100644 --- a/src/dynamix_sdk/api/_nested/result.py +++ b/src/dynamix_sdk/api/_nested/result.py @@ -6,7 +6,7 @@ from . import enums as _enums class AccessAPIResultNM(_base.BaseAPIResultNestedModel): - explicit: bool | str # BDX-8471 + explicit: bool guid: str access_type: _enums.AccessType status: str @@ -50,7 +50,7 @@ class LibvirtSettingsAPIResultNM(_base.BaseAPIResultNestedModel): class InterfaceForComputeListAPIResultNM(_base.BaseAPIResultNestedModel): - bus_number: int + bus_num: int conn_id: int conn_type: str default_gw: str @@ -64,11 +64,13 @@ class InterfaceForComputeListAPIResultNM(_base.BaseAPIResultNestedModel): mtu: int name: str net_id: int - net_mask: int + net_prefix: int net_type: _enums.NetType node_id: int - pci_slot: int + pci_slot_num: int sdn_logical_port_id: str + security_group_ids: list[int] + security_group_mode: bool target: str trunk_vlan_ids: str | None = None type: str @@ -76,10 +78,11 @@ class InterfaceForComputeListAPIResultNM(_base.BaseAPIResultNestedModel): class InterfaceForComputeGetAPIResultNM(_base.BaseAPIResultNestedModel): - bus_number: int + bus_num: int conn_id: int conn_type: str default_gw: str + security_group_mode: bool enabled: bool flip_group_id: int guid: str @@ -90,12 +93,13 @@ class InterfaceForComputeGetAPIResultNM(_base.BaseAPIResultNestedModel): mtu: int name: str net_id: int - net_mask: int + net_prefix: int net_type: _enums.NetType node_id: int - pci_slot: int + pci_slot_num: int sdn_logical_port_id: str qos: QOSAPIResultNM + security_group_ids: list[int] target: str trunk_vlan_ids: str | None = None type: str @@ -103,7 +107,7 @@ class InterfaceForComputeGetAPIResultNM(_base.BaseAPIResultNestedModel): class VNFDevInterfaceAPIResultNM(_base.BaseAPIResultNestedModel): - bus_number: int + bus_num: int conn_id: int conn_type: str default_gw: str @@ -117,12 +121,14 @@ class VNFDevInterfaceAPIResultNM(_base.BaseAPIResultNestedModel): mtu: int name: str net_id: int - net_mask: int + net_prefix: int net_type: _EmptyStr | _enums.NetType node_id: int - pci_slot: int + pci_slot_num: int qos: QOSAPIResultNM sdn_logical_port_id: str + security_group_ids: list[int] + security_group_mode: bool target: str type: str vnf_ids: list[int] @@ -190,13 +196,14 @@ class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel): account_id: int acl: dict boot_partition: int - bus_number: int + bus_num: int created_by: str created_timestamp: int deleted_by: str deleted_timestamp: int description: str destruction_timestamp: int + device_name: str disk_path: str grid_id: int guid: int @@ -212,7 +219,7 @@ class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel): params: str parent_id: int password: str - pci_slot: int + pci_slot_num: int present_to: dict[str, int] purge_timestamp: int reality_device_number: int @@ -228,7 +235,9 @@ class DiskForCAComputeGetAPIResultNM(_base.BaseAPIResultNestedModel): size_used: float snapshots: list[SnapshotAPIResultNM] status: _enums.DiskStatus + storage_policy_id: int tech_status: _enums.DiskTechStatus + to_clean: bool type: _enums.DiskType updated_by: str updated_by: str @@ -291,7 +300,9 @@ class DiskForListAndListDeletedAPIResultNM(_base.BaseAPIResultNestedModel): size_used: float snapshots: list[SnapshotAPIResultNM] status: _enums.DiskStatus + storage_policy_id: int tech_status: _enums.DiskTechStatus + to_clean: bool type: _enums.DiskType updated_by: str vm_id: int | None @@ -386,14 +397,20 @@ class DiskForListUnattachedAPIResultNM(_base.BaseAPIResultNestedModel): return self._get_datetime_from_timestamp(self.updated_timestamp) +class StoragePolicyQuotasAPIResultNM(_base.BaseAPIResultNestedModel): + id: int + storage_size_gb: int + + class TenantQuotasAPIResultNM(_base.BaseAPIResultNestedModel): cpu_count: int disk_size_gb: int ext_traffic: int gpu_count: int - public_ip_count: int + ext_ip_count: int ram_size_mb: float | int storage_size_gb: int + storage_policies: list[StoragePolicyQuotasAPIResultNM] class ResourceGroupAPIResultNM(_base.BaseAPIResultNestedModel): @@ -421,6 +438,7 @@ class ResourceGroupAPIResultNM(_base.BaseAPIResultNestedModel): sdn_access_group_id: str secret: str status: _enums.ResourceGroupStatus + storage_policy_ids: list[int] uniq_pools: list[str] updated_by: str updated_timestamp: int @@ -442,7 +460,7 @@ class ResourceGroupAPIResultNM(_base.BaseAPIResultNestedModel): return self._get_datetime_from_timestamp(self.updated_timestamp) -class AccountAPIResultNM(_base.BaseAPIResultNestedModel): +class AccountForCAAPIResultNM(_base.BaseAPIResultNestedModel): acl: list[AccessAPIResultNM] created_timestamp: int deleted_timestamp: int @@ -452,6 +470,7 @@ class AccountAPIResultNM(_base.BaseAPIResultNestedModel): status: _enums.AccountStatus updated_timestamp: int vm_features: list[_enums.VMFeature] + zone_ids: list[int] @property def created_datetime(self): @@ -478,6 +497,40 @@ class GuestAgentAPIResultNM(_base.BaseAPIResultNestedModel): return self._get_datetime_from_timestamp(self.last_update_timestamp) +class VGPUAPIResultNM(_base.BaseAPIResultNestedModel): + account_id: int + bus_num: int + created_timestamp: int + deleted_timestamp: int + grid_id: int + guid: int + id: int + last_claimed_by: int + last_update_timestamp: int + pci_slot_num: int + pgpu_id: int + pgpu_mode: _enums.PGPUMode + pgpu_processor_type: _enums.PGPUProcessorType + profile_id: int | None + ram_size_mb: int + reference_id: str + rg_id: int + status: _enums.VGPUStatus + vm_id: int + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def deleted_datetime(self): + return self._get_datetime_from_timestamp(self.deleted_timestamp) + + @property + def last_update_datetime(self): + return self._get_datetime_from_timestamp(self.last_update_timestamp) + + class VMAPIResultNM(_base.BaseAPIResultNestedModel): account_id: int account_name: str @@ -489,6 +542,7 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel): arch: str auto_start: bool boot_disk_size_gb: int + boot_image_id: int boot_loader_type: _enums.BootLoaderType boot_mode: _enums.BootMode boot_order: list[_enums.BootDevice] @@ -512,19 +566,19 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel): hot_resize: bool hp_backed: bool id: int - image_id: int interfaces: list[InterfaceForComputeListAPIResultNM] live_migration_job_id: int lock_status: _enums.LockStatus manager_id: int manager_type: str - migration_job: int + migration_job_id: int milestones: int name: str need_reboot: bool network_interface_naming: _enums.NetIfaceNamingTemplate numa_affinity: _enums.NumaAffinity numa_node_id: int + os_version: str pinned_to_stack: bool preferred_cpu_cores: list[int] ram_size_mb: int @@ -534,8 +588,8 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel): rg_id: int rg_name: str snapshot_sets: list[SnapshotSetAPIResultNM] - stateless_sep_id: int - stateless_sep_type: str + stateless_sep_id: int | None = None + stateless_sep_type: str | None = None status: _enums.VMStatus tags: dict tech_status: _enums.VMTechStatus @@ -543,9 +597,8 @@ class VMAPIResultNM(_base.BaseAPIResultNestedModel): updated_by: str updated_timestamp: int user_managed: bool - vgpus: list[dict[str, _typing.Any]] + vgpu_ids: list[int] vins_count: int - virtual_image_id: int vm_ci_id: int guest_agent: GuestAgentAPIResultNM zone_id: int @@ -585,6 +638,7 @@ class ImageForListAPIResultNM(_base.BaseAPIResultNestedModel): sep_pool_name: str size_gb: int status: _enums.ImageStatus + storage_policy_id: int type: _enums.ImageType virtual: bool | None = None @@ -714,7 +768,7 @@ class DHCPVNFConfigAPIResultNM(_base.BaseAPIResultNestedModel): ip_pool_start: str lease_time: int net_ip: str - net_mask: int + net_prefix: int reservations: list[DHCPReservationAPIResultNM] @@ -722,7 +776,7 @@ class GWVNFConfigAPIResultNM(_base.BaseAPIResultNestedModel): default_gw: str ext_net_id: int ext_net_ip: str - ext_net_mask: int + ext_net_prefix: int qos: _typing.Any @@ -735,10 +789,12 @@ class NATRuleAPIResultNM(_base.BaseAPIResultNestedModel): public_port_start: int vm_id: int + vm_name: None | str = None + class NATVNFConfigAPIResultNM(_base.BaseAPIResultNestedModel): net_ip: str - net_mask: int + net_prefix: int rules: list[NATRuleAPIResultNM] @@ -823,7 +879,7 @@ class VNFSAPIResultNM(_base.BaseAPIResultNestedModel): class VNFDevMGMTConfigAPIResultNM(_base.BaseAPIResultNestedModel): ip_addr: str password: str - ssh_key: str + ssh_public_key: str user: str @@ -850,6 +906,7 @@ class VNFDevAPIResultNM(_base.BaseAPIResultNestedModel): guid: int id: int interfaces: list[VNFDevInterfaceAPIResultNM] + live_migration_job_id: int lock_status: _enums.LockStatus milestones: int name: str @@ -912,7 +969,7 @@ class BServiceAPIResultNM(_base.BaseAPIResultNestedModel): parent_service_type: str rg_id: int rg_name: str - ssh_user: str + ssh_user_name: str status: _enums.BServiceStatus tech_status: _enums.BServiceTechStatus updated_by: str @@ -942,7 +999,7 @@ class OSUserAPIResultNM(_base.BaseAPIResultNestedModel): guid: str login: str password: str - pub_key: str + ssh_public_key: str class BServiceGroupVMAPIResultNM(_base.BaseAPIResultNestedModel): @@ -975,7 +1032,7 @@ class FlipGroupForListAPIResultNM(_base.BaseAPIResultNestedModel): milestones: int name: str net_id: int - net_mask: int + net_prefix: int net_type: _enums.FlipGroupNetType status: _enums.FlipGroupStatus @@ -1083,7 +1140,7 @@ class LBAPIResultNM(_base.BaseAPIResultNestedModel): class SEPPoolAPIResultNM(_base.BaseAPIResultNestedModel): name: str types: list[_enums.PoolDiskType] - system: str + system: str | bool class SEPAPIResultNM(_base.BaseAPIResultNestedModel): @@ -1143,18 +1200,6 @@ class TaskAPIResultNM(_base.BaseAPIResultNestedModel): return self._get_datetime_from_timestamp(self.updated_timestamp) -class UserAuditAPIResultNM(_base.BaseAPIResultNestedModel): - request_timestamp: int - api_url_path: str - execution_time_sec: int | None - status_code: int | None - guid: str - - @property - def request_datetime(self): - return self._get_datetime_from_timestamp(self.request_timestamp) - - class K8CIForListAPIResultNM(_base.BaseAPIResultNestedModel): created_timestamp: int description: str @@ -1180,6 +1225,7 @@ class NetworkIDsAPIResultNM(_base.BaseAPIResultNestedModel): class K8sVMAPIResultNM(_base.BaseAPIResultNestedModel): + ext_ip: str | None = None id: int name: str status: _enums.VMStatus @@ -1229,10 +1275,10 @@ class K8sServiceAccountAPIResultNM(_base.BaseAPIResultNestedModel): user_name: str -class K8sListAPIResultNM(_base.BaseAPIResultNestedModel): +class K8sAPIResultNM(_base.BaseAPIResultNestedModel): account_id: int account_name: str - acl: list[K8sACLAPIResultNM] + acl: list[_typing.Any] bservice_id: int k8ci_id: int config: dict @@ -1273,36 +1319,359 @@ class K8sListAPIResultNM(_base.BaseAPIResultNestedModel): return self._get_datetime_from_timestamp(self.updated_timestamp) -class K8sListDeletedAPIResultNM(_base.BaseAPIResultNestedModel): +class DPDKNetAPIResultNM(_base.BaseAPIResultNestedModel): + account_ids: list[int] + created_timestamp: int + description: str + grid_id: int + guid: int + id: int + name: str + ovs_bridge: str + rg_ids: list[int] + security_group_mode: bool + status: _enums.DPDKNetStatus + updated_timestamp: int + vlan_id: int + vm_ids: list[int] + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def updated_datetime(self): + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class VirtualFunctionAPIResultNM(_base.BaseAPIResultNestedModel): + guid: str + id: int + vm_id: int + claimed: bool + + +class VFPoolNodeInterfaceAPIResultNM(_base.BaseAPIResultNestedModel): + guid: str + name: str + vfs: list[VirtualFunctionAPIResultNM] + + +class VFPoolNodeAPIResultNM(_base.BaseAPIResultNestedModel): + guid: str + id: int + interfaces: list[VFPoolNodeInterfaceAPIResultNM] + + +class VFPoolAPIResultNM(_base.BaseAPIResultNestedModel): + account_ids: list[int] + created_timestamp: int + description: str + grid_id: int + guid: int + id: int + name: str + rg_ids: list[int] + status: _enums.VFPoolStatus + updated_timestamp: int + nodes: list[VFPoolNodeAPIResultNM] + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def updated_datetime(self): + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class ZoneForListAPIResultNM(_base.BaseAPIResultNestedModel): + created_timestamp: int + deletable: bool + description: str + grid_id: int + guid: int + id: int + name: str + node_ids: list[int] + status: _enums.ZoneStatus + updated_timestamp: int + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def updated_datetime(self): + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class SecurityGroupRuleAPIResultNM(_base.BaseAPIResultNestedModel): + ethertype: _enums.SGRuleEthertype + id: int + port_range_max: int | None + port_range_min: int | None + protocol: _enums.SGRuleProtocol | None + remote_group_id: int | None = None + remote_ip_prefix: str | None + traffic_direction: _enums.TrafficDirection + + +class TrunkAPIResultNM(_base.BaseAPIResultNestedModel): + account_ids: list[int] | None + created_by: str + created_timestamp: int + deleted_by: str | None + deleted_timestamp: int | None + description: str + guid: int + id: int + mac: str + name: str + native_vlan_id: int | None + ovs_bridge: str + status: _enums.TrunkStatus + updated_by: str | None + updated_timestamp: int | None + vlan_ids: str + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def deleted_datetime(self): + if self.deleted_timestamp is None: + return None + return self._get_datetime_from_timestamp(self.deleted_timestamp) + + @property + def updated_datetime(self): + if self.updated_timestamp is None: + return None + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class SEPPoolsAPIResultNM(_base.BaseAPIResultNestedModel): + pool_names: list[str] + sep_id: int + sep_name: str | None = None + + +class TenantIDsAPIResultNM(_base.BaseAPIResultNestedModel): + account_ids: list[int] + rg_ids: list[int] + + +class StoragePolicyAPIResultNM(_base.BaseAPIResultNestedModel): + sep_pools: list[SEPPoolsAPIResultNM] + description: str + guid: int + id: int + iops_limit: int + name: str + status: _enums.StoragePolicyStatus + usage: TenantIDsAPIResultNM + + +class VINSExtNetAPIResultNM(_base.BaseAPIResultNestedModel): + default_gw: str + id: int + ip_addr: str + net_prefix: int + status: _enums.ExtNetStatus + tech_status: _enums.VNFDevTechStatus + + +class SecurityGroupAPIResultNM(_base.BaseAPIResultNestedModel): + account_id: int + created_by: str + created_timestamp: int + description: str + id: int + name: str + rules: list[SecurityGroupRuleAPIResultNM] + updated_by: str | None + updated_timestamp: int | None + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def updated_datetime(self): + if self.updated_timestamp is None: + return None + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class BootLoaderMetaisoAPIResultNM(_base.BaseAPIResultNestedModel): + device_name: str + path: str + + +class MigrateStorageJobAPIResultNM(_base.BaseAPIResultNestedModel): + completed: bool + domain_name: str + id: int + log: list[str] + source_stack_id: int + status: _enums.JobStatus + target_stack_id: int + + +class AuditAPIResultNM(_base.BaseAPIResultNestedModel): + account_id: int | None = None + api_url_path: str + async_request_task_id: str | None = None + args: str + bservice_id: int | None = None + client_ip_addr: str + correlation_id: str + execution_time_sec: float | None + flip_group_id: int | None = None + guid: str + k8s_id: int | None = None + kwargs: str + lb_id: int | None = None + node_ids: list[int] | None = None + request_datetime_iso8601: str + request_timestamp: float + response_timestamp: float | None + result: str | None + rg_id: int | None = None + sep_id: int | None = None + status_code: int | None + user_name: str + vins_id: int | None = None + vm_id: int | None = None + + @property + def request_datetime(self): + return self._get_datetime_from_timestamp(self.request_timestamp) + + @property + def response_datetime(self): + if self.response_timestamp is None: + return None + return self._get_datetime_from_timestamp(self.response_timestamp) + + +class UserAPIResultNM(_base.BaseAPIResultNestedModel): + active: bool + api_access_groups: dict[str, str] + auth_key: str + auth_keys: list[_typing.Any] + blocked: bool | None = None + data: str + description: str + domain_name: str | None + emails: list[str] + grid_id: int + groups: list[str] + guid: str + id: str + last_check_timestamp: int + mobile: list[_typing.Any] + password: str + protected: bool | None = None + roles: list[_typing.Any] + service_account: bool + xmpp: list[_typing.Any] + + @property + def last_check_datetime(self): + return self._get_datetime_from_timestamp(self.last_check_timestamp) + + +class StorageCountersAPIResultNM(_base.BaseAPIResultNestedModel): + storage_size_gb_by_real_usage: float + storage_size_gb_by_disk_max: float + + +class StoragePolicyCountersAPIResultNM(_base.BaseAPIResultNestedModel): + storage_size_gb_by_real_usage: float + storage_size_gb_by_disk_max: float + sep_pools: dict[str, dict[str, StorageCountersAPIResultNM]] + storage_size_quota_gb: int | None = None + + +class ResourceCountersAPIResultNM(_base.BaseAPIResultNestedModel): + cpu_count: int + ram_size_mb: int + storage_size_gb_by_real_usage: int | float + storage_size_gb_by_disk_max: int + ext_ip_count: int + ext_traffic: int + gpu_count: int + sep_pools: dict[str, dict[str, StorageCountersAPIResultNM]] + storage_policies: dict[str, StoragePolicyCountersAPIResultNM] + + +class TenantQuotasForResourceConsumptionAPIResultNM( + _base.BaseAPIResultNestedModel, +): + cpu_count: int + disk_size_gb: int + ext_traffic: int + gpu_count: int + ext_ip_count: int + ram_size_mb: float | int + storage_size_gb: int + + +class PCIDeviceAPIResultNM(_base.BaseAPIResultNestedModel): + vm_id: int + description: str + guid: int + hw_path: str + id: int + name: str + rg_id: int + stack_id: int + status: _enums.PCIDeviceStatus + system_name: str + + +class AvailableSEPPoolsAPIResultNM(_base.BaseAPIResultNestedModel): + sep_id: int + sep_name: str + sep_type: _enums.SEPType + pools: list[SEPPoolAPIResultNM] + + +class ResourceGroupForListDeletedAPIResultNM(_base.BaseAPIResultNestedModel): + account_acl: AccessAPIResultNM account_id: int account_name: str - acl: list[K8sACLAPIResultNM] - bservice_id: int - k8ci_id: int - config: dict + acl: list[AccessAPIResultNM] + vm_features: list[_enums.VMFeature] + cpu_allocation_parameter: str + cpu_allocation_ratio: int created_by: str created_timestamp: int + default_net_id: int + default_net_type: _enums.RGDefaultNetType deleted_by: str deleted_timestamp: int description: str - ext_net_id: int grid_id: int guid: int id: int - lb_id: int + lock_status: _enums.LockStatus milestones: int name: str - network_plugin: _enums.K8sNetworkPlugin - rg_id: int - rg_name: str - service_account: K8sServiceAccountAPIResultNM - status: _enums.K8sStatus - tech_status: _enums.K8sTechStatus + quotas: TenantQuotasAPIResultNM + resource_types: list[_enums.RGResourceType] + sdn_access_group_id: str + secret: str + status: _enums.ResourceGroupStatus + storage_policy_ids: list[int] + uniq_pools: list[str] updated_by: str updated_timestamp: int - vins_id: int - worker_groups: list[WorkerGroupAPIResultNM] - zone_id: int + vins_ids: list[int] + vm_ids: list[int] @property def created_datetime(self): @@ -1317,25 +1686,55 @@ class K8sListDeletedAPIResultNM(_base.BaseAPIResultNestedModel): return self._get_datetime_from_timestamp(self.updated_timestamp) -class DPDKNetAPIResultNM(_base.BaseAPIResultNestedModel): - account_ids: list[int] +class TenantStatusCountersAPIResultNM(_base.BaseAPIResultNestedModel): + disabled: int + enabled: int + + +class VMStatusCountersAPIResultNM(_base.BaseAPIResultNestedModel): + started: int + stopped: int + + +class AccountForCBAPIResultNM(_base.BaseAPIResultNestedModel): + acc_lvl_vins_ids: list[int] + acl: list[AccessAPIResultNM] + company_url: str + company: str + cpu_allocation_parameter: str + cpu_allocation_ratio: int + created_by: str created_timestamp: int + dc_location: str + deactivation_timestamp: int + default_zone_id: int + deleted_by: str + deleted_timestamp: int description: str - grid_id: int + display_name: str guid: int id: int name: str - ovs_bridge: str - rg_ids: list[int] - status: _enums.DPDKNetStatus + quotas: TenantQuotasAPIResultNM + resource_types: list[_enums.AccountResourceType] + send_access_emails: bool + status: _enums.AccountStatus + storage_policy_ids: list[int] + uniq_pools: list[str] updated_timestamp: int - vlan_id: int - vm_ids: list[int] + version: int + vm_features: list[_enums.VMFeature] + zone_ids: list[int] + zones: list[int] @property def created_datetime(self): return self._get_datetime_from_timestamp(self.created_timestamp) + @property + def deleted_datetime(self): + return self._get_datetime_from_timestamp(self.deleted_timestamp) + @property def updated_datetime(self): return self._get_datetime_from_timestamp(self.updated_timestamp) diff --git a/src/dynamix_sdk/api/cloudapi/_api.py b/src/dynamix_sdk/api/cloudapi/_api.py index 72a1b19..f9812e7 100644 --- a/src/dynamix_sdk/api/cloudapi/_api.py +++ b/src/dynamix_sdk/api/cloudapi/_api.py @@ -13,11 +13,19 @@ from .k8s import * from .kvmx86 import * from .lb import * from .locations import * +from .pcidevice import * from .rg import * +from .security_group import * +from .sep import * from .stack import * +from .storage_policy import * from .tasks import * +from .trunk import * from .user import * +from .vfpool import * +from .vgpu import * from .vins import * +from .zone import * class CloudapiAPI(_base.BaseAPI): @@ -35,8 +43,16 @@ class CloudapiAPI(_base.BaseAPI): kvmx86: CloudapiKvmx86API lb: CloudapiLbAPI locations: CloudapiLocationsAPI + pcidevice: CloudapiPcideviceAPI rg: CloudapiRgAPI + security_group: CloudapiSecurityGroupAPI + sep: CloudapiSepAPI stack: CloudapiStackAPI + storage_policy: CloudapiStoragePolicyAPI tasks: CloudapiTasksAPI + trunk: CloudapiTrunkAPI user: CloudapiUserAPI + vfpool: CloudapiVfpoolAPI + vgpu: CloudapiVgpuAPI vins: CloudapiVinsAPI + zone: CloudapiZoneAPI diff --git a/src/dynamix_sdk/api/cloudapi/account/_api.py b/src/dynamix_sdk/api/cloudapi/account/_api.py index 35b8bb7..5dbe60f 100644 --- a/src/dynamix_sdk/api/cloudapi/account/_api.py +++ b/src/dynamix_sdk/api/cloudapi/account/_api.py @@ -5,6 +5,7 @@ from .delete_user import * from .disable import * from .enable import * from .get import * +from .get_resource_consumption import * from .list import * from .list_deleted import * from .restore import * @@ -20,6 +21,7 @@ class CloudapiAccountAPI( CloudapiAccountDisableProtocol, CloudapiAccountEnableProtocol, CloudapiAccountGetProtocol, + CloudapiAccountGetResourceConsumptionProtocol, CloudapiAccountListDeletedProtocol, CloudapiAccountListProtocol, CloudapiAccountRestoreProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/account/get.py b/src/dynamix_sdk/api/cloudapi/account/get.py index fec6ae2..d4fa0d1 100644 --- a/src/dynamix_sdk/api/cloudapi/account/get.py +++ b/src/dynamix_sdk/api/cloudapi/account/get.py @@ -25,6 +25,7 @@ class CloudapiAccountGetResultModel(_base.BaseAPIResultModel): resource_types: list[_nested.AccountResourceType] send_access_emails: bool status: _nested.AccountStatus + storage_policy_ids: list[int] uniq_pools: list[str] updated_timestamp: int version: int diff --git a/src/dynamix_sdk/api/cloudapi/account/get_resource_consumption.py b/src/dynamix_sdk/api/cloudapi/account/get_resource_consumption.py new file mode 100644 index 0000000..261c90d --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/account/get_resource_consumption.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiAccountGetResourceConsumptionResultModel( + _base.BaseAPIResultModel, +): + id: int + consumed: _nested.ResourceCountersAPIResultNM + reserved: _nested.ResourceCountersAPIResultNM + quotas: _nested.TenantQuotasForResourceConsumptionAPIResultNM + + +class CloudapiAccountGetResourceConsumptionProtocol( + _base.BasePostAPIFunctionProtocol, +): + def get_resource_consumption( + self, + *, + account_id: int, + ) -> CloudapiAccountGetResourceConsumptionResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/account/list.py b/src/dynamix_sdk/api/cloudapi/account/list.py index dcdcbba..feb4208 100644 --- a/src/dynamix_sdk/api/cloudapi/account/list.py +++ b/src/dynamix_sdk/api/cloudapi/account/list.py @@ -3,7 +3,7 @@ import dynamix_sdk.api._nested as _nested class CloudapiAccountListResultModel(_base.BaseAPIResultModel): - data: list[_nested.AccountAPIResultNM] + data: list[_nested.AccountForCAAPIResultNM] entry_count: int @@ -14,6 +14,7 @@ class CloudapiAccountListProtocol(_base.BasePostAPIFunctionProtocol): access_type: None | _nested.AccessType = None, id: None | int = None, name: None | str = None, + zone_id: None | int = None, page_number: None | int = None, page_size: None | int = None, sort_by: None | str = None, diff --git a/src/dynamix_sdk/api/cloudapi/account/list_deleted.py b/src/dynamix_sdk/api/cloudapi/account/list_deleted.py index 1c5fa1d..d1b6270 100644 --- a/src/dynamix_sdk/api/cloudapi/account/list_deleted.py +++ b/src/dynamix_sdk/api/cloudapi/account/list_deleted.py @@ -3,7 +3,7 @@ import dynamix_sdk.api._nested as _nested class CloudapiAccountListDeletedResultModel(_base.BaseAPIResultModel): - data: list[_nested.AccountAPIResultNM] + data: list[_nested.AccountForCAAPIResultNM] entry_count: int diff --git a/src/dynamix_sdk/api/cloudapi/account/update.py b/src/dynamix_sdk/api/cloudapi/account/update.py index 18e9261..b8f1326 100644 --- a/src/dynamix_sdk/api/cloudapi/account/update.py +++ b/src/dynamix_sdk/api/cloudapi/account/update.py @@ -14,9 +14,9 @@ class CloudapiAccountUpdateProtocol(_base.BasePostAPIFunctionProtocol): ext_traffic_quota: None | int = None, gpu_count_quota: None | int = None, name: None | str = None, - public_ip_count_quota: None | int = None, + ext_ip_count_quota: None | int = None, ram_size_quota_mb: None | int = None, - send_access_emails: None | bool = None, + send_access_emails: bool = False, storage_size_quota_gb: None | int = None, uniq_pools: None | list[str] = None, description: str | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/audit/_api.py b/src/dynamix_sdk/api/cloudapi/audit/_api.py index e5f263c..d68e977 100644 --- a/src/dynamix_sdk/api/cloudapi/audit/_api.py +++ b/src/dynamix_sdk/api/cloudapi/audit/_api.py @@ -1,9 +1,11 @@ import dynamix_sdk.base as _base from .get import * +from .list import * class CloudapiAuditAPI( _base.BaseAPI, CloudapiAuditGetProtocol, + CloudapiAuditListProtocol, ): pass diff --git a/src/dynamix_sdk/api/cloudapi/audit/get.py b/src/dynamix_sdk/api/cloudapi/audit/get.py index 38d2f28..9c96275 100644 --- a/src/dynamix_sdk/api/cloudapi/audit/get.py +++ b/src/dynamix_sdk/api/cloudapi/audit/get.py @@ -1,27 +1,12 @@ +import dynamix_sdk.api._nested as _nested import dynamix_sdk.base as _base -class CloudapiAuditGetResultModel(_base.BaseAPIResultModel): - args: str - api_url_path: str - guid: str - kwargs: str - client_ip_addr: str - execution_time_sec: float - result: str - status_code: int - request_timestamp: float - response_timestamp: float - user_name: str - request_datetime_iso8601: str - - @property - def request_datetime(self): - return self._get_datetime_from_timestamp(self.request_timestamp) - - @property - def response_datetime(self): - return self._get_datetime_from_timestamp(self.response_timestamp) +class CloudapiAuditGetResultModel( + _base.BaseAPIResultModel, + _nested.AuditAPIResultNM, +): + pass class CloudapiAuditGetProtocol(_base.BasePostAPIFunctionProtocol): diff --git a/src/dynamix_sdk/api/cloudapi/audit/list.py b/src/dynamix_sdk/api/cloudapi/audit/list.py new file mode 100644 index 0000000..15c246f --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/audit/list.py @@ -0,0 +1,35 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiAuditListResultModel(_base.BaseAPIResultModel): + data: list[_nested.AuditAPIResultNM] + entry_count: int + + +class CloudapiAuditListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + api_url_path: str | None = None, + bservice_id: int | None = None, + exclude_audit_lines: bool = False, + flip_group_id: int | None = None, + request_id: str | None = None, + k8s_id: int | None = None, + lb_id: int | None = None, + max_status_code: int | None = None, + min_status_code: int | None = None, + page_number: int = 1, + page_size: int = 100, + request_timestamp_end: int | None = None, + request_timestamp_start: int | None = None, + rg_id: int | None = None, + sep_id: int | None = None, + sort_by: str | None = None, + user_name: str | None = None, + vins_id: int | None = None, + vm_id: int | None = None, + ) -> CloudapiAuditListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/bservice/_api.py b/src/dynamix_sdk/api/cloudapi/bservice/_api.py index f5a61e0..6a786af 100644 --- a/src/dynamix_sdk/api/cloudapi/bservice/_api.py +++ b/src/dynamix_sdk/api/cloudapi/bservice/_api.py @@ -18,7 +18,12 @@ from .group_update_extnet import * from .group_update_vins import * from .list import * from .list_deleted import * +from .migrate_to_zone import * from .restore import * +from .snapshot_create import * +from .snapshot_delete import * +from .snapshot_list import * +from .snapshot_rollback import * from .start import * from .stop import * @@ -44,7 +49,12 @@ class CloudapiBserviceAPI( CloudapiBserviceGroupUpdateVinsProtocol, CloudapiBserviceListDeletedProtocol, CloudapiBserviceListProtocol, + CloudapiBserviceMigrateToZoneProtocol, CloudapiBserviceRestoreProtocol, + CloudapiBserviceSnapshotCreateProtocol, + CloudapiBserviceSnapshotDeleteProtocol, + CloudapiBserviceSnapshotListProtocol, + CloudapiBserviceSnapshotRollbackProtocol, CloudapiBserviceStartProtocol, CloudapiBserviceStopProtocol, ): diff --git a/src/dynamix_sdk/api/cloudapi/bservice/create.py b/src/dynamix_sdk/api/cloudapi/bservice/create.py index a61745b..1133e96 100644 --- a/src/dynamix_sdk/api/cloudapi/bservice/create.py +++ b/src/dynamix_sdk/api/cloudapi/bservice/create.py @@ -11,8 +11,8 @@ class CloudapiBserviceCreateProtocol(_base.BasePostAPIFunctionProtocol): *, name: str, rg_id: int, - ssh_user: str | None = None, - ssh_key: str | None = None, + ssh_user_name: str | None = None, + ssh_public_key: str | None = None, zone_id: int | None = None, ) -> CloudapiBserviceCreateResultInt: ... diff --git a/src/dynamix_sdk/api/cloudapi/bservice/get.py b/src/dynamix_sdk/api/cloudapi/bservice/get.py index 3d3f074..69c3912 100644 --- a/src/dynamix_sdk/api/cloudapi/bservice/get.py +++ b/src/dynamix_sdk/api/cloudapi/bservice/get.py @@ -24,8 +24,8 @@ class CloudapiBserviceGetResultModel(_base.BaseAPIResultModel): rg_id: int rg_name: str snapshots: list[_nested.BServiceSnapshotAPIResultNM] - ssh_key: str - ssh_user: str + ssh_public_key: str + ssh_user_name: str status: _nested.BServiceStatus tech_status: _nested.BServiceTechStatus updated_by: str diff --git a/src/dynamix_sdk/api/cloudapi/bservice/group_add.py b/src/dynamix_sdk/api/cloudapi/bservice/group_add.py index 3565e19..c36fbfd 100644 --- a/src/dynamix_sdk/api/cloudapi/bservice/group_add.py +++ b/src/dynamix_sdk/api/cloudapi/bservice/group_add.py @@ -14,10 +14,11 @@ class CloudapiBserviceGroupAddProtocol(_base.BasePostAPIFunctionProtocol): vm_count: int, cpu_count: int, boot_disk_size_gb: int, - driver: _nested.Driver, image_id: int, + driver: _nested.Driver, name: str, ram_size_mb: int, + storage_policy_id: int | None = None, ci_user_data: str | None = None, extnet_ids: list[int] | None = None, role: str | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/bservice/list.py b/src/dynamix_sdk/api/cloudapi/bservice/list.py index 844a59d..e802d7b 100644 --- a/src/dynamix_sdk/api/cloudapi/bservice/list.py +++ b/src/dynamix_sdk/api/cloudapi/bservice/list.py @@ -15,6 +15,7 @@ class CloudapiBserviceListProtocol(_base.BasePostAPIFunctionProtocol): account_name: str | None = None, id: int | None = None, name: str | None = None, + zone_id: int | None = None, page_number: int | None = None, page_size: int | None = None, rg_id: int | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/bservice/migrate_to_zone.py b/src/dynamix_sdk/api/cloudapi/bservice/migrate_to_zone.py new file mode 100644 index 0000000..373fdd4 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/bservice/migrate_to_zone.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiBserviceMigrateToZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiBserviceMigrateToZoneProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_to_zone( + self, + *, + bservice_id: int, + zone_id: int, + ) -> CloudapiBserviceMigrateToZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/bservice/snapshot_create.py b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_create.py new file mode 100644 index 0000000..0a7b0e4 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_create.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiBserviceSnapshotCreateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiBserviceSnapshotCreateProtocol( + _base.BasePostAPIFunctionProtocol, +): + def snapshot_create( + self, + *, + bservice_id: int, + label: str, + ) -> CloudapiBserviceSnapshotCreateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/bservice/snapshot_delete.py b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_delete.py new file mode 100644 index 0000000..afbbd73 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_delete.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiBserviceSnapshotDeleteResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiBserviceSnapshotDeleteProtocol( + _base.BasePostAPIFunctionProtocol, +): + def snapshot_delete( + self, + *, + bservice_id: int, + label: str, + ) -> CloudapiBserviceSnapshotDeleteResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/bservice/snapshot_list.py b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_list.py new file mode 100644 index 0000000..649eeb5 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_list.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiBserviceSnapshotListResultModel(_base.BaseAPIResultModel): + data: list[_nested.BServiceSnapshotAPIResultNM] + entry_count: int + + +class CloudapiBserviceSnapshotListProtocol(_base.BasePostAPIFunctionProtocol): + def snapshot_list( + self, + *, + bservice_id: int, + ) -> CloudapiBserviceSnapshotListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/bservice/snapshot_rollback.py b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_rollback.py new file mode 100644 index 0000000..28ce445 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/bservice/snapshot_rollback.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiBserviceSnapshotRollbackResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiBserviceSnapshotRollbackProtocol( + _base.BasePostAPIFunctionProtocol, +): + def snapshot_rollback( + self, + *, + bservice_id: int, + label: str, + ) -> CloudapiBserviceSnapshotRollbackResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/_api.py b/src/dynamix_sdk/api/cloudapi/compute/_api.py index 378d8b8..77bbb08 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/_api.py +++ b/src/dynamix_sdk/api/cloudapi/compute/_api.py @@ -1,4 +1,5 @@ import dynamix_sdk.base as _base +from .abort_shared_snapshot_merge import * from .affinity_label_remove import * from .affinity_label_set import * from .affinity_relations import * @@ -8,19 +9,41 @@ from .affinity_rules_clear import * from .anti_affinity_rule_add import * from .anti_affinity_rule_remove import * from .anti_affinity_rules_clear import * +from .attach_gpu import * +from .attach_pci_device import * +from .boot_disk_set import * from .cd_eject import * from .cd_insert import * from .change_ip import * +from .change_link_state import * +from .change_mac import * +from .change_mtu import * +from .change_security_groups import * from .clone import * +from .clone_abort import * +from .create_template import * from .delete import * from .delete_custom_fields import * +from .detach_gpu import * +from .detach_pci_device import * +from .disable import * from .disk_add import * from .disk_attach import * +from .disk_migrate import * from .disk_del import * from .disk_detach import * -from .disk_resize import * +from .disk_switch_to_replication import * +from .enable import * from .get import * +from .get_console_url import * +from .guest_agent_disable import * +from .guest_agent_enable import * +from .guest_agent_execute import * +from .guest_agent_feature_update import * from .list import * +from .list_deleted import * +from .migrate_to_zone import * +from .move_to_rg import * from .net_attach import * from .net_detach import * from .pause import * @@ -28,9 +51,12 @@ from .pfw_add import * from .pfw_del import * from .pfw_list import * from .pin_to_stack import * +from .power_cycle import * from .reboot import * from .redeploy import * +from .reset import * from .resize import * +from .restore import * from .resume import * from .set_custom_fields import * from .snapshot_create import * @@ -50,6 +76,7 @@ from .user_update import * class CloudapiComputeAPI( _base.BaseAPI, + CloudapiComputeAbortSharedSnapshotMergeProtocol, CloudapiComputeAffinityLabelRemoveProtocol, CloudapiComputeAffinityLabelSetProtocol, CloudapiComputeAffinityRelationsProtocol, @@ -59,19 +86,41 @@ class CloudapiComputeAPI( CloudapiComputeAntiAffinityRuleAddProtocol, CloudapiComputeAntiAffinityRuleRemoveProtocol, CloudapiComputeAntiAffinityRulesClearProtocol, + CloudapiComputeAttachGpuProtocol, + CloudapiComputeAttachPciDeviceProtocol, + CloudapiComputeBootDiskSetProtocol, CloudapiComputeCdEjectProtocol, CloudapiComputeCdInsertProtocol, CloudapiComputeChangeIpProtocol, + CloudapiComputeChangeLinkStateProtocol, + CloudapiComputeChangeMacProtocol, + CloudapiComputeChangeMtuProtocol, + CloudapiComputeChangeSecurityGroupsProtocol, + CloudapiComputeCloneAbortProtocol, CloudapiComputeCloneProtocol, + CloudapiComputeCreateTemplateProtocol, CloudapiComputeDeleteCustomFieldsProtocol, CloudapiComputeDeleteProtocol, + CloudapiComputeDetachGpuProtocol, + CloudapiComputeDetachPciDeviceProtocol, + CloudapiComputeDisableProtocol, CloudapiComputeDiskAddProtocol, CloudapiComputeDiskAttachProtocol, CloudapiComputeDiskDelProtocol, CloudapiComputeDiskDetachProtocol, - CloudapiComputeDiskResizeProtocol, + CloudapiComputeDiskMigrateProtocol, + CloudapiComputeDiskSwitchToReplicationProtocol, + CloudapiComputeEnableProtocol, + CloudapiComputeGetConsoleUrlProtocol, CloudapiComputeGetProtocol, + CloudapiComputeGuestAgentDisableProtocol, + CloudapiComputeGuestAgentEnableProtocol, + CloudapiComputeGuestAgentExecuteProtocol, + CloudapiComputeGuestAgentFeatureUpdateProtocol, CloudapiComputeListProtocol, + CloudapiComputeListDeletedProtocol, + CloudapiComputeMigrateToZoneProtocol, + CloudapiComputeMoveToRgProtocol, CloudapiComputeNetAttachProtocol, CloudapiComputeNetDetachProtocol, CloudapiComputePauseProtocol, @@ -79,9 +128,12 @@ class CloudapiComputeAPI( CloudapiComputePfwDelProtocol, CloudapiComputePfwListProtocol, CloudapiComputePinToStackProtocol, + CloudapiComputePowerCycleProtocol, CloudapiComputeRebootProtocol, CloudapiComputeRedeployProtocol, + CloudapiComputeResetProtocol, CloudapiComputeResizeProtocol, + CloudapiComputeRestoreProtocol, CloudapiComputeResumeProtocol, CloudapiComputeSetCustomFieldsProtocol, CloudapiComputeSnapshotCreateProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/compute/abort_shared_snapshot_merge.py b/src/dynamix_sdk/api/cloudapi/compute/abort_shared_snapshot_merge.py new file mode 100644 index 0000000..9cad96b --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/abort_shared_snapshot_merge.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeAbortSharedSnapshotMergeResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudapiComputeAbortSharedSnapshotMergeProtocol( + _base.BasePostAPIFunctionProtocol +): + def abort_shared_snapshot_merge( + self, + *, + vm_id: int, + label: str, + ) -> CloudapiComputeAbortSharedSnapshotMergeResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/attach_gpu.py b/src/dynamix_sdk/api/cloudapi/compute/attach_gpu.py new file mode 100644 index 0000000..0959ce8 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/attach_gpu.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeAttachGpuResultInt(_base.BaseAPIResultInt): + pass + + +class CloudapiComputeAttachGpuProtocol(_base.BasePostAPIFunctionProtocol): + def attach_gpu( + self, + *, + vm_id: int, + vgpu_id: int, + ) -> CloudapiComputeAttachGpuResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/attach_pci_device.py b/src/dynamix_sdk/api/cloudapi/compute/attach_pci_device.py new file mode 100644 index 0000000..dfcb906 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/attach_pci_device.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeAttachPciDeviceResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeAttachPciDeviceProtocol( + _base.BasePostAPIFunctionProtocol, +): + def attach_pci_device( + self, + *, + vm_id: int, + pci_device_id: int, + ) -> CloudapiComputeAttachPciDeviceResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/boot_disk_set.py b/src/dynamix_sdk/api/cloudapi/compute/boot_disk_set.py new file mode 100644 index 0000000..63f0070 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/boot_disk_set.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeBootDiskSetResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeBootDiskSetProtocol(_base.BasePostAPIFunctionProtocol): + def boot_disk_set( + self, + *, + vm_id: int, + disk_id: int, + ) -> CloudapiComputeBootDiskSetResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/change_link_state.py b/src/dynamix_sdk/api/cloudapi/compute/change_link_state.py new file mode 100644 index 0000000..8c997c3 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/change_link_state.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiComputeChangeLinkStateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeChangeLinkStateProtocol( + _base.BasePostAPIFunctionProtocol +): + def change_link_state( + self, + *, + interface: str, + state: _nested.LinkState, + vm_id: int, + ) -> CloudapiComputeChangeLinkStateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/change_mac.py b/src/dynamix_sdk/api/cloudapi/compute/change_mac.py new file mode 100644 index 0000000..b42d4de --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/change_mac.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeChangeMacResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeChangeMacProtocol(_base.BasePostAPIFunctionProtocol): + def change_mac( + self, + *, + vm_id: int, + current_mac: str, + new_mac: str, + ) -> CloudapiComputeChangeMacResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/change_mtu.py b/src/dynamix_sdk/api/cloudapi/compute/change_mtu.py new file mode 100644 index 0000000..62dc776 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/change_mtu.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeChangeMtuResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeChangeMtuProtocol( + _base.BasePostAPIFunctionProtocol +): + def change_mtu( + self, + *, + vm_id: int, + interface: str, + mtu: int, + ) -> CloudapiComputeChangeMtuResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/change_security_groups.py b/src/dynamix_sdk/api/cloudapi/compute/change_security_groups.py new file mode 100644 index 0000000..a675ca0 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/change_security_groups.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeChangeSecurityGroupsResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeChangeSecurityGroupsProtocol( + _base.BasePostAPIFunctionProtocol +): + def change_security_groups( + self, + *, + vm_id: int, + interface: str, + security_group_ids: list[int] | None = None, + security_group_mode: bool | None = None, + ) -> CloudapiComputeChangeSecurityGroupsResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/clone.py b/src/dynamix_sdk/api/cloudapi/compute/clone.py index 2e97e64..ace847f 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/clone.py +++ b/src/dynamix_sdk/api/cloudapi/compute/clone.py @@ -1,7 +1,7 @@ import dynamix_sdk.base as _base -class CloudapiComputeCloneResultInt(_base.BaseAPIResultInt): +class CloudapiComputeCloneResultStr(_base.BaseAPIResultStr): pass @@ -12,7 +12,10 @@ class CloudapiComputeCloneProtocol(_base.BasePostAPIFunctionProtocol): vm_id: int, name: str, force: bool = False, + storage_policy_id: int, snapshot_timestamp: int | None = None, snapshot_name: str | None = None, - ) -> CloudapiComputeCloneResultInt: + sep_pool_name: str | None = None, + sep_id: int | None = None, + ) -> CloudapiComputeCloneResultStr: ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/clone_abort.py b/src/dynamix_sdk/api/cloudapi/compute/clone_abort.py new file mode 100644 index 0000000..a54d207 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/clone_abort.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeCloneAbortResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudapiComputeCloneAbortProtocol( + _base.BasePostAPIFunctionProtocol +): + def clone_abort( + self, + *, + vm_id: int, + ) -> CloudapiComputeCloneAbortResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/create_template.py b/src/dynamix_sdk/api/cloudapi/compute/create_template.py new file mode 100644 index 0000000..87cfd95 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/create_template.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeCreateTemplateResultStr(_base.BaseAPIResultStr): + pass + + +class CloudapiComputeCreateTemplateProtocol(_base.BasePostAPIFunctionProtocol): + def create_template( + self, + *, + vm_id: int, + name: str + ) -> CloudapiComputeCreateTemplateResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/detach_gpu.py b/src/dynamix_sdk/api/cloudapi/compute/detach_gpu.py new file mode 100644 index 0000000..e56f095 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/detach_gpu.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeDetachGpuResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeDetachGpuProtocol(_base.BasePostAPIFunctionProtocol): + def detach_gpu( + self, + *, + vm_id: int, + vgpu_id: int | None = None, + ) -> CloudapiComputeDetachGpuResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/detach_pci_device.py b/src/dynamix_sdk/api/cloudapi/compute/detach_pci_device.py new file mode 100644 index 0000000..eb9fd37 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/detach_pci_device.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeDetachPciDeviceResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeDetachPciDeviceProtocol( + _base.BasePostAPIFunctionProtocol, +): + def detach_pci_device( + self, + *, + vm_id: int, + pci_device_id: int, + ) -> CloudapiComputeDetachPciDeviceResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/disable.py b/src/dynamix_sdk/api/cloudapi/compute/disable.py new file mode 100644 index 0000000..c970e14 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/disable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeDisableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeDisableProtocol( + _base.BasePostAPIFunctionProtocol +): + def disable( + self, + *, + vm_id: int, + ) -> CloudapiComputeDisableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/disk_add.py b/src/dynamix_sdk/api/cloudapi/compute/disk_add.py index ab6e59a..d2be762 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/disk_add.py +++ b/src/dynamix_sdk/api/cloudapi/compute/disk_add.py @@ -13,11 +13,13 @@ class CloudapiComputeDiskAddProtocol(_base.BasePostAPIFunctionProtocol): vm_id: int, name: str, disk_size_gb: int, + storage_policy_id: int, disk_type: _nested.DiskType = _nested.DiskType.D, sep_id: int | None = None, sep_pool_name: str | None = None, description: str | None = None, image_id: int | None = None, - + pci_slot_num_hex: str | None = None, + bus_num_hex: str | None = None, ) -> CloudapiComputeDiskAddResultInt: ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/disk_attach.py b/src/dynamix_sdk/api/cloudapi/compute/disk_attach.py index 39af539..b0f47c6 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/disk_attach.py +++ b/src/dynamix_sdk/api/cloudapi/compute/disk_attach.py @@ -13,5 +13,7 @@ class CloudapiComputeDiskAttachProtocol(_base.BasePostAPIFunctionProtocol): vm_id: int, disk_id: int, disk_type: _nested.DiskType = _nested.DiskType.D, + pci_slot_num_hex: str | None = None, + bus_num_hex: str | None = None, ) -> CloudapiComputeDiskAttachResultBool: ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/disk_migrate.py b/src/dynamix_sdk/api/cloudapi/compute/disk_migrate.py new file mode 100644 index 0000000..8b4c552 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/disk_migrate.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeDiskMigrateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeDiskMigrateProtocol( + _base.BasePostAPIFunctionProtocol +): + def disk_migrate( + self, + *, + vm_id: int, + disk_id: int, + target_disk_id: int, + mode: int = 1, + ) -> CloudapiComputeDiskMigrateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/disk_resize.py b/src/dynamix_sdk/api/cloudapi/compute/disk_resize.py deleted file mode 100644 index 0a07f29..0000000 --- a/src/dynamix_sdk/api/cloudapi/compute/disk_resize.py +++ /dev/null @@ -1,16 +0,0 @@ -import dynamix_sdk.base as _base - - -class CloudapiComputeDiskResizeResultBool(_base.BaseAPIResultBool): - pass - - -class CloudapiComputeDiskResizeProtocol(_base.BasePostAPIFunctionProtocol): - def disk_resize( - self, - *, - vm_id: int, - disk_id: int, - disk_size_gb: int, - ) -> CloudapiComputeDiskResizeResultBool: - ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/disk_switch_to_replication.py b/src/dynamix_sdk/api/cloudapi/compute/disk_switch_to_replication.py new file mode 100644 index 0000000..9ec0eba --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/disk_switch_to_replication.py @@ -0,0 +1,20 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeDiskSwitchToReplicationResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudapiComputeDiskSwitchToReplicationProtocol( + _base.BasePostAPIFunctionProtocol, +): + def disk_switch_to_replication( + self, + *, + vm_id: int, + disk_id: int, + stop_replication: bool = False, + ) -> CloudapiComputeDiskSwitchToReplicationResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/enable.py b/src/dynamix_sdk/api/cloudapi/compute/enable.py new file mode 100644 index 0000000..ca6dcf5 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/enable.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeEnableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeEnableProtocol(_base.BasePostAPIFunctionProtocol): + def enable( + self, + *, + vm_id: int, + ) -> CloudapiComputeEnableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/get.py b/src/dynamix_sdk/api/cloudapi/compute/get.py index 1fa29fb..1402a04 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/get.py +++ b/src/dynamix_sdk/api/cloudapi/compute/get.py @@ -1,5 +1,3 @@ -import typing as _typing - import dynamix_sdk.base as _base import dynamix_sdk.api._nested as _nested @@ -15,6 +13,8 @@ class CloudapiComputeGetResultModel(_base.BaseAPIResultModel): arch: str auto_start: bool boot_disk_size_gb: int + boot_image_id: int + boot_loader_metaiso: _nested.BootLoaderMetaisoAPIResultNM | None boot_loader_type: _nested.BootLoaderType boot_mode: _nested.BootMode boot_order: list[_nested.BootDevice] @@ -39,14 +39,14 @@ class CloudapiComputeGetResultModel(_base.BaseAPIResultModel): hot_resize: bool hp_backed: bool id: int - image_id: int + image_id: None | int image_name: None | str interfaces: list[_nested.InterfaceForComputeGetAPIResultNM] live_migration_job_id: int lock_status: _nested.LockStatus manager_id: int manager_type: str - migration_job: int + migration_job_id: int milestones: int name: str need_reboot: bool @@ -54,6 +54,7 @@ class CloudapiComputeGetResultModel(_base.BaseAPIResultModel): numa_affinity: _nested.NumaAffinity numa_node_id: int os_users: list[_nested.OSUserAPIResultNM] + os_version: str pinned_to_stack: bool preferred_cpu_cores: list[int] ram_size_mb: int @@ -63,17 +64,15 @@ class CloudapiComputeGetResultModel(_base.BaseAPIResultModel): rg_id: int rg_name: str snapshot_sets: list[_nested.SnapshotSetAPIResultNM] - stateless_sep_id: int - stateless_sep_type: str + stateless_sep_id: int | None = None + stateless_sep_type: str | None = None status: _nested.VMStatus tags: dict tech_status: _nested.VMTechStatus updated_by: str updated_timestamp: int user_managed: bool - vgpus: list[dict[str, _typing.Any]] - virtual_image_id: int - virtual_image_name: None | str + vgpus: list[_nested.VGPUAPIResultNM] vm_ci_id: int vnc_password: str guest_agent: _nested.GuestAgentAPIResultNM diff --git a/src/dynamix_sdk/api/cloudapi/compute/get_console_url.py b/src/dynamix_sdk/api/cloudapi/compute/get_console_url.py new file mode 100644 index 0000000..1d259b9 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/get_console_url.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeGetConsoleUrlResultStr(_base.BaseAPIResultStr): + pass + + +class CloudapiComputeGetConsoleUrlProtocol(_base.BasePostAPIFunctionProtocol): + def get_console_url( + self, + *, + vm_id: int, + ) -> CloudapiComputeGetConsoleUrlResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/guest_agent_disable.py b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_disable.py new file mode 100644 index 0000000..deaa2d6 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_disable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeGuestAgentDisableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeGuestAgentDisableProtocol( + _base.BasePostAPIFunctionProtocol +): + def guest_agent_disable( + self, + *, + vm_id: int, + ) -> CloudapiComputeGuestAgentDisableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/guest_agent_enable.py b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_enable.py new file mode 100644 index 0000000..1a68a94 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_enable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeGuestAgentEnableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeGuestAgentEnableProtocol( + _base.BasePostAPIFunctionProtocol +): + def guest_agent_enable( + self, + *, + vm_id: int, + ) -> CloudapiComputeGuestAgentEnableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/guest_agent_execute.py b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_execute.py new file mode 100644 index 0000000..5207e77 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_execute.py @@ -0,0 +1,21 @@ +import typing as _typing +import dynamix_sdk.base as _base + + +class CloudapiComputeGuestAgentExecuteResultModel( + _base.BaseAPIResultModel, +): + exec_result: dict + + +class CloudapiComputeGuestAgentExecuteProtocol( + _base.BasePostAPIFunctionProtocol +): + def guest_agent_execute( + self, + *, + vm_id: int, + cmd: str, + args: dict[str, _typing.Any], + ) -> CloudapiComputeGuestAgentExecuteResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/guest_agent_feature_update.py b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_feature_update.py new file mode 100644 index 0000000..00c9af6 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/guest_agent_feature_update.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeGuestAgentFeatureUpdateResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudapiComputeGuestAgentFeatureUpdateProtocol( + _base.BasePostAPIFunctionProtocol +): + def guest_agent_feature_update( + self, + *, + vm_id: int, + ) -> CloudapiComputeGuestAgentFeatureUpdateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/list.py b/src/dynamix_sdk/api/cloudapi/compute/list.py index 1275be9..c48ef9e 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/list.py +++ b/src/dynamix_sdk/api/cloudapi/compute/list.py @@ -18,6 +18,7 @@ class CloudapiComputeListProtocol(_base.BasePostAPIFunctionProtocol): include_deleted: bool = False, ip_addr: str | None = None, name: str | None = None, + zone_id: int | None = None, page_number: int | None = None, page_size: int | None = None, rg_id: int | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/compute/list_deleted.py b/src/dynamix_sdk/api/cloudapi/compute/list_deleted.py new file mode 100644 index 0000000..8f16758 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/list_deleted.py @@ -0,0 +1,27 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiComputeListDeletedResultModel(_base.BaseAPIResultModel): + data: list[_nested.VMAPIResultNM] + entry_count: int + + +class CloudapiComputeListDeletedProtocol(_base.BasePostAPIFunctionProtocol): + def list_deleted( + self, + *, + id: int | None = None, + name: str | None = None, + account_id: int | None = None, + rg_name: str | None = None, + rg_id: int | None = None, + tech_status: _nested.VMTechStatus | None = None, + ip_addr: str | None = None, + ext_net_name: str | None = None, + ext_net_id: int | None = None, + page_number: int | None = None, + page_size: int | None = None, + sort_by: str | None = None, + ) -> CloudapiComputeListDeletedResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/migrate_to_zone.py b/src/dynamix_sdk/api/cloudapi/compute/migrate_to_zone.py new file mode 100644 index 0000000..4b0b29e --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/migrate_to_zone.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeMigrateToZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeMigrateToZoneProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_to_zone( + self, + *, + vm_id: int, + zone_id: int, + ) -> CloudapiComputeMigrateToZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/move_to_rg.py b/src/dynamix_sdk/api/cloudapi/compute/move_to_rg.py new file mode 100644 index 0000000..3cdbead --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/move_to_rg.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeMoveToRgResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeMoveToRgProtocol(_base.BasePostAPIFunctionProtocol): + def move_to_rg( + self, + *, + vm_id: int, + rg_id: int, + new_vm_name: str | None = None, + auto_start: bool = False, + force_stop: bool = False, + ) -> CloudapiComputeMoveToRgResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/net_attach.py b/src/dynamix_sdk/api/cloudapi/compute/net_attach.py index 6938286..ec0a208 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/net_attach.py +++ b/src/dynamix_sdk/api/cloudapi/compute/net_attach.py @@ -16,6 +16,9 @@ class CloudapiComputeNetAttachProtocol(_base.BasePostAPIFunctionProtocol): vm_id: int, net_type: _nested.NetType, net_id: int, + security_group_ids: None | list[int] = None, + security_group_mode: bool = False, + enabled: bool = True, ip_addr: None | str = None, mtu: None | int = None, mac: None | str = None, diff --git a/src/dynamix_sdk/api/cloudapi/compute/power_cycle.py b/src/dynamix_sdk/api/cloudapi/compute/power_cycle.py new file mode 100644 index 0000000..00a166a --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/power_cycle.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputePowerCycleResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputePowerCycleProtocol(_base.BasePostAPIFunctionProtocol): + def power_cycle( + self, + *, + vm_id: int, + ) -> CloudapiComputePowerCycleResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/redeploy.py b/src/dynamix_sdk/api/cloudapi/compute/redeploy.py index 58a3187..c96659c 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/redeploy.py +++ b/src/dynamix_sdk/api/cloudapi/compute/redeploy.py @@ -11,6 +11,7 @@ class CloudapiComputeRedeployProtocol(_base.BasePostAPIFunctionProtocol): self, *, vm_id: int, + storage_policy_id: int, start: bool = False, boot_disk_size_gb: int | None = None, data_disks_change_mode: _nested.DataDisksChangeMode = ( @@ -18,5 +19,6 @@ class CloudapiComputeRedeployProtocol(_base.BasePostAPIFunctionProtocol): ), force_stop: bool = False, image_id: int | None = None, + os_version: str | None = None, ) -> CloudapiComputeRedeployResultBool: ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/reset.py b/src/dynamix_sdk/api/cloudapi/compute/reset.py new file mode 100644 index 0000000..15c4e27 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/reset.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeResetResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeResetProtocol(_base.BasePostAPIFunctionProtocol): + def reset( + self, + *, + vm_id: int, + ) -> CloudapiComputeResetResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/restore.py b/src/dynamix_sdk/api/cloudapi/compute/restore.py new file mode 100644 index 0000000..dca57a2 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/compute/restore.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiComputeRestoreResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiComputeRestoreProtocol(_base.BasePostAPIFunctionProtocol): + def restore( + self, + *, + vm_id: int, + ) -> CloudapiComputeRestoreResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/compute/update.py b/src/dynamix_sdk/api/cloudapi/compute/update.py index 920c3b4..25a873d 100644 --- a/src/dynamix_sdk/api/cloudapi/compute/update.py +++ b/src/dynamix_sdk/api/cloudapi/compute/update.py @@ -23,5 +23,6 @@ class CloudapiComputeUpdateProtocol(_base.BasePostAPIFunctionProtocol): boot_mode: _nested.BootMode | None = None, network_interface_naming: _nested.NetIfaceNamingTemplate | None = None, hot_resize: bool | None = None, + os_version: str | None = None, ) -> CloudapiComputeUpdateResultBool: ... diff --git a/src/dynamix_sdk/api/cloudapi/disks/_api.py b/src/dynamix_sdk/api/cloudapi/disks/_api.py index 36bf87f..ce1bcd5 100644 --- a/src/dynamix_sdk/api/cloudapi/disks/_api.py +++ b/src/dynamix_sdk/api/cloudapi/disks/_api.py @@ -1,4 +1,5 @@ import dynamix_sdk.base as _base +from .change_disk_storage_policy import * from .create import * from .delete import * from .delete_disks import * @@ -19,6 +20,7 @@ from .unshare import * class CloudapiDisksAPI( _base.BaseAPI, + CloudapiDisksChangeDiskStoragePolicyProtocol, CloudapiDisksCreateProtocol, CloudapiDisksDeleteDisksProtocol, CloudapiDisksDeleteProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/disks/change_disk_storage_policy.py b/src/dynamix_sdk/api/cloudapi/disks/change_disk_storage_policy.py new file mode 100644 index 0000000..432a948 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/disks/change_disk_storage_policy.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiDisksChangeDiskStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiDisksChangeDiskStoragePolicyProtocol( + _base.BasePostAPIFunctionProtocol, +): + def change_disk_storage_policy( + self, + *, + disk_id: int, + storage_policy_id: int, + ) -> CloudapiDisksChangeDiskStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/disks/create.py b/src/dynamix_sdk/api/cloudapi/disks/create.py index 7a08571..c38b174 100644 --- a/src/dynamix_sdk/api/cloudapi/disks/create.py +++ b/src/dynamix_sdk/api/cloudapi/disks/create.py @@ -12,7 +12,7 @@ class CloudapiDisksCreateProtocol(_base.BasePostAPIFunctionProtocol): account_id: int, name: str, size_gb: int, - iops: int = 2000, + storage_policy_id: int, description: str | None = None, sep_id: int | None = None, sep_pool_name: str | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/disks/get.py b/src/dynamix_sdk/api/cloudapi/disks/get.py index 8d7e033..09244cd 100644 --- a/src/dynamix_sdk/api/cloudapi/disks/get.py +++ b/src/dynamix_sdk/api/cloudapi/disks/get.py @@ -33,12 +33,13 @@ class CloudapiDisksGetResultModel(_base.BaseAPIResultModel): sep_type: _nested.SEPType shared: bool size_available: float - size_available: float size_max_gb: int size_used: float snapshots: list[_nested.SnapshotAPIResultNM] status: _nested.DiskStatus + storage_policy_id: int tech_status: _nested.DiskTechStatus + to_clean: bool type: _nested.DiskType updated_by: str vm_id: int | None diff --git a/src/dynamix_sdk/api/cloudapi/disks/list.py b/src/dynamix_sdk/api/cloudapi/disks/list.py index faf453d..ab2b371 100644 --- a/src/dynamix_sdk/api/cloudapi/disks/list.py +++ b/src/dynamix_sdk/api/cloudapi/disks/list.py @@ -23,6 +23,7 @@ class CloudapiDisksListProtocol(_base.BasePostAPIFunctionProtocol): shared: bool | None = None, sort_by: str | None = None, status: _nested.DiskStatus | None = None, + storage_policy_id: int | None = None, type: _nested.DiskType | None = None, ) -> CloudapiDisksListResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/disks/list_unattached.py b/src/dynamix_sdk/api/cloudapi/disks/list_unattached.py index 2e93ec6..1df18af 100644 --- a/src/dynamix_sdk/api/cloudapi/disks/list_unattached.py +++ b/src/dynamix_sdk/api/cloudapi/disks/list_unattached.py @@ -19,6 +19,7 @@ class CloudapiDisksListUnattachedProtocol(_base.BasePostAPIFunctionProtocol): page_size: int | None = None, sep_id: int | None = None, sep_pool_name: str | None = None, + storage_policy_id: int | None = None, sort_by: str | None = None, status: _nested.DiskStatus | None = None, type: _nested.DiskType | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/extnet/get.py b/src/dynamix_sdk/api/cloudapi/extnet/get.py index 63de7ab..2ee9d3d 100644 --- a/src/dynamix_sdk/api/cloudapi/extnet/get.py +++ b/src/dynamix_sdk/api/cloudapi/extnet/get.py @@ -20,7 +20,7 @@ class CloudapiExtnetGetResultModel(_base.BaseAPIResultModel): mtu: int name: str net_ip: str - net_mask: int + net_prefix: int network_ids: _nested.NetworkIDsAPIResultNM ntp_servers: list[str] ovs_bridge: str @@ -29,6 +29,7 @@ class CloudapiExtnetGetResultModel(_base.BaseAPIResultModel): primary_vnfdev_id: int redundant: bool secondary_vnfdev_id: int + security_group_mode: bool shared_with: list[int] status: _nested.ExtNetStatus vlan_id: int diff --git a/src/dynamix_sdk/api/cloudapi/extnet/list.py b/src/dynamix_sdk/api/cloudapi/extnet/list.py index d710f19..4e4c527 100644 --- a/src/dynamix_sdk/api/cloudapi/extnet/list.py +++ b/src/dynamix_sdk/api/cloudapi/extnet/list.py @@ -16,6 +16,7 @@ class CloudapiExtnetListProtocol(_base.BasePostAPIFunctionProtocol): name: str | None = None, net_ip: str | None = None, ovs_bridge: str | None = None, + zone_id: int | None = None, page_number: int | None = None, page_size: int | None = None, sort_by: str | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/flipgroup/create.py b/src/dynamix_sdk/api/cloudapi/flipgroup/create.py index bea14db..e8767a0 100644 --- a/src/dynamix_sdk/api/cloudapi/flipgroup/create.py +++ b/src/dynamix_sdk/api/cloudapi/flipgroup/create.py @@ -7,7 +7,7 @@ class CloudapiFlipgroupCreateResultModel(_base.BaseAPIResultModel): id: int ip_addr: str name: str - net_mask: int + net_prefix: int class CloudapiFlipgroupCreateProtocol(_base.BasePostAPIFunctionProtocol): diff --git a/src/dynamix_sdk/api/cloudapi/image/_api.py b/src/dynamix_sdk/api/cloudapi/image/_api.py index 9cc2f4e..c34cac0 100644 --- a/src/dynamix_sdk/api/cloudapi/image/_api.py +++ b/src/dynamix_sdk/api/cloudapi/image/_api.py @@ -1,4 +1,5 @@ import dynamix_sdk.base as _base +from .change_storage_policy import * from .create import * from .create_virtual import * from .delete import * @@ -10,6 +11,7 @@ from .rename import * class CloudapiImageAPI( _base.BaseAPI, + CloudapiImageChangeStoragePolicyProtocol, CloudapiImageCreateProtocol, CloudapiImageCreateVirtualProtocol, CloudapiImageDeleteProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/image/change_storage_policy.py b/src/dynamix_sdk/api/cloudapi/image/change_storage_policy.py new file mode 100644 index 0000000..bcaa3a9 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/image/change_storage_policy.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiImageChangeStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiImageChangeStoragePolicyProtocol( + _base.BasePostAPIFunctionProtocol, +): + def change_storage_policy( + self, + *, + image_id: int, + storage_policy_id: int, + ) -> CloudapiImageChangeStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/image/create.py b/src/dynamix_sdk/api/cloudapi/image/create.py index f40fe85..640da29 100644 --- a/src/dynamix_sdk/api/cloudapi/image/create.py +++ b/src/dynamix_sdk/api/cloudapi/image/create.py @@ -12,10 +12,10 @@ class CloudapiImageCreateProtocol(_base.BasePostAPIFunctionProtocol): *, account_id: int, boot_mode: _nested.BootMode, - drivers: list[_nested.Driver], boot_loader_type: _nested.BootLoaderType, name: str, download_url: str, + storage_policy_id: int, hot_resize: bool = False, network_interface_naming: _nested.NetIfaceNamingTemplate = ( _nested.NetIfaceNamingTemplate.ens diff --git a/src/dynamix_sdk/api/cloudapi/image/create_virtual.py b/src/dynamix_sdk/api/cloudapi/image/create_virtual.py index b788b3f..e63c7ff 100644 --- a/src/dynamix_sdk/api/cloudapi/image/create_virtual.py +++ b/src/dynamix_sdk/api/cloudapi/image/create_virtual.py @@ -11,5 +11,6 @@ class CloudapiImageCreateVirtualProtocol(_base.BasePostAPIFunctionProtocol): *, name: str, target_image_id: int, + account_id: int | None = None, ) -> CloudapiImageCreateVirtualResultInt: ... diff --git a/src/dynamix_sdk/api/cloudapi/image/get.py b/src/dynamix_sdk/api/cloudapi/image/get.py index 1f5aeb3..3f9a87b 100644 --- a/src/dynamix_sdk/api/cloudapi/image/get.py +++ b/src/dynamix_sdk/api/cloudapi/image/get.py @@ -36,11 +36,13 @@ class CloudapiImageGetResultModel(_base.BaseAPIResultModel): rescue_cd: bool sep_id: int sep_pool_name: str + storage_policy_id: int shared_with: list[int] size_gb: int snapshot_id: str = '' status: _nested.ImageStatus tech_status: _nested.ImageTechStatus + to_clean: bool type: _nested.ImageType unc_path: str version: str diff --git a/src/dynamix_sdk/api/cloudapi/image/list.py b/src/dynamix_sdk/api/cloudapi/image/list.py index e1807b7..23d2561 100644 --- a/src/dynamix_sdk/api/cloudapi/image/list.py +++ b/src/dynamix_sdk/api/cloudapi/image/list.py @@ -26,5 +26,6 @@ class CloudapiImageListProtocol(_base.BasePostAPIFunctionProtocol): sort_by: str | None = None, status: _nested.ImageStatus | None = None, type: _nested.ImageType | None = None, + storage_policy_id: int | None = None, ) -> CloudapiImageListResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/k8ci/list.py b/src/dynamix_sdk/api/cloudapi/k8ci/list.py index c8cd31b..6216ffd 100644 --- a/src/dynamix_sdk/api/cloudapi/k8ci/list.py +++ b/src/dynamix_sdk/api/cloudapi/k8ci/list.py @@ -13,13 +13,11 @@ class CloudapiK8ciListProtocol(_base.BasePostAPIFunctionProtocol): *, id: int | None = None, include_disabled: bool = False, - master_node_driver: _nested.Driver | None = None, name: str | None = None, network_plugin: _nested.K8sNetworkPlugin | None = None, page_number: int | None = None, page_size: int | None = None, sort_by: str | None = None, status: _nested.K8CIStatus | None = None, - worker_node_driver: _nested.Driver | None = None, ) -> CloudapiK8ciListResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/k8ci/list_deleted.py b/src/dynamix_sdk/api/cloudapi/k8ci/list_deleted.py index 2494789..24625cc 100644 --- a/src/dynamix_sdk/api/cloudapi/k8ci/list_deleted.py +++ b/src/dynamix_sdk/api/cloudapi/k8ci/list_deleted.py @@ -12,12 +12,10 @@ class CloudapiK8ciListDeletedProtocol(_base.BasePostAPIFunctionProtocol): self, *, id: None | int = None, - master_node_driver: _nested.Driver | None = None, name: str | None = None, network_plugin: _nested.K8sNetworkPlugin | None = None, page_number: int | None = None, page_size: int | None = None, sort_by: str | None = None, - worker_node_driver: _nested.Driver | None = None, ) -> CloudapiK8ciListDeletedResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/_api.py b/src/dynamix_sdk/api/cloudapi/k8s/_api.py index 0338f59..6ff6b39 100644 --- a/src/dynamix_sdk/api/cloudapi/k8s/_api.py +++ b/src/dynamix_sdk/api/cloudapi/k8s/_api.py @@ -1,11 +1,24 @@ import dynamix_sdk.base as _base from .create import * from .delete import * +from .delete_master_from_group import * +from .delete_worker_from_group import * +from .disable import * +from .enable import * from .get import * from .get_config import * +from .get_node_annotations import * +from .get_node_labels import * +from .get_node_taints import * from .list import * from .list_deleted import * +from .migrate_to_zone import * from .restore import * +from .start import * +from .stop import * +from .update import * +from .update_worker_nodes_meta_data import * +from .worker_add import * from .worker_reset import * from .worker_restart import * from .workers_group_add import * @@ -16,12 +29,25 @@ from .workers_group_get_by_name import * class CloudapiK8sAPI( _base.BaseAPI, CloudapiK8sCreateProtocol, + CloudapiK8sDeleteMasterFromGroupProtocol, CloudapiK8sDeleteProtocol, + CloudapiK8sDeleteWorkerFromGroupProtocol, + CloudapiK8sDisableProtocol, + CloudapiK8sEnableProtocol, CloudapiK8sGetConfigProtocol, + CloudapiK8sGetNodeAnnotationsProtocol, + CloudapiK8sGetNodeLabelsProtocol, + CloudapiK8sGetNodeTaintsProtocol, CloudapiK8sGetProtocol, CloudapiK8sListDeletedProtocol, CloudapiK8sListProtocol, + CloudapiK8sMigrateToZoneProtocol, CloudapiK8sRestoreProtocol, + CloudapiK8sStartProtocol, + CloudapiK8sStopProtocol, + CloudapiK8sUpdateProtocol, + CloudapiK8sUpdateWorkerNodesMetaDataProtocol, + CloudapiK8sWorkerAddProtocol, CloudapiK8sWorkerResetProtocol, CloudapiK8sWorkerRestartProtocol, CloudapiK8sWorkersGroupAddProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/k8s/create.py b/src/dynamix_sdk/api/cloudapi/k8s/create.py index f31e5fd..00e63d6 100644 --- a/src/dynamix_sdk/api/cloudapi/k8s/create.py +++ b/src/dynamix_sdk/api/cloudapi/k8s/create.py @@ -15,6 +15,7 @@ class CloudapiK8sCreateProtocol(_base.BasePostAPIFunctionProtocol): k8ci_id: int, worker_group_name: str, network_plugin: _nested.K8sNetworkPlugin, + storage_policy_id: int, master_node_sep_id: int | None = None, master_node_sep_pool_name: str | None = None, worker_node_sep_id: int | None = None, @@ -44,7 +45,7 @@ class CloudapiK8sCreateProtocol(_base.BasePostAPIFunctionProtocol): ci_user_data: str | None = None, additional_sans: list[str] | None = None, chipset: _nested.Chipset = _nested.Chipset.i440fx, - lb_sysctl_params: list[dict] | None = None, + lb_sysctl_params: list[dict[str, str]] | None = None, zone_id: int | None = None, ) -> CloudapiK8sCreateResultStr: ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/delete_master_from_group.py b/src/dynamix_sdk/api/cloudapi/k8s/delete_master_from_group.py new file mode 100644 index 0000000..407f7d9 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/delete_master_from_group.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sDeleteMasterFromGroupResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sDeleteMasterFromGroupProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_master_from_group( + self, + *, + k8s_id: int, + master_group_id: int, + master_node_ids: list[int], + ) -> CloudapiK8sDeleteMasterFromGroupResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/delete_worker_from_group.py b/src/dynamix_sdk/api/cloudapi/k8s/delete_worker_from_group.py new file mode 100644 index 0000000..9724cfe --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/delete_worker_from_group.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sDeleteWorkerFromGroupResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sDeleteWorkerFromGroupProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_worker_from_group( + self, + *, + k8s_id: int, + worker_group_id: int, + worker_node_id: int, + ) -> CloudapiK8sDeleteWorkerFromGroupResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/disable.py b/src/dynamix_sdk/api/cloudapi/k8s/disable.py new file mode 100644 index 0000000..b3b3435 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/disable.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sDisableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sDisableProtocol(_base.BasePostAPIFunctionProtocol): + def disable( + self, + *, + k8s_id: int, + ) -> CloudapiK8sDisableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/enable.py b/src/dynamix_sdk/api/cloudapi/k8s/enable.py new file mode 100644 index 0000000..e162bc2 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/enable.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sEnableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sEnableProtocol(_base.BasePostAPIFunctionProtocol): + def enable( + self, + *, + k8s_id: int, + ) -> CloudapiK8sEnableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/get_node_annotations.py b/src/dynamix_sdk/api/cloudapi/k8s/get_node_annotations.py new file mode 100644 index 0000000..ae59aee --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/get_node_annotations.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sGetNodeAnnotationsResultStr(_base.BaseAPIResultStr): + pass + + +class CloudapiK8sGetNodeAnnotationsProtocol(_base.BasePostAPIFunctionProtocol): + def get_node_annotations( + self, + *, + k8s_id: int, + node_id: int, + ) -> CloudapiK8sGetNodeAnnotationsResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/get_node_labels.py b/src/dynamix_sdk/api/cloudapi/k8s/get_node_labels.py new file mode 100644 index 0000000..b3d8dc0 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/get_node_labels.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sGetNodeLabelsResultStr(_base.BaseAPIResultStr): + pass + + +class CloudapiK8sGetNodeLabelsProtocol(_base.BasePostAPIFunctionProtocol): + def get_node_labels( + self, + *, + k8s_id: int, + node_id: int, + ) -> CloudapiK8sGetNodeLabelsResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/get_node_taints.py b/src/dynamix_sdk/api/cloudapi/k8s/get_node_taints.py new file mode 100644 index 0000000..72202ba --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/get_node_taints.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sGetNodeTaintsResultStr(_base.BaseAPIResultStr): + pass + + +class CloudapiK8sGetNodeTaintsProtocol(_base.BasePostAPIFunctionProtocol): + def get_node_taints( + self, + *, + k8s_id: int, + node_id: int, + ) -> CloudapiK8sGetNodeTaintsResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/list.py b/src/dynamix_sdk/api/cloudapi/k8s/list.py index c3ed4c3..123ff15 100644 --- a/src/dynamix_sdk/api/cloudapi/k8s/list.py +++ b/src/dynamix_sdk/api/cloudapi/k8s/list.py @@ -3,7 +3,7 @@ import dynamix_sdk.api._nested as _nested class CloudapiK8sListResultModel(_base.BaseAPIResultModel): - data: list[_nested.K8sListAPIResultNM] + data: list[_nested.K8sAPIResultNM] entry_count: int @@ -22,6 +22,7 @@ class CloudapiK8sListProtocol(_base.BasePostAPIFunctionProtocol): rg_id: int | None = None, sort_by: str | None = None, status: _nested.K8sStatus | None = None, + zone_id: int | None = None, tech_status: _nested.K8sTechStatus | None = None, ) -> CloudapiK8sListResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/list_deleted.py b/src/dynamix_sdk/api/cloudapi/k8s/list_deleted.py index d2a0ac5..10c668b 100644 --- a/src/dynamix_sdk/api/cloudapi/k8s/list_deleted.py +++ b/src/dynamix_sdk/api/cloudapi/k8s/list_deleted.py @@ -3,7 +3,7 @@ import dynamix_sdk.api._nested as _nested class CloudapiK8sListDeletedResultModel(_base.BaseAPIResultModel): - data: list[_nested.K8sListDeletedAPIResultNM] + data: list[_nested.K8sAPIResultNM] entry_count: int diff --git a/src/dynamix_sdk/api/cloudapi/k8s/migrate_to_zone.py b/src/dynamix_sdk/api/cloudapi/k8s/migrate_to_zone.py new file mode 100644 index 0000000..a69846f --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/migrate_to_zone.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sMigrateToZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sMigrateToZoneProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_to_zone( + self, + *, + k8s_id: int, + zone_id: int, + ) -> CloudapiK8sMigrateToZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/start.py b/src/dynamix_sdk/api/cloudapi/k8s/start.py new file mode 100644 index 0000000..f9341de --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/start.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sStartResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sStartProtocol(_base.BasePostAPIFunctionProtocol): + def start( + self, + *, + k8s_id: int, + ) -> CloudapiK8sStartResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/stop.py b/src/dynamix_sdk/api/cloudapi/k8s/stop.py new file mode 100644 index 0000000..f6f2f83 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/stop.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sStopResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sStopProtocol(_base.BasePostAPIFunctionProtocol): + def stop( + self, + *, + k8s_id: int, + ) -> CloudapiK8sStopResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/update.py b/src/dynamix_sdk/api/cloudapi/k8s/update.py new file mode 100644 index 0000000..da1fd71 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/update.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sUpdateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sUpdateProtocol(_base.BasePostAPIFunctionProtocol): + def update( + self, + *, + k8s_id: int, + description: str | None = None, + name: str | None = None, + ) -> CloudapiK8sUpdateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/update_worker_nodes_meta_data.py b/src/dynamix_sdk/api/cloudapi/k8s/update_worker_nodes_meta_data.py new file mode 100644 index 0000000..6953861 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/update_worker_nodes_meta_data.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudapiK8sUpdateWorkerNodesMetaDataResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sUpdateWorkerNodesMetaDataProtocol( + _base.BasePostAPIFunctionProtocol, +): + def update_worker_nodes_meta_data( + self, + *, + k8s_id: int, + worker_group_id: int, + ci_user_data: str, + ) -> CloudapiK8sUpdateWorkerNodesMetaDataResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/worker_add.py b/src/dynamix_sdk/api/cloudapi/k8s/worker_add.py new file mode 100644 index 0000000..20e54cc --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/k8s/worker_add.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiK8sWorkerAddResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiK8sWorkerAddProtocol(_base.BasePostAPIFunctionProtocol): + def worker_add( + self, + *, + k8s_id: int, + worker_group_id: int, + node_count: int = 1, + chipset: _nested.Chipset = _nested.Chipset.i440fx, + ) -> CloudapiK8sWorkerAddResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/k8s/workers_group_add.py b/src/dynamix_sdk/api/cloudapi/k8s/workers_group_add.py index 030a63d..f534e1f 100644 --- a/src/dynamix_sdk/api/cloudapi/k8s/workers_group_add.py +++ b/src/dynamix_sdk/api/cloudapi/k8s/workers_group_add.py @@ -12,6 +12,7 @@ class CloudapiK8sWorkersGroupAddProtocol(_base.BasePostAPIFunctionProtocol): *, k8s_id: int, name: str, + storage_policy_id: int, sep_id: int | None = None, sep_pool_name: str | None = None, labels: list[str] | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/kvmx86/create.py b/src/dynamix_sdk/api/cloudapi/kvmx86/create.py index 5757b32..e8c7506 100644 --- a/src/dynamix_sdk/api/cloudapi/kvmx86/create.py +++ b/src/dynamix_sdk/api/cloudapi/kvmx86/create.py @@ -14,6 +14,7 @@ class CloudapiKvmx86CreateProtocol(_base.BasePostAPIFunctionProtocol): name: str, ram_size_mb: int, rg_id: int, + storage_policy_id: int, boot_disk_size_gb: None | int = None, chipset: _nested.Chipset = _nested.Chipset.i440fx, ci_user_data: None | dict = None, @@ -21,7 +22,6 @@ class CloudapiKvmx86CreateProtocol(_base.BasePostAPIFunctionProtocol): custom_fields: None | str = None, data_disks: None | list[_nested.DiskAPIParamsNM] = None, description: None | str = None, - driver: _nested.Driver = _nested.Driver.KVM_X86, hp_backed: bool = False, image_id: None | int = None, interfaces: None | list[_nested.InterfaceAPIParamsNM] = None, @@ -34,5 +34,6 @@ class CloudapiKvmx86CreateProtocol(_base.BasePostAPIFunctionProtocol): system_name: None | str = None, without_boot_disk: bool = False, zone_id: None | int = None, + os_version: None | str = None, ) -> CloudapiKvmx86CreateResultInt: ... diff --git a/src/dynamix_sdk/api/cloudapi/kvmx86/create_blank.py b/src/dynamix_sdk/api/cloudapi/kvmx86/create_blank.py index e80dbad..1402337 100644 --- a/src/dynamix_sdk/api/cloudapi/kvmx86/create_blank.py +++ b/src/dynamix_sdk/api/cloudapi/kvmx86/create_blank.py @@ -14,11 +14,11 @@ class CloudapiKvmx86CreateBlankProtocol(_base.BasePostAPIFunctionProtocol): name: str, ram_size_mb: int, rg_id: int, + storage_policy_id: int, boot_disk_size_gb: None | int = None, chipset: _nested.Chipset = _nested.Chipset.i440fx, data_disks: None | list[_nested.DiskAPIParamsNM] = None, description: None | str = None, - driver: _nested.Driver = _nested.Driver.KVM_X86, interfaces: None | list[_nested.InterfaceAPIParamsNM] = None, preferred_cpu_cores: None | list[int] = None, sep_id: None | int = None, @@ -33,5 +33,6 @@ class CloudapiKvmx86CreateBlankProtocol(_base.BasePostAPIFunctionProtocol): ), hot_resize: bool = False, zone_id: None | int = None, + os_version: None | str = None, ) -> CloudapiKvmx86CreateBlankResultInt: ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/_api.py b/src/dynamix_sdk/api/cloudapi/lb/_api.py index 66819a1..276a5e1 100644 --- a/src/dynamix_sdk/api/cloudapi/lb/_api.py +++ b/src/dynamix_sdk/api/cloudapi/lb/_api.py @@ -5,6 +5,7 @@ from .backend_server_add import * from .backend_server_delete import * from .backend_server_update import * from .backend_update import * +from .config_reset import * from .create import * from .delete import * from .disable import * @@ -18,6 +19,13 @@ from .get import * from .list import * from .list_deleted import * from .make_highly_available import * +from .migrate_to_zone import * +from .restart import * +from .restore import * +from .start import * +from .stop import * +from .update import * +from .update_sysctl_params import * class CloudapiLbAPI( @@ -28,6 +36,7 @@ class CloudapiLbAPI( CloudapiLbBackendServerDeleteProtocol, CloudapiLbBackendServerUpdateProtocol, CloudapiLbBackendUpdateProtocol, + CloudapiLbConfigResetProtocol, CloudapiLbCreateProtocol, CloudapiLbDeleteProtocol, CloudapiLbDisableProtocol, @@ -41,5 +50,12 @@ class CloudapiLbAPI( CloudapiLbListDeletedProtocol, CloudapiLbListProtocol, CloudapiLbMakeHighlyAvailableProtocol, + CloudapiLbMigrateToZoneProtocol, + CloudapiLbRestartProtocol, + CloudapiLbRestoreProtocol, + CloudapiLbStartProtocol, + CloudapiLbStopProtocol, + CloudapiLbUpdateProtocol, + CloudapiLbUpdateSysctlParamsProtocol, ): pass diff --git a/src/dynamix_sdk/api/cloudapi/lb/config_reset.py b/src/dynamix_sdk/api/cloudapi/lb/config_reset.py new file mode 100644 index 0000000..ca66313 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/config_reset.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbConfigResetResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbConfigResetProtocol(_base.BasePostAPIFunctionProtocol): + def config_reset( + self, + *, + lb_id: int, + ) -> CloudapiLbConfigResetResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/create.py b/src/dynamix_sdk/api/cloudapi/lb/create.py index eb6418e..286ba37 100644 --- a/src/dynamix_sdk/api/cloudapi/lb/create.py +++ b/src/dynamix_sdk/api/cloudapi/lb/create.py @@ -16,7 +16,7 @@ class CloudapiLbCreateProtocol(_base.BasePostAPIFunctionProtocol): description: None | str = None, ha_mode: bool = False, start: bool = True, - sysctl_params: None | list[str] = None, + sysctl_params: None | list[dict[str, str]] = None, zone_id: None | int = None, ) -> CloudapiLbCreateResultInt: ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/list.py b/src/dynamix_sdk/api/cloudapi/lb/list.py index 3b072ff..9f5b396 100644 --- a/src/dynamix_sdk/api/cloudapi/lb/list.py +++ b/src/dynamix_sdk/api/cloudapi/lb/list.py @@ -20,6 +20,7 @@ class CloudapiLbListProtocol(_base.BasePostAPIFunctionProtocol): page_number: None | int = None, page_size: None | int = None, rg_id: None | int = None, + zone_id: None | int = None, sort_by: None | str = None, status: None | _nested.LBStatus = None, tech_status: None | _nested.LBTechStatus = None, diff --git a/src/dynamix_sdk/api/cloudapi/lb/migrate_to_zone.py b/src/dynamix_sdk/api/cloudapi/lb/migrate_to_zone.py new file mode 100644 index 0000000..70d86a9 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/migrate_to_zone.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbMigrateToZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbMigrateToZoneProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_to_zone( + self, + *, + lb_id: int, + zone_id: int, + ) -> CloudapiLbMigrateToZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/restart.py b/src/dynamix_sdk/api/cloudapi/lb/restart.py new file mode 100644 index 0000000..1553b93 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/restart.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbRestartResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbRestartProtocol(_base.BasePostAPIFunctionProtocol): + def restart( + self, + *, + lb_id: int, + safe: bool = True, + ) -> CloudapiLbRestartResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/restore.py b/src/dynamix_sdk/api/cloudapi/lb/restore.py new file mode 100644 index 0000000..99773b0 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/restore.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbRestoreResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbRestoreProtocol(_base.BasePostAPIFunctionProtocol): + def restore( + self, + *, + lb_id: int, + ) -> CloudapiLbRestoreResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/start.py b/src/dynamix_sdk/api/cloudapi/lb/start.py new file mode 100644 index 0000000..e3f2c21 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/start.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbStartResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbStartProtocol(_base.BasePostAPIFunctionProtocol): + def start( + self, + *, + lb_id: int, + ) -> CloudapiLbStartResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/stop.py b/src/dynamix_sdk/api/cloudapi/lb/stop.py new file mode 100644 index 0000000..77b6408 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/stop.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbStopResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbStopProtocol(_base.BasePostAPIFunctionProtocol): + def stop( + self, + *, + lb_id: int, + ) -> CloudapiLbStopResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/update.py b/src/dynamix_sdk/api/cloudapi/lb/update.py new file mode 100644 index 0000000..7c6f210 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/update.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbUpdateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbUpdateProtocol(_base.BasePostAPIFunctionProtocol): + def update( + self, + *, + description: str, + lb_id: int, + ) -> CloudapiLbUpdateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/lb/update_sysctl_params.py b/src/dynamix_sdk/api/cloudapi/lb/update_sysctl_params.py new file mode 100644 index 0000000..a08aa77 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/lb/update_sysctl_params.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiLbUpdateSysctlParamsResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiLbUpdateSysctlParamsProtocol(_base.BasePostAPIFunctionProtocol): + def update_sysctl_params( + self, + *, + lb_id: int, + sysctl_params: list[dict[str, str]], + ) -> CloudapiLbUpdateSysctlParamsResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/pcidevice/__init__.py b/src/dynamix_sdk/api/cloudapi/pcidevice/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/pcidevice/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/pcidevice/_api.py b/src/dynamix_sdk/api/cloudapi/pcidevice/_api.py new file mode 100644 index 0000000..b1cb64f --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/pcidevice/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .list import * + + +class CloudapiPcideviceAPI( + _base.BaseAPI, + CloudapiPcideviceListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/pcidevice/list.py b/src/dynamix_sdk/api/cloudapi/pcidevice/list.py new file mode 100644 index 0000000..6615fac --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/pcidevice/list.py @@ -0,0 +1,23 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiPcideviceListResultModel(_base.BaseAPIResultModel): + data: list[_nested.PCIDeviceAPIResultNM] + entry_count: int + + +class CloudapiPcideviceListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + id: int | None = None, + name: str | None = None, + status: _nested.PCIDeviceStatus | None = None, + vm_id: int | None = None, + rg_id: int | None = None, + sort_by: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + ) -> CloudapiPcideviceListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/rg/_api.py b/src/dynamix_sdk/api/cloudapi/rg/_api.py index dbe9350..c0b2e78 100644 --- a/src/dynamix_sdk/api/cloudapi/rg/_api.py +++ b/src/dynamix_sdk/api/cloudapi/rg/_api.py @@ -1,12 +1,16 @@ import dynamix_sdk.base as _base from .access_grant import * from .access_revoke import * +from .add_storage_policy import * from .create import * +from .del_storage_policy import * from .delete import * from .disable import * from .enable import * from .get import * +from .get_resource_consumption import * from .list import * +from .list_deleted import * from .remove_def_net import * from .restore import * from .set_def_net import * @@ -17,12 +21,16 @@ class CloudapiRgAPI( _base.BaseAPI, CloudapiRgAccessGrantProtocol, CloudapiRgAccessRevokeProtocol, + CloudapiRgAddStoragePolicyProtocol, CloudapiRgCreateProtocol, + CloudapiRgDelStoragePolicyProtocol, CloudapiRgDeleteProtocol, CloudapiRgDisableProtocol, CloudapiRgEnableProtocol, CloudapiRgGetProtocol, + CloudapiRgGetResourceConsumptionProtocol, CloudapiRgListProtocol, + CloudapiRgListDeletedProtocol, CloudapiRgRemoveDefNetProtocol, CloudapiRgRestoreProtocol, CloudapiRgSetDefNetProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/rg/add_storage_policy.py b/src/dynamix_sdk/api/cloudapi/rg/add_storage_policy.py new file mode 100644 index 0000000..cbf77d1 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/rg/add_storage_policy.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiRgAddStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiRgAddStoragePolicyProtocol(_base.BasePostAPIFunctionProtocol): + def add_storage_policy( + self, + *, + rg_id: int, + storage_policy_id: int, + storage_size_gb: None | int = None, + ) -> CloudapiRgAddStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/rg/create.py b/src/dynamix_sdk/api/cloudapi/rg/create.py index 238af51..8624ae1 100644 --- a/src/dynamix_sdk/api/cloudapi/rg/create.py +++ b/src/dynamix_sdk/api/cloudapi/rg/create.py @@ -13,6 +13,7 @@ class CloudapiRgCreateProtocol(_base.BasePostAPIFunctionProtocol): account_id: int, grid_id: int, name: str, + storage_policy_quotas: list[_nested.StoragePolicyQuotasAPIParamsNM] | None = None, # noqa: E501 cpu_count_quota: int | None = None, default_net_type: _nested.RGDefaultNetType = ( _nested.RGDefaultNetType.PRIVATE @@ -23,7 +24,7 @@ class CloudapiRgCreateProtocol(_base.BasePostAPIFunctionProtocol): ext_traffic_quota: int | None = None, ip_cidr: str | None = None, owner: str | None = None, - public_ip_count_quota: int | None = None, + ext_ip_count_quota: int | None = None, ram_size_quota_mb: int | None = None, storage_size_quota_gb: int | None = None, sdn_access_group_id: str | None = None, diff --git a/src/dynamix_sdk/api/cloudapi/rg/del_storage_policy.py b/src/dynamix_sdk/api/cloudapi/rg/del_storage_policy.py new file mode 100644 index 0000000..bda48ec --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/rg/del_storage_policy.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiRgDelStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiRgDelStoragePolicyProtocol(_base.BasePostAPIFunctionProtocol): + def del_storage_policy( + self, + *, + rg_id: int, + storage_policy_id: int, + ) -> CloudapiRgDelStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/rg/get_resource_consumption.py b/src/dynamix_sdk/api/cloudapi/rg/get_resource_consumption.py new file mode 100644 index 0000000..953f3e3 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/rg/get_resource_consumption.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiRgGetResourceConsumptionResultModel( + _base.BaseAPIResultModel, +): + id: int + consumed: _nested.ResourceCountersAPIResultNM + reserved: _nested.ResourceCountersAPIResultNM + quotas: _nested.TenantQuotasForResourceConsumptionAPIResultNM + + +class CloudapiRgGetResourceConsumptionProtocol( + _base.BasePostAPIFunctionProtocol, +): + def get_resource_consumption( + self, + *, + rg_id: int, + ) -> CloudapiRgGetResourceConsumptionResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/rg/list_deleted.py b/src/dynamix_sdk/api/cloudapi/rg/list_deleted.py new file mode 100644 index 0000000..6397f7e --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/rg/list_deleted.py @@ -0,0 +1,25 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiRgListDeletedResultModel(_base.BaseAPIResultModel): + data: list[_nested.ResourceGroupForListDeletedAPIResultNM] + entry_count: int + + +class CloudapiRgListDeletedProtocol(_base.BasePostAPIFunctionProtocol): + def list_deleted( + self, + *, + id: int | None = None, + name: str | None = None, + account_id: int | None = None, + account_name: str | None = None, + created_after_timestamp: int | None = None, + created_before_timestamp: int | None = None, + lock_status: _nested.LockStatus | None = None, + sort_by: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + ) -> CloudapiRgListDeletedResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/rg/update.py b/src/dynamix_sdk/api/cloudapi/rg/update.py index debeae8..b3758cd 100644 --- a/src/dynamix_sdk/api/cloudapi/rg/update.py +++ b/src/dynamix_sdk/api/cloudapi/rg/update.py @@ -1,4 +1,5 @@ import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested class CloudapiRgUpdateResultBool(_base.BaseAPIResultBool): @@ -15,9 +16,10 @@ class CloudapiRgUpdateProtocol(_base.BasePostAPIFunctionProtocol): description: None | str = None, ext_traffic_quota: None | int = None, name: None | str = None, - public_ip_count_quota: None | int = None, + ext_ip_count_quota: None | int = None, ram_size_quota_mb: None | int = None, storage_size_quota_gb: None | int = None, uniq_pools: None | list[str] = None, + storage_policies: None | list[_nested.StoragePolicyQuotasAPIParamsNM] = None, # noqa: E501 ) -> CloudapiRgUpdateResultBool: ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/__init__.py b/src/dynamix_sdk/api/cloudapi/security_group/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/security_group/_api.py b/src/dynamix_sdk/api/cloudapi/security_group/_api.py new file mode 100644 index 0000000..1453533 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/_api.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +from .create import * +from .create_rule import * +from .delete import * +from .delete_rule import * +from .get import * +from .list import * +from .update import * + + +class CloudapiSecurityGroupAPI( + _base.BaseAPI, + CloudapiSecurityGroupCreateProtocol, + CloudapiSecurityGroupCreateRuleProtocol, + CloudapiSecurityGroupDeleteProtocol, + CloudapiSecurityGroupDeleteRuleProtocol, + CloudapiSecurityGroupGetProtocol, + CloudapiSecurityGroupListProtocol, + CloudapiSecurityGroupUpdateProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/security_group/create.py b/src/dynamix_sdk/api/cloudapi/security_group/create.py new file mode 100644 index 0000000..252c571 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/create.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiSecurityGroupCreateResultInt(_base.BaseAPIResultInt): + pass + + +class CloudapiSecurityGroupCreateProtocol(_base.BasePostAPIFunctionProtocol): + def create( + self, + *, + account_id: int, + name: str, + description: str | None = None, + ) -> CloudapiSecurityGroupCreateResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/create_rule.py b/src/dynamix_sdk/api/cloudapi/security_group/create_rule.py new file mode 100644 index 0000000..ec0d63e --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/create_rule.py @@ -0,0 +1,23 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiSecurityGroupCreateRuleResultInt(_base.BaseAPIResultInt): + pass + + +class CloudapiSecurityGroupCreateRuleProtocol( + _base.BasePostAPIFunctionProtocol, +): + def create_rule( + self, + *, + security_group_id: int, + traffic_direction: _nested.TrafficDirection, + ethertype: _nested.SGRuleEthertype = _nested.SGRuleEthertype.IPV4, + protocol: _nested.SGRuleProtocol | None = None, + port_range_max: int | None = None, + port_range_min: int | None = None, + remote_ip_prefix: str | None = None, + ) -> CloudapiSecurityGroupCreateRuleResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/delete.py b/src/dynamix_sdk/api/cloudapi/security_group/delete.py new file mode 100644 index 0000000..c63ff11 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/delete.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiSecurityGroupDeleteResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiSecurityGroupDeleteProtocol(_base.BasePostAPIFunctionProtocol): + def delete( + self, + *, + security_group_id: int, + ) -> CloudapiSecurityGroupDeleteResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/delete_rule.py b/src/dynamix_sdk/api/cloudapi/security_group/delete_rule.py new file mode 100644 index 0000000..6ac902c --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/delete_rule.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudapiSecurityGroupDeleteRuleResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiSecurityGroupDeleteRuleProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_rule( + self, + *, + security_group_id: int, + rule_id: int, + ) -> CloudapiSecurityGroupDeleteRuleResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/get.py b/src/dynamix_sdk/api/cloudapi/security_group/get.py new file mode 100644 index 0000000..b602704 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/get.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiSecurityGroupGetResultModel( + _base.BaseAPIResultModel, + _nested.SecurityGroupAPIResultNM, +): + pass + + +class CloudapiSecurityGroupGetProtocol(_base.BaseGetAPIFunctionProtocol): + def get( + self, + *, + security_group_id: int, + ) -> CloudapiSecurityGroupGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/list.py b/src/dynamix_sdk/api/cloudapi/security_group/list.py new file mode 100644 index 0000000..7e35e28 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/list.py @@ -0,0 +1,26 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiSecurityGroupListResultModel(_base.BaseAPIResultModel): + data: list[_nested.SecurityGroupAPIResultNM] + entry_count: int + + +class CloudapiSecurityGroupListProtocol(_base.BaseGetAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + created_after_timestamp: int | None = None, + created_before_timestamp: int | None = None, + description: str | None = None, + id: int | None = None, + name: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + sort_by: str | None = None, + updated_after_timestamp: int | None = None, + updated_before_timestamp: int | None = None, + ) -> CloudapiSecurityGroupListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/security_group/update.py b/src/dynamix_sdk/api/cloudapi/security_group/update.py new file mode 100644 index 0000000..4492d5a --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/security_group/update.py @@ -0,0 +1,20 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiSecurityGroupUpdateResultModel( + _base.BaseAPIResultModel, + _nested.SecurityGroupAPIResultNM, +): + pass + + +class CloudapiSecurityGroupUpdateProtocol(_base.BasePostAPIFunctionProtocol): + def update( + self, + *, + security_group_id: int, + name: str | None = None, + description: str | None = None, + ) -> CloudapiSecurityGroupUpdateResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/sep/__init__.py b/src/dynamix_sdk/api/cloudapi/sep/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/sep/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/sep/_api.py b/src/dynamix_sdk/api/cloudapi/sep/_api.py new file mode 100644 index 0000000..902756a --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/sep/_api.py @@ -0,0 +1,10 @@ +import dynamix_sdk.base as _base +from .list_available_sep_and_pools import * + + +class CloudapiSepAPI( + _base.BaseAPI, + CloudapiSepListAvailableSepAndPoolsProtocol, + +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/sep/list_available_sep_and_pools.py b/src/dynamix_sdk/api/cloudapi/sep/list_available_sep_and_pools.py new file mode 100644 index 0000000..33ee042 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/sep/list_available_sep_and_pools.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiSepListAvailableSepAndPoolsResultModel(_base.BaseAPIResultModel): + data: list[_nested.AvailableSEPPoolsAPIResultNM] + entry_count: int + + +class CloudapiSepListAvailableSepAndPoolsProtocol( + _base.BasePostAPIFunctionProtocol, +): + def list_available_sep_and_pools( + self, + *, + account_id: int, + rg_id: int | None = None, + ) -> CloudapiSepListAvailableSepAndPoolsResultModel: ... diff --git a/src/dynamix_sdk/api/cloudapi/storage_policy/__init__.py b/src/dynamix_sdk/api/cloudapi/storage_policy/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/storage_policy/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/storage_policy/_api.py b/src/dynamix_sdk/api/cloudapi/storage_policy/_api.py new file mode 100644 index 0000000..bd5d3d2 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/storage_policy/_api.py @@ -0,0 +1,11 @@ +import dynamix_sdk.base as _base +from .get import * +from .list import * + + +class CloudapiStoragePolicyAPI( + _base.BaseAPI, + CloudapiStoragePolicyGetProtocol, + CloudapiStoragePolicyListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/storage_policy/get.py b/src/dynamix_sdk/api/cloudapi/storage_policy/get.py new file mode 100644 index 0000000..9e17635 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/storage_policy/get.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiStoragePolicyGetResultModel( + _base.BaseAPIResultModel, + _nested.StoragePolicyAPIResultNM +): + pass + + +class CloudapiStoragePolicyGetProtocol(_base.BaseGetAPIFunctionProtocol): + def get( + self, + *, + id: int, + ) -> CloudapiStoragePolicyGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/storage_policy/list.py b/src/dynamix_sdk/api/cloudapi/storage_policy/list.py new file mode 100644 index 0000000..767f7e8 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/storage_policy/list.py @@ -0,0 +1,27 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiStoragePolicyListResultModel(_base.BaseAPIResultModel): + data: list[_nested.StoragePolicyAPIResultNM] + entry_count: int + + +class CloudapiStoragePolicyListProtocol(_base.BaseGetAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + description: str | None = None, + id: int | None = None, + iops_limit: int | None = None, + name: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + rg_id: int | None = None, + sep_id: int | None = None, + sep_pool_name: str | None = None, + sort_by: str | None = None, + status: _nested.StoragePolicyStatus | None = None, + ) -> CloudapiStoragePolicyListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/trunk/__init__.py b/src/dynamix_sdk/api/cloudapi/trunk/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/trunk/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/trunk/_api.py b/src/dynamix_sdk/api/cloudapi/trunk/_api.py new file mode 100644 index 0000000..963e49e --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/trunk/_api.py @@ -0,0 +1,11 @@ +import dynamix_sdk.base as _base +from .get import * +from .list import * + + +class CloudapiTrunkAPI( + _base.BaseAPI, + CloudapiTrunkGetProtocol, + CloudapiTrunkListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/trunk/get.py b/src/dynamix_sdk/api/cloudapi/trunk/get.py new file mode 100644 index 0000000..954f888 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/trunk/get.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiTrunkGetResultModel( + _base.BaseAPIResultModel, + _nested.TrunkAPIResultNM, +): + pass + + +class CloudapiTrunkGetProtocol(_base.BaseGetAPIFunctionProtocol): + def get( + self, + *, + id: int, + ) -> CloudapiTrunkGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/trunk/list.py b/src/dynamix_sdk/api/cloudapi/trunk/list.py new file mode 100644 index 0000000..79c6abe --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/trunk/list.py @@ -0,0 +1,22 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiTrunkListResultModel(_base.BaseAPIResultModel): + data: list[_nested.TrunkAPIResultNM] + entry_count: int + + +class CloudapiTrunkListProtocol(_base.BaseGetAPIFunctionProtocol): + def list( + self, + *, + ids: list[int] | None = None, + account_ids: list[int] | None = None, + vlan_ids: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + status: _nested.TrunkStatus | None = None, + sort_by: str | None = None, + ) -> CloudapiTrunkListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/user/_api.py b/src/dynamix_sdk/api/cloudapi/user/_api.py index efc94ed..8648e4f 100644 --- a/src/dynamix_sdk/api/cloudapi/user/_api.py +++ b/src/dynamix_sdk/api/cloudapi/user/_api.py @@ -1,13 +1,17 @@ import dynamix_sdk.base as _base from .api_list import * +from .brief import * from .get import * -from .get_audit import * +from .get_resource_consumption import * +from .set_data import * class CloudapiUserAPI( _base.BaseAPI, CloudapiUserApiListProtocol, - CloudapiUserGetAuditProtocol, + CloudapiUserBriefProtocol, CloudapiUserGetProtocol, + CloudapiUserGetResourceConsumptionProtocol, + CloudapiUserSetDataProtocol, ): pass diff --git a/src/dynamix_sdk/api/cloudapi/user/brief.py b/src/dynamix_sdk/api/cloudapi/user/brief.py new file mode 100644 index 0000000..0e0091e --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/user/brief.py @@ -0,0 +1,13 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiUserBriefResultModel(_base.BaseAPIResultModel): + accounts: _nested.TenantStatusCountersAPIResultNM + rgs: _nested.TenantStatusCountersAPIResultNM + vms: _nested.VMStatusCountersAPIResultNM + + +class CloudapiUserBriefProtocol(_base.BasePostAPIFunctionProtocol): + def brief(self) -> CloudapiUserBriefResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/user/get_audit.py b/src/dynamix_sdk/api/cloudapi/user/get_audit.py deleted file mode 100644 index 74eb114..0000000 --- a/src/dynamix_sdk/api/cloudapi/user/get_audit.py +++ /dev/null @@ -1,23 +0,0 @@ -import dynamix_sdk.base as _base -import dynamix_sdk.api._nested as _nested - - -class CloudapiUserGetAuditResultModel(_base.BaseAPIResultModel): - data: list[_nested.UserAuditAPIResultNM] - entry_count: int - - -class CloudapiUserGetAuditProtocol(_base.BasePostAPIFunctionProtocol): - def get_audit( - self, - *, - api_url_path: str | None = None, - min_status_code: int | None = None, - max_status_code: int | None = None, - request_timestamp_start: int | None = None, - request_timestamp_end: int | None = None, - page_number: int | None = None, - page_size: int | None = None, - sort_by: str = '-Time', - ) -> CloudapiUserGetAuditResultModel: - ... diff --git a/src/dynamix_sdk/api/cloudapi/user/get_resource_consumption.py b/src/dynamix_sdk/api/cloudapi/user/get_resource_consumption.py new file mode 100644 index 0000000..ebb664b --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/user/get_resource_consumption.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiUserGetResourceConsumptionResultModel( + _base.BaseAPIResultModel, +): + user_name: str + consumed: _nested.ResourceCountersAPIResultNM + reserved: _nested.ResourceCountersAPIResultNM + + +class CloudapiUserGetResourceConsumptionProtocol( + _base.BasePostAPIFunctionProtocol, +): + def get_resource_consumption( + self + ) -> CloudapiUserGetResourceConsumptionResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/user/set_data.py b/src/dynamix_sdk/api/cloudapi/user/set_data.py new file mode 100644 index 0000000..448a527 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/user/set_data.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiUserSetDataResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiUserSetDataProtocol(_base.BasePostAPIFunctionProtocol): + def set_data( + self, + *, + json_data: str, + ) -> CloudapiUserSetDataResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vfpool/__init__.py b/src/dynamix_sdk/api/cloudapi/vfpool/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vfpool/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/vfpool/_api.py b/src/dynamix_sdk/api/cloudapi/vfpool/_api.py new file mode 100644 index 0000000..43c5542 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vfpool/_api.py @@ -0,0 +1,11 @@ +import dynamix_sdk.base as _base +from .get import * +from .list import * + + +class CloudapiVfpoolAPI( + _base.BaseAPI, + CloudapiVfpoolGetProtocol, + CloudapiVfpoolListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/vfpool/get.py b/src/dynamix_sdk/api/cloudapi/vfpool/get.py new file mode 100644 index 0000000..f379bf2 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vfpool/get.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiVfpoolGetResultModel( + _base.BaseAPIResultModel, + _nested.VFPoolAPIResultNM, +): + pass + + +class CloudapiVfpoolGetProtocol(_base.BasePostAPIFunctionProtocol): + def get( + self, + *, + vfpool_id: int, + ) -> CloudapiVfpoolGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vfpool/list.py b/src/dynamix_sdk/api/cloudapi/vfpool/list.py new file mode 100644 index 0000000..c499050 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vfpool/list.py @@ -0,0 +1,25 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiVfpoolListResultModel(_base.BaseAPIResultModel): + data: list[_nested.VFPoolAPIResultNM] + entry_count: int + + +class CloudapiVfpoolListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + description: str | None = None, + grid_id: int | None = None, + id: int | None = None, + name: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + rg_id: int | None = None, + sort_by: str | None = None, + status: _nested.VFPoolStatus | None = None, + ) -> CloudapiVfpoolListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vgpu/__init__.py b/src/dynamix_sdk/api/cloudapi/vgpu/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vgpu/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/vgpu/_api.py b/src/dynamix_sdk/api/cloudapi/vgpu/_api.py new file mode 100644 index 0000000..c42f86b --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vgpu/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .list import * + + +class CloudapiVgpuAPI( + _base.BaseAPI, + CloudapiVgpuListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/vgpu/list.py b/src/dynamix_sdk/api/cloudapi/vgpu/list.py new file mode 100644 index 0000000..6ca7043 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vgpu/list.py @@ -0,0 +1,26 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiVgpuListResultModel(_base.BaseAPIResultModel): + data: list[_nested.VGPUAPIResultNM] + entry_count: int + + +class CloudapiVgpuListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + id: int | None = None, + status: _nested.VGPUStatus | None = None, + pgpu_processor_type: _nested.PGPUProcessorType | None = None, + pgpu_mode: _nested.PGPUMode | None = None, + rg_id: int | None = None, + account_id: int | None = None, + vm_id: int | None = None, + pgpu_id: int | None = None, + sort_by: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + ) -> CloudapiVgpuListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/_api.py b/src/dynamix_sdk/api/cloudapi/vins/_api.py index fd5de95..5a9ce2f 100644 --- a/src/dynamix_sdk/api/cloudapi/vins/_api.py +++ b/src/dynamix_sdk/api/cloudapi/vins/_api.py @@ -2,35 +2,51 @@ import dynamix_sdk.base as _base from .create_in_account import * from .create_in_rg import * from .delete import * +from .disable import * +from .dns_apply import * +from .enable import * +from .ext_net_connect import * +from .ext_net_disconnect import * +from .ext_net_list import * from .get import * from .ip_list import * from .ip_release import * from .ip_reserve import * from .list import * from .list_deleted import * +from .migrate_to_zone import * +from .nat_rule_add import * +from .nat_rule_del import * +from .nat_rule_list import * from .restore import * from .static_route_add import * from .static_route_del import * from .static_route_list import * from .vnfdev_redeploy import * from .vnfdev_restart import * -from .enable import * -from .disable import * class CloudapiVinsAPI( _base.BaseAPI, - CloudapiVinsEnableProtocol, - CloudapiVinsDisableProtocol, CloudapiVinsCreateInAccountProtocol, CloudapiVinsCreateInRGProtocol, CloudapiVinsDeleteProtocol, + CloudapiVinsDisableProtocol, + CloudapiVinsDnsApplyProtocol, + CloudapiVinsEnableProtocol, + CloudapiVinsExtNetConnectProtocol, + CloudapiVinsExtNetDisconnectProtocol, + CloudapiVinsExtNetListProtocol, CloudapiVinsGetProtocol, CloudapiVinsIpListProtocol, CloudapiVinsIpReleaseProtocol, CloudapiVinsIpReserveProtocol, CloudapiVinsListDeletedProtocol, CloudapiVinsListProtocol, + CloudapiVinsMigrateToZoneProtocol, + CloudapiVinsNatRuleAddProtocol, + CloudapiVinsNatRuleDelProtocol, + CloudapiVinsNatRuleListProtocol, CloudapiVinsRestoreProtocol, CloudapiVinsStaticRouteAddProtocol, CloudapiVinsStaticRouteDelProtocol, diff --git a/src/dynamix_sdk/api/cloudapi/vins/dns_apply.py b/src/dynamix_sdk/api/cloudapi/vins/dns_apply.py new file mode 100644 index 0000000..496dabe --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/dns_apply.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiVinsDnsApplyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiVinsDnsApplyProtocol(_base.BasePostAPIFunctionProtocol): + def dns_apply( + self, + *, + vins_id: int, + dns_servers: list[str] | None = None + ) -> CloudapiVinsDnsApplyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/ext_net_connect.py b/src/dynamix_sdk/api/cloudapi/vins/ext_net_connect.py new file mode 100644 index 0000000..a0663dd --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/ext_net_connect.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudapiVinsExtNetConnectResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiVinsExtNetConnectProtocol(_base.BasePostAPIFunctionProtocol): + def ext_net_connect( + self, + *, + ext_net_id: int | None = None, + ip_addr: str | None = None, + vins_id: int, + ) -> CloudapiVinsExtNetConnectResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/ext_net_disconnect.py b/src/dynamix_sdk/api/cloudapi/vins/ext_net_disconnect.py new file mode 100644 index 0000000..b4f12d7 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/ext_net_disconnect.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudapiVinsExtNetDisconnectResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiVinsExtNetDisconnectProtocol(_base.BasePostAPIFunctionProtocol): + def ext_net_disconnect( + self, + *, + vins_id: int, + ) -> CloudapiVinsExtNetDisconnectResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/ext_net_list.py b/src/dynamix_sdk/api/cloudapi/vins/ext_net_list.py new file mode 100644 index 0000000..1358540 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/ext_net_list.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiVinsExtNetListResultModel(_base.BaseAPIResultModel): + data: list[_nested.VINSExtNetAPIResultNM] + entry_count: int + + +class CloudapiVinsExtNetListProtocol(_base.BasePostAPIFunctionProtocol): + def ext_net_list( + self, + *, + vins_id: int, + ) -> CloudapiVinsExtNetListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/get.py b/src/dynamix_sdk/api/cloudapi/vins/get.py index 8e47ffc..81bd0b5 100644 --- a/src/dynamix_sdk/api/cloudapi/vins/get.py +++ b/src/dynamix_sdk/api/cloudapi/vins/get.py @@ -21,12 +21,13 @@ class CloudapiVinsGetResultModel(_base.BaseAPIResultModel): milestones: int name: str net_ip: str - net_mask: int + net_prefix: int pre_reservation_count: int redundant: bool rg_id: int rg_name: str secondary_vnfdev_id: int + security_group_mode: bool status: _nested.VINSStatus updated_by: str updated_timestamp: int diff --git a/src/dynamix_sdk/api/cloudapi/vins/list.py b/src/dynamix_sdk/api/cloudapi/vins/list.py index 47a2391..1d56ed3 100644 --- a/src/dynamix_sdk/api/cloudapi/vins/list.py +++ b/src/dynamix_sdk/api/cloudapi/vins/list.py @@ -19,6 +19,7 @@ class CloudapiVinsListProtocol(_base.BasePostAPIFunctionProtocol): page_number: int | None = None, page_size: int | None = None, rg_id: int | None = None, + zone_id: int | None = None, sort_by: str | None = None, status: _nested.VINSStatus | None = None, vnfdev_id: int | None = None diff --git a/src/dynamix_sdk/api/cloudapi/vins/migrate_to_zone.py b/src/dynamix_sdk/api/cloudapi/vins/migrate_to_zone.py new file mode 100644 index 0000000..f834935 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/migrate_to_zone.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiVinsMigrateToZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiVinsMigrateToZoneProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_to_zone( + self, + *, + vins_id: int, + zone_id: int, + ) -> CloudapiVinsMigrateToZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/nat_rule_add.py b/src/dynamix_sdk/api/cloudapi/vins/nat_rule_add.py new file mode 100644 index 0000000..1050b85 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/nat_rule_add.py @@ -0,0 +1,20 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiVinsNatRuleAddResultInt(_base.BaseAPIResultInt): + pass + + +class CloudapiVinsNatRuleAddProtocol(_base.BasePostAPIFunctionProtocol): + def nat_rule_add( + self, + *, + local_ip: str, + public_port_start: int, + vins_id: int, + local_port: int | None = None, + protocol: _nested.NATRuleProtocol = _nested.NATRuleProtocol.tcp, + public_port_end: int | None = None, + ) -> CloudapiVinsNatRuleAddResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/nat_rule_del.py b/src/dynamix_sdk/api/cloudapi/vins/nat_rule_del.py new file mode 100644 index 0000000..56a73e1 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/nat_rule_del.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudapiVinsNatRuleDelResultBool(_base.BaseAPIResultBool): + pass + + +class CloudapiVinsNatRuleDelProtocol(_base.BasePostAPIFunctionProtocol): + def nat_rule_del( + self, + *, + vins_id: int, + rule_id: int, + ) -> CloudapiVinsNatRuleDelResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudapi/vins/nat_rule_list.py b/src/dynamix_sdk/api/cloudapi/vins/nat_rule_list.py new file mode 100644 index 0000000..7b321c8 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/vins/nat_rule_list.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiVinsNatRuleListResultModel(_base.BaseAPIResultModel): + data: list[_nested.NATRuleAPIResultNM] + entry_count: int + + +class CloudapiVinsNatRuleListProtocol(_base.BasePostAPIFunctionProtocol): + def nat_rule_list( + self, + *, + vins_id: int, + ) -> CloudapiVinsNatRuleListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/zone/__init__.py b/src/dynamix_sdk/api/cloudapi/zone/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/zone/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudapi/zone/_api.py b/src/dynamix_sdk/api/cloudapi/zone/_api.py new file mode 100644 index 0000000..b27986b --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/zone/_api.py @@ -0,0 +1,11 @@ +import dynamix_sdk.base as _base +from .get import * +from .list import * + + +class CloudapiZoneAPI( + _base.BaseAPI, + CloudapiZoneGetProtocol, + CloudapiZoneListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudapi/zone/get.py b/src/dynamix_sdk/api/cloudapi/zone/get.py new file mode 100644 index 0000000..1ae9321 --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/zone/get.py @@ -0,0 +1,39 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiZoneGetResultModel(_base.BaseAPIResultModel): + account_ids: list[int] + bservice_ids: list[int] + created_timestamp: int + deletable: bool + description: str + extnet_ids: list[int] + grid_id: int + guid: int + id: int + k8s_ids: list[int] + lb_ids: list[int] + name: str + node_ids: list[int] + status: _nested.ZoneStatus + updated_timestamp: int + vins_ids: list[int] + vm_ids: list[int] + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def updated_datetime(self): + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class CloudapiZoneGetProtocol(_base.BasePostAPIFunctionProtocol): + def get( + self, + *, + id: int, + ) -> CloudapiZoneGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudapi/zone/list.py b/src/dynamix_sdk/api/cloudapi/zone/list.py new file mode 100644 index 0000000..d76fe7d --- /dev/null +++ b/src/dynamix_sdk/api/cloudapi/zone/list.py @@ -0,0 +1,25 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudapiZoneListResultModel(_base.BaseAPIResultModel): + data: list[_nested.ZoneForListAPIResultNM] + entry_count: int + + +class CloudapiZoneListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + deletable: bool | None = None, + description: str | None = None, + grid_id: int | None = None, + id: int | None = None, + name: str | None = None, + node_id: int | None = None, + page_number: int | None = None, + page_size: int | None = None, + sort_by: str | None = None, + status: _nested.ZoneStatus | None = None, + ) -> CloudapiZoneListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/_api.py b/src/dynamix_sdk/api/cloudbroker/_api.py index 11fb30d..325c8cb 100644 --- a/src/dynamix_sdk/api/cloudbroker/_api.py +++ b/src/dynamix_sdk/api/cloudbroker/_api.py @@ -1,6 +1,28 @@ import dynamix_sdk.base as _base from .account import * +from .audit import * +from .compute import * +from .disks import * +from .image import * +from .node import * +from .rg import * +from .security_group import * +from .storage_policy import * +from .user import * +from .vins import * +from .vnfdev import * class CloudbrokerAPI(_base.BaseAPI): account: CloudbrokerAccountAPI + audit: CloudbrokerAuditAPI + compute: CloudbrokerComputeAPI + disks: CloudbrokerDisksAPI + image: CloudbrokerImageAPI + node: CloudbrokerNodeAPI + rg: CloudbrokerRgAPI + security_group: CloudbrokerSecurityGroupAPI + storage_policy: CloudbrokerStoragePolicyAPI + user: CloudbrokerUserAPI + vins: CloudbrokerVinsAPI + vnfdev: CloudbrokerVnfdevAPI diff --git a/src/dynamix_sdk/api/cloudbroker/account/_api.py b/src/dynamix_sdk/api/cloudbroker/account/_api.py index 0ac481d..860a489 100644 --- a/src/dynamix_sdk/api/cloudbroker/account/_api.py +++ b/src/dynamix_sdk/api/cloudbroker/account/_api.py @@ -1,9 +1,43 @@ import dynamix_sdk.base as _base +from .add_storage_policy import * +from .add_user import * +from .add_zone import * from .create import * +from .del_storage_policy import * +from .delete import * +from .delete_accounts import * +from .delete_user import * +from .disable import * +from .disable_accounts import * +from .enable import * +from .enable_accounts import * +from .get import * +from .get_resource_consumption import * +from .list import * +from .list_deleted import * +from .remove_zone import * +from .restore import * class CloudbrokerAccountAPI( _base.BaseAPI, + CloudbrokerAccountAddStoragePolicyProtocol, + CloudbrokerAccountAddUserProtocol, + CloudbrokerAccountAddZoneProtocol, CloudbrokerAccountCreateProtocol, + CloudbrokerAccountDeleteAccountsProtocol, + CloudbrokerAccountDeleteProtocol, + CloudbrokerAccountDeleteUserProtocol, + CloudbrokerAccountDelStoragePolicyProtocol, + CloudbrokerAccountDisableAccountsProtocol, + CloudbrokerAccountDisableProtocol, + CloudbrokerAccountEnableAccountsProtocol, + CloudbrokerAccountEnableProtocol, + CloudbrokerAccountGetProtocol, + CloudbrokerAccountGetResourceConsumptionProtocol, + CloudbrokerAccountListDeletedProtocol, + CloudbrokerAccountListProtocol, + CloudbrokerAccountRemoveZoneProtocol, + CloudbrokerAccountRestoreProtocol, ): pass diff --git a/src/dynamix_sdk/api/cloudbroker/account/add_storage_policy.py b/src/dynamix_sdk/api/cloudbroker/account/add_storage_policy.py new file mode 100644 index 0000000..00409e0 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/add_storage_policy.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountAddStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountAddStoragePolicyProtocol( + _base.BasePostAPIFunctionProtocol, +): + def add_storage_policy( + self, + *, + account_id: int, + storage_policy_id: int, + storage_size_gb: int | None = None, + ) -> CloudbrokerAccountAddStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/add_user.py b/src/dynamix_sdk/api/cloudbroker/account/add_user.py new file mode 100644 index 0000000..913eddd --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/add_user.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerAccountAddUserResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountAddUserProtocol( + _base.BasePostAPIFunctionProtocol, +): + def add_user( + self, + *, + account_id: int, + user_name: str, + access_type: _nested.AccessType, + ) -> CloudbrokerAccountAddUserResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/add_zone.py b/src/dynamix_sdk/api/cloudbroker/account/add_zone.py new file mode 100644 index 0000000..6428acb --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/add_zone.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountAddZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountAddZoneProtocol( + _base.BasePostAPIFunctionProtocol, +): + def add_zone( + self, + *, + account_id: int, + zone_ids: list[int], + ) -> CloudbrokerAccountAddZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/create.py b/src/dynamix_sdk/api/cloudbroker/account/create.py index eeb41f8..f6ee36e 100644 --- a/src/dynamix_sdk/api/cloudbroker/account/create.py +++ b/src/dynamix_sdk/api/cloudbroker/account/create.py @@ -15,9 +15,10 @@ class CloudbrokerAccountCreateProtocol(_base.BasePostAPIFunctionProtocol): vm_features: None | list[_nested.VMFeature] = None, cpu_count_quota: None | int = None, email_address: None | str = None, + storage_policy_quotas: list[_nested.StoragePolicyQuotasAPIParamsNM] | None = None, # noqa: E501 ext_traffic_quota: None | int = None, gpu_count_quota: None | int = None, - public_ip_count_quota: None | int = None, + ext_ip_count_quota: None | int = None, ram_size_quota_mb: None | int = None, send_access_emails: bool = False, storage_size_quota_gb: None | int = None, diff --git a/src/dynamix_sdk/api/cloudbroker/account/del_storage_policy.py b/src/dynamix_sdk/api/cloudbroker/account/del_storage_policy.py new file mode 100644 index 0000000..53e694f --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/del_storage_policy.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountDelStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountDelStoragePolicyProtocol( + _base.BasePostAPIFunctionProtocol, +): + def del_storage_policy( + self, + *, + account_id: int, + storage_policy_id: int, + ) -> CloudbrokerAccountDelStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/delete.py b/src/dynamix_sdk/api/cloudbroker/account/delete.py new file mode 100644 index 0000000..8ba1651 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/delete.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountDeleteResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerAccountDeleteProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete( + self, + *, + account_id: int, + permanently: bool = False, + account_name: str | None = None, + ) -> CloudbrokerAccountDeleteResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/delete_accounts.py b/src/dynamix_sdk/api/cloudbroker/account/delete_accounts.py new file mode 100644 index 0000000..01c7163 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/delete_accounts.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountDeleteAccountsResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerAccountDeleteAccountsProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_accounts( + self, + *, + account_ids: list[int], + permanently: bool = False, + ) -> CloudbrokerAccountDeleteAccountsResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/delete_user.py b/src/dynamix_sdk/api/cloudbroker/account/delete_user.py new file mode 100644 index 0000000..b345cff --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/delete_user.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountDeleteUserResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountDeleteUserProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_user( + self, + *, + account_id: int, + user_name: str, + ) -> CloudbrokerAccountDeleteUserResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/disable.py b/src/dynamix_sdk/api/cloudbroker/account/disable.py new file mode 100644 index 0000000..5843056 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/disable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountDisableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountDisableProtocol( + _base.BasePostAPIFunctionProtocol, +): + def disable( + self, + *, + account_id: int, + ) -> CloudbrokerAccountDisableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/disable_accounts.py b/src/dynamix_sdk/api/cloudbroker/account/disable_accounts.py new file mode 100644 index 0000000..7018677 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/disable_accounts.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountDisableAccountsResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerAccountDisableAccountsProtocol( + _base.BasePostAPIFunctionProtocol, +): + def disable_accounts( + self, + *, + account_ids: list[int], + ) -> CloudbrokerAccountDisableAccountsResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/enable.py b/src/dynamix_sdk/api/cloudbroker/account/enable.py new file mode 100644 index 0000000..267dbaf --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/enable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountEnableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountEnableProtocol( + _base.BasePostAPIFunctionProtocol, +): + def enable( + self, + *, + account_id: int, + ) -> CloudbrokerAccountEnableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/enable_accounts.py b/src/dynamix_sdk/api/cloudbroker/account/enable_accounts.py new file mode 100644 index 0000000..35fd3b6 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/enable_accounts.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountEnableAccountsResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerAccountEnableAccountsProtocol( + _base.BasePostAPIFunctionProtocol, +): + def enable_accounts( + self, + *, + account_ids: list[int], + ) -> CloudbrokerAccountEnableAccountsResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/get.py b/src/dynamix_sdk/api/cloudbroker/account/get.py new file mode 100644 index 0000000..804a5af --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/get.py @@ -0,0 +1,58 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerAccountGetResultModel(_base.BaseAPIResultModel): + acc_lvl_vins_ids: list[int] + acl: list[_nested.AccessAPIResultNM] + company_url: str + company: str + cpu_allocation_parameter: str + cpu_allocation_ratio: int + created_by: str + created_timestamp: int + dc_location: str + deactivation_timestamp: int + default_zone_id: int + deleted_by: str + deleted_timestamp: int + description: str + display_name: str + guid: int + id: int + name: str + quotas: _nested.TenantQuotasAPIResultNM + resource_types: list[_nested.AccountResourceType] + send_access_emails: bool + status: _nested.AccountStatus + storage_policy_ids: list[int] + uniq_pools: list[str] + updated_timestamp: int + version: int + vm_features: list[_nested.VMFeature] + zones: list[_nested.ZoneAPIResultNM] + + @property + def created_datetime(self): + return self._get_datetime_from_timestamp(self.created_timestamp) + + @property + def deactivation_datetime(self): + return self._get_datetime_from_timestamp(self.deactivation_timestamp) + + @property + def deleted_datetime(self): + return self._get_datetime_from_timestamp(self.deleted_timestamp) + + @property + def updated_datetime(self): + return self._get_datetime_from_timestamp(self.updated_timestamp) + + +class CloudbrokerAccountGetProtocol(_base.BasePostAPIFunctionProtocol): + def get( + self, + *, + account_id: int, + ) -> CloudbrokerAccountGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/get_resource_consumption.py b/src/dynamix_sdk/api/cloudbroker/account/get_resource_consumption.py new file mode 100644 index 0000000..5d5fb3d --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/get_resource_consumption.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerAccountGetResourceConsumptionResultModel( + _base.BaseAPIResultModel, +): + id: int + consumed: _nested.ResourceCountersAPIResultNM + reserved: _nested.ResourceCountersAPIResultNM + quotas: _nested.TenantQuotasForResourceConsumptionAPIResultNM + + +class CloudbrokerAccountGetResourceConsumptionProtocol( + _base.BasePostAPIFunctionProtocol, +): + def get_resource_consumption( + self, + *, + account_id: int, + ) -> CloudbrokerAccountGetResourceConsumptionResultModel: ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/list.py b/src/dynamix_sdk/api/cloudbroker/account/list.py new file mode 100644 index 0000000..d9f5cce --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/list.py @@ -0,0 +1,23 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerAccountListResultModel(_base.BaseAPIResultModel): + data: list[_nested.AccountForCBAPIResultNM] + entry_count: int + + +class CloudbrokerAccountListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + id: None | int = None, + name: None | str = None, + access_type: None | _nested.AccessType = None, + status: None | _nested.AccountStatus = None, + zone_id: None | int = None, + page_number: None | int = None, + page_size: None | int = None, + sort_by: None | str = None, + ) -> CloudbrokerAccountListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/list_deleted.py b/src/dynamix_sdk/api/cloudbroker/account/list_deleted.py new file mode 100644 index 0000000..c2dc2f1 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/list_deleted.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerAccountListDeletedResultModel(_base.BaseAPIResultModel): + data: list[_nested.AccountForCBAPIResultNM] + entry_count: int + + +class CloudbrokerAccountListDeletedProtocol(_base.BasePostAPIFunctionProtocol): + def list_deleted( + self, + *, + access_type: None | _nested.AccessType = None, + id: None | int = None, + name: None | str = None, + page_number: None | int = None, + page_size: None | int = None, + sort_by: None | str = None, + ) -> CloudbrokerAccountListDeletedResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/remove_zone.py b/src/dynamix_sdk/api/cloudbroker/account/remove_zone.py new file mode 100644 index 0000000..7cc4c69 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/remove_zone.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountRemoveZoneResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerAccountRemoveZoneProtocol( + _base.BasePostAPIFunctionProtocol, +): + def remove_zone( + self, + *, + account_id: int, + zone_ids: list[int], + ) -> CloudbrokerAccountRemoveZoneResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/account/restore.py b/src/dynamix_sdk/api/cloudbroker/account/restore.py new file mode 100644 index 0000000..d58dead --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/account/restore.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerAccountRestoreResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerAccountRestoreProtocol( + _base.BasePostAPIFunctionProtocol, +): + def restore( + self, + *, + account_id: int, + ) -> CloudbrokerAccountRestoreResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/audit/__init__.py b/src/dynamix_sdk/api/cloudbroker/audit/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/audit/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/audit/_api.py b/src/dynamix_sdk/api/cloudbroker/audit/_api.py new file mode 100644 index 0000000..4b84a10 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/audit/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .list import * + + +class CloudbrokerAuditAPI( + _base.BaseAPI, + CloudbrokerAuditListProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/audit/list.py b/src/dynamix_sdk/api/cloudbroker/audit/list.py new file mode 100644 index 0000000..bc5662a --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/audit/list.py @@ -0,0 +1,36 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerAuditListResultModel(_base.BaseAPIResultModel): + data: list[_nested.AuditAPIResultNM] + entry_count: int + + +class CloudbrokerAuditListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + api_url_path: str | None = None, + bservice_id: int | None = None, + exclude_audit_lines: bool = False, + flip_group_id: int | None = None, + request_id: str | None = None, + k8s_id: int | None = None, + lb_id: int | None = None, + max_status_code: int | None = None, + min_status_code: int | None = None, + node_id: int | None = None, + page_number: int = 1, + page_size: int = 100, + request_timestamp_end: int | None = None, + request_timestamp_start: int | None = None, + rg_id: int | None = None, + sep_id: int | None = None, + sort_by: str | None = None, + user_name: str | None = None, + vins_id: int | None = None, + vm_id: int | None = None, + ) -> CloudbrokerAuditListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/__init__.py b/src/dynamix_sdk/api/cloudbroker/compute/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/compute/_api.py b/src/dynamix_sdk/api/cloudbroker/compute/_api.py new file mode 100644 index 0000000..5490860 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/_api.py @@ -0,0 +1,23 @@ +import dynamix_sdk.base as _base +from .change_security_groups import * +from .clone import * +from .clone_abort import * +from .migrate_storage_list import * +from .start_migration_in import * +from .start_migration_out import * +from .stop_migration_in import * +from .stop_migration_out import * + + +class CloudbrokerComputeAPI( + _base.BaseAPI, + CloudbrokerComputeChangeSecurityGroupsProtocol, + CloudbrokerComputeCloneProtocol, + CloudbrokerComputeCloneAbortProtocol, + CloudbrokerComputeMigrateStorageListProtocol, + CloudbrokerComputeStartMigrationInProtocol, + CloudbrokerComputeStartMigrationOutProtocol, + CloudbrokerComputeStopMigrationInProtocol, + CloudbrokerComputeStopMigrationOutProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/compute/change_security_groups.py b/src/dynamix_sdk/api/cloudbroker/compute/change_security_groups.py new file mode 100644 index 0000000..960d211 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/change_security_groups.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerComputeChangeSecurityGroupsResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudbrokerComputeChangeSecurityGroupsProtocol( + _base.BasePostAPIFunctionProtocol +): + def change_security_groups( + self, + *, + vm_id: int, + interface: str, + security_group_ids: list[int] | None = None, + security_group_mode: bool | None = None, + ) -> CloudbrokerComputeChangeSecurityGroupsResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/clone.py b/src/dynamix_sdk/api/cloudbroker/compute/clone.py new file mode 100644 index 0000000..a264fda --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/clone.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerComputeCloneResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerComputeCloneProtocol(_base.BasePostAPIFunctionProtocol): + def clone( + self, + *, + vm_id: int, + name: str, + force: bool = False, + snapshot_timestamp: int | None = None, + snapshot_name: str | None = None, + sep_pool_name: str | None = None, + sep_id: int | None = None, + storage_policy_id: int | None = None, + ) -> CloudbrokerComputeCloneResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/clone_abort.py b/src/dynamix_sdk/api/cloudbroker/compute/clone_abort.py new file mode 100644 index 0000000..2ecaa4c --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/clone_abort.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerComputeCloneAbortResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudbrokerComputeCloneAbortProtocol( + _base.BasePostAPIFunctionProtocol +): + def clone_abort( + self, + *, + vm_id: int, + ) -> CloudbrokerComputeCloneAbortResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/migrate_storage_list.py b/src/dynamix_sdk/api/cloudbroker/compute/migrate_storage_list.py new file mode 100644 index 0000000..6510430 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/migrate_storage_list.py @@ -0,0 +1,24 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerComputeMigrateStorageListResultModel( + _base.BaseAPIResultModel, +): + data: list[_nested.MigrateStorageJobAPIResultNM] + entry_count: int + + +class CloudbrokerComputeMigrateStorageListProtocol( + _base.BaseGetAPIFunctionProtocol +): + def migrate_storage_list( + self, + *, + migration_job_id: int | None = None, + completed: bool | None = None, + page_number: int | None = None, + page_size: int | None = None, + sort_by: str | None = None, + ) -> CloudbrokerComputeMigrateStorageListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/start_migration_in.py b/src/dynamix_sdk/api/cloudbroker/compute/start_migration_in.py new file mode 100644 index 0000000..a6dd09f --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/start_migration_in.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerComputeStartMigrationInResultStr( + _base.BaseAPIResultStr, +): + pass + + +class CloudbrokerComputeStartMigrationInProtocol( + _base.BasePostAPIFunctionProtocol +): + def start_migration_in( + self, + *, + vm_id: int, + stack_id: int | None = None, + ) -> CloudbrokerComputeStartMigrationInResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/start_migration_out.py b/src/dynamix_sdk/api/cloudbroker/compute/start_migration_out.py new file mode 100644 index 0000000..8d2ec44 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/start_migration_out.py @@ -0,0 +1,26 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerComputeStartMigrationOutResultStr( + _base.BaseAPIResultStr, +): + pass + + +class CloudbrokerComputeStartMigrationOutProtocol( + _base.BasePostAPIFunctionProtocol +): + def start_migration_out( + self, + *, + vm_id: int, + target: str, + graphics_listen_addr: str, + new_name: str | None = None, + use_unsafe: bool = False, + disk_mapping: dict[str, str] | None = None, + cdrom_mapping: dict[str, str] | None = None, + net_mapping: dict[str, _nested.NetMapConfigAPIParamsNM] | None = None, + ) -> CloudbrokerComputeStartMigrationOutResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/stop_migration_in.py b/src/dynamix_sdk/api/cloudbroker/compute/stop_migration_in.py new file mode 100644 index 0000000..e1bd448 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/stop_migration_in.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerComputeStopMigrationInResultStr( + _base.BaseAPIResultStr, +): + pass + + +class CloudbrokerComputeStopMigrationInProtocol( + _base.BasePostAPIFunctionProtocol +): + def stop_migration_in( + self, + *, + vm_id: int, + new_vm_uuid: str | None = None, + os_users: list[_nested.OSUserAPIParamsNM] | None = None, + ) -> CloudbrokerComputeStopMigrationInResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/compute/stop_migration_out.py b/src/dynamix_sdk/api/cloudbroker/compute/stop_migration_out.py new file mode 100644 index 0000000..b11955f --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/compute/stop_migration_out.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerComputeStopMigrationOutResultStr( + _base.BaseAPIResultStr, +): + pass + + +class CloudbrokerComputeStopMigrationOutProtocol( + _base.BasePostAPIFunctionProtocol +): + def stop_migration_out( + self, + *, + vm_id: int, + migrate_to_uri3_job_id: str | None = None, + ) -> CloudbrokerComputeStopMigrationOutResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/disks/__init__.py b/src/dynamix_sdk/api/cloudbroker/disks/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/disks/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/disks/_api.py b/src/dynamix_sdk/api/cloudbroker/disks/_api.py new file mode 100644 index 0000000..ace5209 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/disks/_api.py @@ -0,0 +1,13 @@ +import dynamix_sdk.base as _base +from .migrate import * +from .migrate_abort import * +from .migrate_status import * + + +class CloudbrokerDisksAPI( + _base.BaseAPI, + CloudbrokerDisksMigrateAbortProtocol, + CloudbrokerDisksMigrateProtocol, + CloudbrokerDisksMigrateStatusProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/disks/migrate.py b/src/dynamix_sdk/api/cloudbroker/disks/migrate.py new file mode 100644 index 0000000..9eb8fb3 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/disks/migrate.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerDisksMigrateResultStr(_base.BaseAPIResultStr): + pass + + +class CloudbrokerDisksMigrateProtocol(_base.BasePostAPIFunctionProtocol): + def migrate( + self, + *, + disk_id: int, + sep_id: int, + sep_pool_name: str, + storage_policy_id: int | None = None, + ) -> CloudbrokerDisksMigrateResultStr: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/disks/migrate_abort.py b/src/dynamix_sdk/api/cloudbroker/disks/migrate_abort.py new file mode 100644 index 0000000..bc058ea --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/disks/migrate_abort.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerDisksMigrateAbortResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerDisksMigrateAbortProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_abort( + self, + *, + disk_id: int, + ) -> CloudbrokerDisksMigrateAbortResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/disks/migrate_status.py b/src/dynamix_sdk/api/cloudbroker/disks/migrate_status.py new file mode 100644 index 0000000..3df2f71 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/disks/migrate_status.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerDisksMigrateStatusResultModel(_base.BaseAPIResultModel): + bandwidth_limit: int | None = None + current_bytes: int | str | None = None # BDX-9583 + progress_percent: int | None = None + total_bytes: str | None = None # BDX-9583 + type: _nested.DiskMigrateJobType | None = None + + +class CloudbrokerDisksMigrateStatusProtocol( + _base.BaseGetAPIFunctionProtocol +): + def migrate_status( + self, + *, + disk_id: int, + ) -> CloudbrokerDisksMigrateStatusResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/image/__init__.py b/src/dynamix_sdk/api/cloudbroker/image/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/image/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/image/_api.py b/src/dynamix_sdk/api/cloudbroker/image/_api.py new file mode 100644 index 0000000..54db094 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/image/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .change_storage_policy import * + + +class CloudbrokerImageAPI( + _base.BaseAPI, + CloudbrokerImageChangeStoragePolicyProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/image/change_storage_policy.py b/src/dynamix_sdk/api/cloudbroker/image/change_storage_policy.py new file mode 100644 index 0000000..445b9fe --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/image/change_storage_policy.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerImageChangeStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerImageChangeStoragePolicyProtocol( + _base.BasePostAPIFunctionProtocol, +): + def change_storage_policy( + self, + *, + image_id: int, + storage_policy_id: int, + ) -> CloudbrokerImageChangeStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/node/__init__.py b/src/dynamix_sdk/api/cloudbroker/node/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/node/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/node/_api.py b/src/dynamix_sdk/api/cloudbroker/node/_api.py new file mode 100644 index 0000000..3caf476 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/node/_api.py @@ -0,0 +1,13 @@ +import dynamix_sdk.base as _base +from .add_ssh_identity import * +from .get_ssh_identity import * +from .update_description import * + + +class CloudbrokerNodeAPI( + _base.BaseAPI, + CloudbrokerNodeAddSshIdentityProtocol, + CloudbrokerNodeGetSshIdentityProtocol, + CloudbrokerNodeUpdateDescriptionProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/node/add_ssh_identity.py b/src/dynamix_sdk/api/cloudbroker/node/add_ssh_identity.py new file mode 100644 index 0000000..0a009ff --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/node/add_ssh_identity.py @@ -0,0 +1,22 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerNodeAddSshIdentityResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudbrokerNodeAddSshIdentityProtocol( + _base.BasePostAPIFunctionProtocol +): + def add_ssh_identity( + self, + *, + node_id: int, + client_hostname: str, + client_host_key: str, + client_public_key: str, + client_ip_addr: str, + ) -> CloudbrokerNodeAddSshIdentityResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/node/get_ssh_identity.py b/src/dynamix_sdk/api/cloudbroker/node/get_ssh_identity.py new file mode 100644 index 0000000..dd123ad --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/node/get_ssh_identity.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerNodeGetSshIdentityResultModel(_base.BaseAPIResultModel): + hostname: str + host_key: str + public_keys: list[str] + + +class CloudbrokerNodeGetSshIdentityProtocol( + _base.BaseGetAPIFunctionProtocol, +): + def get_ssh_identity( + self, + *, + node_id: int, + ) -> CloudbrokerNodeGetSshIdentityResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/node/update_description.py b/src/dynamix_sdk/api/cloudbroker/node/update_description.py new file mode 100644 index 0000000..cf833aa --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/node/update_description.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerNodeUpdateDescriptionResultBool( + _base.BaseAPIResultBool, +): + pass + + +class CloudbrokerNodeUpdateDescriptionProtocol( + _base.BasePostAPIFunctionProtocol +): + def update_description( + self, + *, + node_id: int, + description: str, + ) -> CloudbrokerNodeUpdateDescriptionResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/rg/__init__.py b/src/dynamix_sdk/api/cloudbroker/rg/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/rg/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/rg/_api.py b/src/dynamix_sdk/api/cloudbroker/rg/_api.py new file mode 100644 index 0000000..6a64c53 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/rg/_api.py @@ -0,0 +1,11 @@ +import dynamix_sdk.base as _base +from .add_storage_policy import * +from .del_storage_policy import * + + +class CloudbrokerRgAPI( + _base.BaseAPI, + CloudbrokerRgAddStoragePolicyProtocol, + CloudbrokerRgDelStoragePolicyProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/rg/add_storage_policy.py b/src/dynamix_sdk/api/cloudbroker/rg/add_storage_policy.py new file mode 100644 index 0000000..2b16a79 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/rg/add_storage_policy.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerRgAddStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerRgAddStoragePolicyProtocol(_base.BasePostAPIFunctionProtocol): + def add_storage_policy( + self, + *, + rg_id: int, + storage_policy_id: int, + storage_size_gb: int | None = None, + ) -> CloudbrokerRgAddStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/rg/del_storage_policy.py b/src/dynamix_sdk/api/cloudbroker/rg/del_storage_policy.py new file mode 100644 index 0000000..613bf4e --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/rg/del_storage_policy.py @@ -0,0 +1,15 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerRgDelStoragePolicyResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerRgDelStoragePolicyProtocol(_base.BasePostAPIFunctionProtocol): + def del_storage_policy( + self, + *, + rg_id: int, + storage_policy_id: int, + ) -> CloudbrokerRgDelStoragePolicyResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/__init__.py b/src/dynamix_sdk/api/cloudbroker/security_group/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/_api.py b/src/dynamix_sdk/api/cloudbroker/security_group/_api.py new file mode 100644 index 0000000..1ef20db --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/_api.py @@ -0,0 +1,21 @@ +import dynamix_sdk.base as _base +from .create import * +from .create_rule import * +from .delete import * +from .delete_rule import * +from .get import * +from .list import * +from .update import * + + +class CloudbrokerSecurityGroupAPI( + _base.BaseAPI, + CloudbrokerSecurityGroupCreateProtocol, + CloudbrokerSecurityGroupCreateRuleProtocol, + CloudbrokerSecurityGroupDeleteProtocol, + CloudbrokerSecurityGroupDeleteRuleProtocol, + CloudbrokerSecurityGroupGetProtocol, + CloudbrokerSecurityGroupListProtocol, + CloudbrokerSecurityGroupUpdateProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/create.py b/src/dynamix_sdk/api/cloudbroker/security_group/create.py new file mode 100644 index 0000000..c433738 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/create.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerSecurityGroupCreateResultInt(_base.BaseAPIResultInt): + pass + + +class CloudbrokerSecurityGroupCreateProtocol( + _base.BasePostAPIFunctionProtocol, +): + def create( + self, + *, + account_id: int, + name: str, + description: str | None = None, + ) -> CloudbrokerSecurityGroupCreateResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/create_rule.py b/src/dynamix_sdk/api/cloudbroker/security_group/create_rule.py new file mode 100644 index 0000000..2caed92 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/create_rule.py @@ -0,0 +1,23 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerSecurityGroupCreateRuleResultInt(_base.BaseAPIResultInt): + pass + + +class CloudbrokerSecurityGroupCreateRuleProtocol( + _base.BasePostAPIFunctionProtocol, +): + def create_rule( + self, + *, + security_group_id: int, + traffic_direction: _nested.TrafficDirection, + ethertype: _nested.SGRuleEthertype = _nested.SGRuleEthertype.IPV4, + protocol: _nested.SGRuleProtocol | None = None, + port_range_max: int | None = None, + port_range_min: int | None = None, + remote_ip_prefix: str | None = None, + ) -> CloudbrokerSecurityGroupCreateRuleResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/delete.py b/src/dynamix_sdk/api/cloudbroker/security_group/delete.py new file mode 100644 index 0000000..7cc9118 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/delete.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerSecurityGroupDeleteResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerSecurityGroupDeleteProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete( + self, + *, + security_group_id: int, + ) -> CloudbrokerSecurityGroupDeleteResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/delete_rule.py b/src/dynamix_sdk/api/cloudbroker/security_group/delete_rule.py new file mode 100644 index 0000000..c5fbb76 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/delete_rule.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerSecurityGroupDeleteRuleResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerSecurityGroupDeleteRuleProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_rule( + self, + *, + security_group_id: int, + rule_id: int, + ) -> CloudbrokerSecurityGroupDeleteRuleResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/get.py b/src/dynamix_sdk/api/cloudbroker/security_group/get.py new file mode 100644 index 0000000..14e5f4b --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/get.py @@ -0,0 +1,18 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerSecurityGroupGetResultModel( + _base.BaseAPIResultModel, + _nested.SecurityGroupAPIResultNM, +): + pass + + +class CloudbrokerSecurityGroupGetProtocol(_base.BaseGetAPIFunctionProtocol): + def get( + self, + *, + security_group_id: int, + ) -> CloudbrokerSecurityGroupGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/list.py b/src/dynamix_sdk/api/cloudbroker/security_group/list.py new file mode 100644 index 0000000..64195a0 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/list.py @@ -0,0 +1,26 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerSecurityGroupListResultModel(_base.BaseAPIResultModel): + data: list[_nested.SecurityGroupAPIResultNM] + entry_count: int + + +class CloudbrokerSecurityGroupListProtocol(_base.BaseGetAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + created_after_timestamp: int | None = None, + created_before_timestamp: int | None = None, + description: str | None = None, + id: int | None = None, + name: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + sort_by: str | None = None, + updated_after_timestamp: int | None = None, + updated_before_timestamp: int | None = None, + ) -> CloudbrokerSecurityGroupListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/security_group/update.py b/src/dynamix_sdk/api/cloudbroker/security_group/update.py new file mode 100644 index 0000000..cdc67ad --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/security_group/update.py @@ -0,0 +1,22 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerSecurityGroupUpdateResultModel( + _base.BaseAPIResultModel, + _nested.SecurityGroupAPIResultNM, +): + pass + + +class CloudbrokerSecurityGroupUpdateProtocol( + _base.BasePostAPIFunctionProtocol, +): + def update( + self, + *, + security_group_id: int, + name: str | None = None, + description: str | None = None, + ) -> CloudbrokerSecurityGroupUpdateResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/__init__.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/_api.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/_api.py new file mode 100644 index 0000000..909d1d6 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/_api.py @@ -0,0 +1,25 @@ +import dynamix_sdk.base as _base +from .add_pool import * +from .create import * +from .delete import * +from .delete_pool import * +from .disable import * +from .enable import * +from .get import * +from .list import * +from .update import * + + +class CloudbrokerStoragePolicyAPI( + _base.BaseAPI, + CloudbrokerStoragePolicyAddPoolProtocol, + CloudbrokerStoragePolicyCreateProtocol, + CloudbrokerStoragePolicyDeletePoolProtocol, + CloudbrokerStoragePolicyDeleteProtocol, + CloudbrokerStoragePolicyDisableProtocol, + CloudbrokerStoragePolicyEnableProtocol, + CloudbrokerStoragePolicyGetProtocol, + CloudbrokerStoragePolicyListProtocol, + CloudbrokerStoragePolicyUpdateProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/add_pool.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/add_pool.py new file mode 100644 index 0000000..e1c648c --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/add_pool.py @@ -0,0 +1,25 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerStoragePolicyAddPoolResultModel(_base.BaseAPIResultModel): + description: str + guid: int + id: int + iops_limit: int + name: str + sep_pools: list[_nested.SEPPoolsAPIResultNM] + status: _nested.StoragePolicyStatus + + +class CloudbrokerStoragePolicyAddPoolProtocol( + _base.BasePostAPIFunctionProtocol, +): + def add_pool( + self, + *, + storage_policy_id: int, + sep_id: int, + sep_pool_name: str, + ) -> CloudbrokerStoragePolicyAddPoolResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/create.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/create.py new file mode 100644 index 0000000..f614184 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/create.py @@ -0,0 +1,20 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerStoragePolicyCreateResultInt(_base.BaseAPIResultInt): + pass + + +class CloudbrokerStoragePolicyCreateProtocol( + _base.BasePostAPIFunctionProtocol, +): + def create( + self, + *, + name: str, + sep_pools: list[_nested.SEPPoolsAPIParamsNM], + description: str | None = None, + iops_limit: int = 2000, + ) -> CloudbrokerStoragePolicyCreateResultInt: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/delete.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/delete.py new file mode 100644 index 0000000..8e3ff73 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/delete.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerStoragePolicyDeleteResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerStoragePolicyDeleteProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete( + self, + *, + storage_policy_id: int, + ) -> CloudbrokerStoragePolicyDeleteResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/delete_pool.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/delete_pool.py new file mode 100644 index 0000000..be730b2 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/delete_pool.py @@ -0,0 +1,25 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerStoragePolicyDeletePoolResultModel(_base.BaseAPIResultModel): + description: str + guid: int + id: int + iops_limit: int + name: str + sep_pools: list[_nested.SEPPoolsAPIResultNM] + status: _nested.StoragePolicyStatus + + +class CloudbrokerStoragePolicyDeletePoolProtocol( + _base.BasePostAPIFunctionProtocol, +): + def delete_pool( + self, + *, + storage_policy_id: int, + sep_id: int, + sep_pool_name: str, + ) -> CloudbrokerStoragePolicyDeletePoolResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/disable.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/disable.py new file mode 100644 index 0000000..6957983 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/disable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerStoragePolicyDisableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerStoragePolicyDisableProtocol( + _base.BasePostAPIFunctionProtocol, +): + def disable( + self, + *, + storage_policy_id: int, + ) -> CloudbrokerStoragePolicyDisableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/enable.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/enable.py new file mode 100644 index 0000000..a4f2502 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/enable.py @@ -0,0 +1,16 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerStoragePolicyEnableResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerStoragePolicyEnableProtocol( + _base.BasePostAPIFunctionProtocol, +): + def enable( + self, + *, + storage_policy_id: int, + ) -> CloudbrokerStoragePolicyEnableResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/get.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/get.py new file mode 100644 index 0000000..c9cbeda --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/get.py @@ -0,0 +1,20 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerStoragePolicyGetResultModel( + _base.BaseAPIResultModel, + _nested.StoragePolicyAPIResultNM, +): + pass + + +class CloudbrokerStoragePolicyGetProtocol( + _base.BaseGetAPIFunctionProtocol, +): + def get( + self, + *, + storage_policy_id: int, + ) -> CloudbrokerStoragePolicyGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/list.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/list.py new file mode 100644 index 0000000..3d24a0d --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/list.py @@ -0,0 +1,27 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerStoragePolicyListResultModel(_base.BaseAPIResultModel): + data: list[_nested.StoragePolicyAPIResultNM] + entry_count: int + + +class CloudbrokerStoragePolicyListProtocol(_base.BaseGetAPIFunctionProtocol): + def list( + self, + *, + account_id: int | None = None, + description: str | None = None, + id: int | None = None, + iops_limit: int | None = None, + name: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + rg_id: int | None = None, + sep_id: int | None = None, + sep_pool_name: str | None = None, + sort_by: str | None = None, + status: _nested.StoragePolicyStatus | None = None, + ) -> CloudbrokerStoragePolicyListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/storage_policy/update.py b/src/dynamix_sdk/api/cloudbroker/storage_policy/update.py new file mode 100644 index 0000000..57c0021 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/storage_policy/update.py @@ -0,0 +1,27 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerStoragePolicyUpdateResultModel(_base.BaseAPIResultModel): + description: str + guid: int + id: int + iops_limit: int + name: str + sep_pools: list[_nested.SEPPoolsAPIResultNM] + status: _nested.StoragePolicyStatus + + +class CloudbrokerStoragePolicyUpdateProtocol( + _base.BasePostAPIFunctionProtocol, +): + def update( + self, + *, + storage_policy_id: int, + name: str | None = None, + iops_limit: int | None = None, + description: str | None = None, + sep_pools: list[_nested.SEPPoolsAPIParamsNM] | None = None, + ) -> CloudbrokerStoragePolicyUpdateResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/user/__init__.py b/src/dynamix_sdk/api/cloudbroker/user/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/user/_api.py b/src/dynamix_sdk/api/cloudbroker/user/_api.py new file mode 100644 index 0000000..862ad37 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/_api.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base +from .block import * +from .create import * +from .get import * +from .list import * +from .unblock import * + + +class CloudbrokerUserAPI( + _base.BaseAPI, + CloudbrokerUserBlockProtocol, + CloudbrokerUserCreateProtocol, + CloudbrokerUserGetProtocol, + CloudbrokerUserListProtocol, + CloudbrokerUserUnblockProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/user/block.py b/src/dynamix_sdk/api/cloudbroker/user/block.py new file mode 100644 index 0000000..0342e39 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/block.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerUserBlockResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerUserBlockProtocol(_base.BasePostAPIFunctionProtocol): + def block( + self, + *, + user_name: str, + ) -> CloudbrokerUserBlockResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/user/create.py b/src/dynamix_sdk/api/cloudbroker/user/create.py new file mode 100644 index 0000000..3a928bc --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/create.py @@ -0,0 +1,19 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerUserCreateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerUserCreateProtocol(_base.BasePostAPIFunctionProtocol): + def create( + self, + *, + user_name: str, + email_addresses: list[str], + password: str, + api_access_group_ids: list[int] | None = None, + auth_broker: _nested.AuthBroker | None = None, + ) -> CloudbrokerUserCreateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/user/get.py b/src/dynamix_sdk/api/cloudbroker/user/get.py new file mode 100644 index 0000000..2ff52a8 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/get.py @@ -0,0 +1,36 @@ +import typing as _typing +import dynamix_sdk.base as _base + + +class CloudbrokerUserGetResultModel(_base.BaseAPIResultModel): + active: bool + api_access_groups: dict[str, str] + auth_key: str + auth_keys: list[_typing.Any] + blocked: bool | None = None + ckey: str + data: str + description: str + domain_name: str | None + emails: list[str] + grid_id: int + groups: list[str] + guid: str + id: str + last_check_timestamp: int + meta: list[_typing.Any] + mobile: list[_typing.Any] + password: str + protected: bool | None = None + roles: list[_typing.Any] + service_account: bool + xmpp: list[_typing.Any] + + @property + def last_check_datetime(self): + return self._get_datetime_from_timestamp(self.last_check_timestamp) + + +class CloudbrokerUserGetProtocol(_base.BasePostAPIFunctionProtocol): + def get(self, *, user_name: str) -> CloudbrokerUserGetResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/user/list.py b/src/dynamix_sdk/api/cloudbroker/user/list.py new file mode 100644 index 0000000..4dfb7af --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/list.py @@ -0,0 +1,22 @@ +import dynamix_sdk.base as _base +import dynamix_sdk.api._nested as _nested + + +class CloudbrokerUserListResultModel(_base.BaseAPIResultModel): + data: list[_nested.UserAPIResultNM] + entry_count: int + + +class CloudbrokerUserListProtocol(_base.BasePostAPIFunctionProtocol): + def list( + self, + *, + active: bool | None = None, + email: str | None = None, + name: str | None = None, + page_number: int | None = None, + page_size: int | None = None, + service_account: bool | None = None, + sort_by: str | None = None, + ) -> CloudbrokerUserListResultModel: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/user/unblock.py b/src/dynamix_sdk/api/cloudbroker/user/unblock.py new file mode 100644 index 0000000..7a9bfe3 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/user/unblock.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerUserUnblockResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerUserUnblockProtocol(_base.BasePostAPIFunctionProtocol): + def unblock( + self, + *, + user_name: str, + ) -> CloudbrokerUserUnblockResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/vins/__init__.py b/src/dynamix_sdk/api/cloudbroker/vins/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/vins/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/vins/_api.py b/src/dynamix_sdk/api/cloudbroker/vins/_api.py new file mode 100644 index 0000000..5483ef7 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/vins/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .update import * + + +class CloudbrokerVinsAPI( + _base.BaseAPI, + CloudbrokerVinsUpdateProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/vins/update.py b/src/dynamix_sdk/api/cloudbroker/vins/update.py new file mode 100644 index 0000000..2f3d206 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/vins/update.py @@ -0,0 +1,17 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerVinsUpdateResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerVinsUpdateProtocol(_base.BasePostAPIFunctionProtocol): + def update( + self, + *, + vins_id: int, + name: str | None = None, + description: str | None = None, + security_group_mode: bool | None = None, + ) -> CloudbrokerVinsUpdateResultBool: + ... diff --git a/src/dynamix_sdk/api/cloudbroker/vnfdev/__init__.py b/src/dynamix_sdk/api/cloudbroker/vnfdev/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/vnfdev/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/cloudbroker/vnfdev/_api.py b/src/dynamix_sdk/api/cloudbroker/vnfdev/_api.py new file mode 100644 index 0000000..6d8b676 --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/vnfdev/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .migrate_abort import * + + +class CloudbrokerVnfdevAPI( + _base.BaseAPI, + CloudbrokerVnfdevMigrateAbortProtocol, +): + pass diff --git a/src/dynamix_sdk/api/cloudbroker/vnfdev/migrate_abort.py b/src/dynamix_sdk/api/cloudbroker/vnfdev/migrate_abort.py new file mode 100644 index 0000000..2a7953c --- /dev/null +++ b/src/dynamix_sdk/api/cloudbroker/vnfdev/migrate_abort.py @@ -0,0 +1,14 @@ +import dynamix_sdk.base as _base + + +class CloudbrokerVnfdevMigrateAbortResultBool(_base.BaseAPIResultBool): + pass + + +class CloudbrokerVnfdevMigrateAbortProtocol(_base.BasePostAPIFunctionProtocol): + def migrate_abort( + self, + *, + vnfdev_id: int, + ) -> CloudbrokerVnfdevMigrateAbortResultBool: + ... diff --git a/src/dynamix_sdk/api/name_mapping.yml b/src/dynamix_sdk/api/name_mapping.yml index 0514356..095046f 100644 --- a/src/dynamix_sdk/api/name_mapping.yml +++ b/src/dynamix_sdk/api/name_mapping.yml @@ -1,19 +1,48 @@ # sdk_name[__model_class_name]: dynamix_name +acc_lvl_vins_ids__AccountForCBAPIResultNM: vins acc_lvl_vins_ids__CloudapiAccountGetResultModel: vins +acc_lvl_vins_ids__CloudbrokerAccountGetResultModel: vins access_type: accesstype access_type__AccessAPIResultNM: right access_type__CloudapiAccountListDeletedParamsModel: acl access_type__CloudapiAccountListParamsModel: acl access_type__CloudapiRgAccessGrantParamsModel: right +access_type__CloudbrokerAccountListDeletedParamsModel: acl +access_type__CloudbrokerAccountListParamsModel: acl account: accountACL account__K8sACLAPIResultNM: accountAcl +account_acl__ResourceGroupForListDeletedAPIResultNM: accountAcl account_id: accountId +account_id__AuditAPIResultNM: account_id +account_id__CloudapiAuditListParamsModel: account_id +account_id__CloudapiSecurityGroupCreateParamsModel: account_id +account_id__CloudapiSecurityGroupListParamsModel: account_id +account_id__CloudapiSepListAvailableSepAndPoolsParamsModel: account_id +account_id__CloudapiStoragePolicyListParamsModel: account_id +account_id__CloudapiVfpoolListParamsModel: accountAccess +account_id__CloudbrokerAccountAddStoragePolicyParamsModel: account_id +account_id__CloudbrokerAccountDelStoragePolicyParamsModel: account_id +account_id__CloudbrokerAuditListParamsModel: account_id +account_id__CloudbrokerSecurityGroupCreateParamsModel: account_id +account_id__CloudbrokerSecurityGroupListParamsModel: account_id +account_id__CloudbrokerStoragePolicyListParamsModel: account_id account_id__DHCPReservationAPIResultNM: account_id +account_id__SecurityGroupAPIResultNM: account_id account_ids: accountAccess +account_ids__CloudapiTrunkListParamsModel: account_ids +account_ids__CloudapiZoneGetResultModel: accountIds +account_ids__CloudbrokerAccountDeleteAccountsParamsModel: accountIds +account_ids__CloudbrokerAccountDisableAccountsParamsModel: accountIds +account_ids__CloudbrokerAccountEnableAccountsParamsModel: accountIds +account_ids__TenantIDsAPIResultNM: accounts +account_ids__TrunkAPIResultNM: accountIds account_name: accountName +account_name__CloudbrokerAccountDeleteParamsModel: name +accounts__CloudapiUserBriefResultModel: Accounts acl: acl acl__CloudapiComputeGetResultModel: ACL acl__CloudapiK8sGetResultModel: ACL +active: active additional_sans: additionalSANs admin: admin affinity_label: affinityLabel @@ -22,15 +51,23 @@ affinity_weight: affinityWeight algorithm: algorithm annotations: annotations anti_affinity_rules: antiAffinityRules -api_url_path: call -api_url_path__UserAuditAPIResultNM: Call +api_access_group_ids: apiaccess +api_access_groups__CloudbrokerUserGetResultModel: apiaccess +api_access_groups__UserAPIResultNM: apiaccess +api_url_path: call arch: arch arch__CloudapiImageGetResultModel: architecture args: args +args__CloudapiComputeGuestAgentExecuteParamsModel: arguments +async_request_task_id: apitask audit_guid: auditId audit_guid__CloudapiAuditGetParamsModel: audit_guid auth_broker: authBroker +auth_broker__CloudbrokerUserCreateParamsModel: provider +auth_key: authkey +auth_keys: authkeys auto_start: autoStart +auto_start__CloudapiComputeMoveToRgParamsModel: autostart available_commands: enabled_agent_features backend__LBHAIPsAPIResultNM: backendIp backend_ha_ip_addr: backendHAIP @@ -46,9 +83,11 @@ backend_name__CloudapiLbBackendServerUpdateParamsModel: backendName backend_name__CloudapiLbBackendUpdateParamsModel: backendName backend_name__CloudapiLbFrontendCreateParamsModel: backendName backends: backends +bandwidth_limit: bandwidth base_domain: baseDomain binding_name: bindingName bindings: bindings +blocked: blocked boot_cdrom_image_id: altBootId boot_disk_size_gb: bootdiskSize boot_disk_size_gb__CloudapiBserviceGroupAddParamsModel: disk @@ -57,6 +96,8 @@ boot_disk_size_gb__CloudapiBserviceGroupUpdateParamsModel: disk boot_disk_size_gb__CloudapiComputeRedeployParamsModel: diskSize boot_disk_size_gb__CloudapiKvmx86CreateBlankParamsModel: bootDisk boot_disk_size_gb__CloudapiKvmx86CreateParamsModel: bootDisk +boot_image_id: boot_image_id +boot_loader_metaiso: loaderMetaIso boot_loader_type: imagetype boot_loader_type__CloudapiComputeGetResultModel: loaderType boot_loader_type__CloudapiComputeUpdateParamsModel: loaderType @@ -68,15 +109,21 @@ boot_order: bootOrder boot_partition: bootPartition bootable: bootable bservice_id: serviceId +bservice_id__AuditAPIResultNM: service_id +bservice_id__CloudapiAuditListParamsModel: service_id bservice_id__CloudapiK8sGetResultModel: bserviceId bservice_id__CloudapiK8sListDeletedParamsModel: basicServiceId bservice_id__CloudapiK8sListParamsModel: basicServiceId -bservice_id__K8sListAPIResultNM: bserviceId -bservice_id__K8sListDeletedAPIResultNM: bserviceId +bservice_id__CloudbrokerAuditListParamsModel: service_id +bservice_id__K8sAPIResultNM: bserviceId +bservice_ids: bserviceIds bsgroup_id: compgroupId bsgroup_name: compgroupName bsgroup_role: compgroupRole -bus_number: bus_number +bus_num: bus_number +bus_num__VGPUAPIResultNM: bus_number +bus_num_hex__CloudapiComputeDiskAddParamsModel: bus_number +bus_num_hex__CloudapiComputeDiskAttachParamsModel: bus_number can_be_deleted: canBeDeleted capabilities: capabilities cd_presented_to: cdPresentedTo @@ -84,24 +131,32 @@ cdrom: cdrom cdrom_image_id: cdromId cdrom_image_id__CloudapiComputeGetResultModel: cdImageId cdrom_image_id__VMAPIResultNM: cdImageId +cdrom_mapping: cdrommap check: check check_ips: checkIps chipset: chipset ci_user_data: userdata ci_user_data__CloudapiBserviceGroupAddParamsModel: userData ci_user_data__CloudapiK8sCreateParamsModel: userData +ci_user_data__CloudapiK8sUpdateWorkerNodesMetaDataParamsModel: userData ci_user_data__CloudapiK8sWorkersGroupAddParamsModel: userData ckey: _ckey +claimed: claimed clear_uniq_pools: clearUniqPools +client_host_key__CloudbrokerNodeAddSshIdentityParamsModel: client_host_key +client_hostname__CloudbrokerNodeAddSshIdentityParamsModel: client_host_name client_ids: clientIds client_ip_addr: remote_addr +client_ip_addr__CloudbrokerNodeAddSshIdentityParamsModel: client_ip_address client_names: clientNames +client_public_key__CloudbrokerNodeAddSshIdentityParamsModel: client_public_key client_type: clientType clone_ids: clones clone_reference: cloneReference cloudapi: cloudapi cloudbroker: cloudbroker cluster_config: clusterConfiguration +cmd: command company: company company_url: companyurl completed: completed @@ -110,23 +165,36 @@ config_saved: configSaved conn_id: connId conn_type: connType consistency: consistency +consumed: Consumed +correlation_id: correlation_id count_change_mode__CloudapiBserviceGroupResizeParamsModel: mode cpu_allocation_parameter: cpu_allocation_parameter cpu_allocation_ratio: cpu_allocation_ratio cpu_count: cpu cpu_count__CloudapiComputeGetResultModel: cpus cpu_count__TenantQuotasAPIResultNM: CU_C +cpu_count__TenantQuotasForResourceConsumptionAPIResultNM: CU_C cpu_count__VMAPIResultNM: cpus cpu_count_quota: maxCPUCapacity cpu_count_total: cpuTotal cpu_pin: cpupin created_after_timestamp: createdAfter +created_after_timestamp__CloudapiSecurityGroupListParamsModel: created_min created_after_timestamp__CloudapiTasksListParamsModel: updateTimeAt +created_after_timestamp__CloudbrokerSecurityGroupListParamsModel: created_min created_before_timestamp: createdBefore +created_before_timestamp__CloudapiSecurityGroupListParamsModel: created_max created_before_timestamp__CloudapiTasksListParamsModel: updateTimeTo +created_before_timestamp__CloudbrokerSecurityGroupListParamsModel: created_max created_by: createdBy +created_by__SecurityGroupAPIResultNM: created_by +created_by__TrunkAPIResultNM: created_by created_timestamp: createdTime +created_timestamp__SecurityGroupAPIResultNM: created_at created_timestamp__TaskAPIResultNM: updateTime +created_timestamp__TrunkAPIResultNM: created_at +current_bytes: cur +current_mac: current_mac_address custom_fields: customFields custom_pre_cfg: customPrecfg data: data @@ -140,19 +208,46 @@ default_gw__DHCPVNFConfigAPIResultNM: default_gw default_gw__GWVNFConfigAPIResultNM: default_gw default_gw__InterfaceForComputeGetAPIResultNM: defGw default_gw__InterfaceForComputeListAPIResultNM: defGw +default_gw__VINSExtNetAPIResultNM: default_gw default_gw__VNFDevInterfaceAPIResultNM: defGw default_net_id: def_net_id default_net_type: def_net_type default_net_type__CloudapiRgCreateParamsModel: def_net default_qos: defaultQos default_zone_id: defaultZoneId +deletable: deletable deleted_by: deletedBy +deleted_by__TrunkAPIResultNM: deleted_by deleted_timestamp: deletedTime +deleted_timestamp__TrunkAPIResultNM: deleted_at description: desc description__CloudapiDisksCreateParamsModel: description description__CloudapiDpdknetListParamsModel: description +description__CloudapiSecurityGroupCreateParamsModel: description +description__CloudapiSecurityGroupListParamsModel: description +description__CloudapiSecurityGroupUpdateParamsModel: description description__CloudapiStackGetResultModel: descr +description__CloudapiVfpoolListParamsModel: description +description__CloudapiZoneGetResultModel: description +description__CloudapiZoneListParamsModel: description +description__CloudbrokerNodeUpdateDescriptionParamsModel: description +description__CloudbrokerSecurityGroupCreateParamsModel: description +description__CloudbrokerSecurityGroupListParamsModel: description +description__CloudbrokerSecurityGroupUpdateParamsModel: description +description__CloudbrokerStoragePolicyAddPoolResultModel: description +description__CloudbrokerStoragePolicyCreateParamsModel: description +description__CloudbrokerStoragePolicyDeletePoolResultModel: description +description__CloudbrokerStoragePolicyUpdateParamsModel: description +description__CloudbrokerStoragePolicyUpdateResultModel: description +description__CloudbrokerUserGetResultModel: description description__DPDKNetAPIResultNM: description +description__PCIDeviceAPIResultNM: description +description__SecurityGroupAPIResultNM: description +description__StoragePolicyAPIResultNM: description +description__TrunkAPIResultNM: description +description__UserAPIResultNM: description +description__VFPoolAPIResultNM: description +description__ZoneForListAPIResultNM: description destruction_timestamp: destructionTime detach: detach detach_disks: detachDisks @@ -164,13 +259,18 @@ dhcp: DHCP dhcp_excluded_reservations: excluded dhcp_reservations__CloudapiExtnetGetResultModel: reservations dirty: dirty +disabled: DISABLED disk_id: diskId +disk_id__CloudapiDisksChangeDiskStoragePolicyParamsModel: disk_id +disk_id__CloudbrokerDisksMigrateAbortParamsModel: disk_id +disk_id__CloudbrokerDisksMigrateParamsModel: disk_id +disk_id__CloudbrokerDisksMigrateStatusParamsModel: disk_id disk_ids: diskIds +disk_mapping: diskmap disk_max_size_gb: diskMaxSize disk_path: diskPath disk_size_gb: CU_D disk_size_gb__CloudapiComputeDiskAddParamsModel: size -disk_size_gb__CloudapiComputeDiskResizeParamsModel: size disk_size_gb__CloudapiDisksResize2ParamsModel: size disk_size_total_gb__CloudapiBserviceGetResultModel: diskTotal disk_type__CloudapiComputeDiskAddParamsModel: diskType @@ -180,7 +280,11 @@ display_name: displayname dns_servers: dns dns_servers__CloudapiVinsCreateInAccountParamsModel: dnsList dns_servers__CloudapiVinsCreateInRGParamsModel: dnsList +dns_servers__CloudapiVinsDnsApplyParamsModel: dnsList domain_name: domainname +domain_name__CloudbrokerUserGetResultModel: domain +domain_name__MigrateStorageJobAPIResultNM: domainName +domain_name__UserAPIResultNM: domain downinter: downinter download_password: passwordDL download_url: url @@ -194,35 +298,51 @@ dst_net_mask__CloudapiVinsStaticRouteAddParamsModel: netmask dst_net_mask__RouteAPIParamsNM: netmask dst_net_mask__RouteAPIResultNM: netmask egress_rate: eRate +email: email email_address: emailaddress email_addresses: emailaddresses +email_addresses__CloudbrokerUserCreateParamsModel: emailaddress emails: emails enabled: enabled +enabled__TenantStatusCountersAPIResultNM: ENABLED entry_count: entryCount error: error +ethertype: ethertype event_idx: event_idx -execution_time_sec: Response Time -execution_time_sec__CloudapiAuditGetResultModel: responsetime +exclude_audit_lines: exclude_audit_lines +exec_result: return +execution_time_sec: responsetime explicit: explicit +ext_ip__K8sVMAPIResultNM: externalip +ext_ip_count: CU_I +ext_ip_count__ResourceCountersAPIResultNM: extips +ext_ip_count_quota: maxNumPublicIP ext_net_id: extnetId +ext_net_id__CloudapiComputeListDeletedParamsModel: extNetId ext_net_id__CloudapiComputeListParamsModel: extNetId ext_net_id__CloudapiExtnetGetParamsModel: net_id ext_net_id__CloudapiRgCreateParamsModel: extNetId ext_net_id__CloudapiVinsCreateInRGParamsModel: extNetId +ext_net_id__CloudapiVinsExtNetConnectParamsModel: netId ext_net_id__GWVNFConfigAPIResultNM: ext_net_id ext_net_ip: extIp ext_net_ip__GWVNFConfigAPIResultNM: ext_net_ip ext_net_ip__VINSForListAPIResultNM: externalIP ext_net_ip__VINSForListDeletedAPIResultNM: externalIP -ext_net_mask: ext_netmask ext_net_name: extNetName +ext_net_prefix: ext_netmask ext_traffic: CU_NP +ext_traffic__ResourceCountersAPIResultNM: exttraffic ext_traffic_quota: maxNetworkPeerTransfer extnet_ids: extnets +extnet_ids__CloudapiZoneGetResultModel: extnetIds extnet_only: extnetOnly fall: fall flag: flag flip_group_id: flipgroupId +flip_group_id__AuditAPIResultNM: flipgroup_id +flip_group_id__CloudapiAuditListParamsModel: flipgroup_id +flip_group_id__CloudbrokerAuditListParamsModel: flipgroup_id force: force force_stop: forceStop free_ip_count: freeIPs @@ -236,26 +356,31 @@ frontend_name: frontendName frontends: frontends gateway: gateway gpu_count: gpu_units +gpu_count__ResourceCountersAPIResultNM: gpu gpu_count_quota__CloudapiAccountUpdateParamsModel: gpu_units gpu_count_quota__CloudbrokerAccountCreateParamsModel: gpu_units +graphics_listen_addr: graphics grid_id: gid group_ids__BServiceAPIResultNM: groups groups: groups guest_agent: qemu_guest guid: guid -guid__UserAuditAPIResultNM: Guid gw: GW ha_mode: HAmode ha_mode__CloudapiLbCreateParamsModel: highlyAvailable history: history +host_key: host_key hostname: hostname +hostname__CloudbrokerNodeGetSshIdentityResultModel: host_name hot_resize: hotResize hot_resize__CloudapiImageCreateParamsModel: hotresize hp_backed: hpBacked +hw_path: hwPath id: id id__CloudapiAccountListDeletedParamsModel: by_id id__CloudapiAccountListParamsModel: by_id id__CloudapiBserviceListParamsModel: by_id +id__CloudapiComputeListDeletedParamsModel: by_id id__CloudapiComputeListParamsModel: by_id id__CloudapiDisksListDeletedParamsModel: by_id id__CloudapiDisksListParamsModel: by_id @@ -271,13 +396,30 @@ id__CloudapiK8sListParamsModel: by_id id__CloudapiLbListDeletedParamsModel: by_id id__CloudapiLbListParamsModel: by_id id__CloudapiLocationsListParamsModel: by_id +id__CloudapiPcideviceListParamsModel: by_id +id__CloudapiRgListDeletedParamsModel: by_id id__CloudapiRgListParamsModel: by_id +id__CloudapiSecurityGroupListParamsModel: by_id id__CloudapiStackListParamsModel: by_id +id__CloudapiStoragePolicyGetParamsModel: storage_policy_id +id__CloudapiStoragePolicyListParamsModel: by_id +id__CloudapiVfpoolListParamsModel: by_id +id__CloudapiVgpuListParamsModel: by_id id__CloudapiVinsListDeletedParamsModel: by_id id__CloudapiVinsListParamsModel: by_id +id__CloudapiZoneListParamsModel: by_id +id__CloudbrokerAccountListDeletedParamsModel: by_id +id__CloudbrokerAccountListParamsModel: by_id +id__CloudbrokerSecurityGroupListParamsModel: by_id +id__CloudbrokerStoragePolicyListParamsModel: by_id +id__VFPoolNodeAPIResultNM: nodeId +id__VINSExtNetAPIResultNM: ext_net_id +ids: ids iface01_name: iface01 iface02_name: iface02 image_id: imageId +image_id__CloudapiImageChangeStoragePolicyParamsModel: image_id +image_id__CloudbrokerImageChangeStoragePolicyParamsModel: image_id image_ids: images image_name: imageName include_deleted: includedeleted @@ -288,12 +430,15 @@ ingress_burst: inBurst ingress_rate: inRate init_config: initConfiguration inter: inter +interface: interface interfaces: interfaces +interfaces__VFPoolNodeAPIResultNM: vfList io_tune: iotune ioeventfd: ioeventfd -iops: iops +iops_limit: limit_iops ip_addr: ipAddr ip_addr__CloudapiComputeChangeIpParamsModel: ip_addr +ip_addr__CloudapiComputeListDeletedParamsModel: ipAddress ip_addr__CloudapiComputeListParamsModel: ipAddress ip_addr__CloudapiFlipgroupCreateParamsModel: ip ip_addr__CloudapiFlipgroupCreateResultModel: ip @@ -305,12 +450,14 @@ ip_addr__CloudapiLbBackendServerAddParamsModel: address ip_addr__CloudapiLbBackendServerUpdateParamsModel: address ip_addr__CloudapiLbFrontendBindParamsModel: bindingAddress ip_addr__CloudapiLbFrontendBindingUpdateParamsModel: bindingAddress +ip_addr__CloudapiVinsExtNetConnectParamsModel: ip ip_addr__DHCPReservationAPIResultNM: ip ip_addr__FlipGroupForListAPIResultNM: ip ip_addr__InterfaceForComputeGetAPIResultNM: ipAddress ip_addr__InterfaceForComputeListAPIResultNM: ipAddress ip_addr__LBFrontendBindingAPIResultNM: address ip_addr__LBServerAPIResultNM: address +ip_addr__VINSExtNetAPIResultNM: ip ip_addr__VNFDevInterfaceAPIResultNM: ipAddress ip_addr__VNFDevMGMTConfigAPIResultNM: ipaddr ip_addresses: ipAddresses @@ -320,24 +467,35 @@ ip_pool_start: ip_start ipa_type: ipaType iqn: iqn join_config: joinConfiguration +json_data__CloudapiUserSetDataParamsModel: data k8ci_id: k8ciId k8ci_id__CloudapiK8sGetResultModel: ciId -k8ci_id__K8sListAPIResultNM: ciId -k8ci_id__K8sListDeletedAPIResultNM: ciId +k8ci_id__K8sAPIResultNM: ciId k8ci_name: k8ciName k8s: k8sAcl k8s_id: k8sId +k8s_id__AuditAPIResultNM: k8s_id +k8s_id__CloudapiAuditListParamsModel: k8s_id +k8s_id__CloudbrokerAuditListParamsModel: k8s_id +k8s_ids: k8sIds key: key kube_proxy_config: kubeProxyConfiguration kubelet_config: kubeletConfiguration kwargs: kwargs label: label labels: labels +last_check_timestamp: lastcheck +last_claimed_by: lastClaimedBy last_modified: lastModified last_update_timestamp: last_update +last_update_timestamp__VGPUAPIResultNM: lastUpdateTime lb_ha_ips: addressVip lb_ha_mode: highlyAvailableLB lb_id: lbId +lb_id__AuditAPIResultNM: lb_id +lb_id__CloudapiAuditListParamsModel: lb_id +lb_id__CloudbrokerAuditListParamsModel: lb_id +lb_ids: lbIds lb_sysctl_params: lbSysctlParams lease_time: lease libvirt_settings: libvirtSettings @@ -345,9 +503,11 @@ link_to: linkTo listen_ssh: listenSsh live_migration_job_id: live_migration_job_id local_ip: localIp +local_ip__CloudapiVinsNatRuleAddParamsModel: intIp local_port: localPort local_port__CloudapiComputePfwAddParamsModel: localBasePort local_port__CloudapiComputePfwDelParamsModel: localBasePort +local_port__CloudapiVinsNatRuleAddParamsModel: intPort location_code: locationCode lock_status: lockStatus log: log @@ -357,33 +517,44 @@ mac__CloudapiComputeNetAttachParamsModel: mac_addr manager_id: managerId manager_type: managerType master: masters +master_group_id: masterGroupId master_node_count: masterNum master_node_cpu_count: masterCpu master_node_disk_size_gb: masterDisk -master_node_driver: masterDriver +master_node_ids: masterIds master_node_ram_size_mb: masterRam master_node_sep_id: masterSepId master_node_sep_pool_name: masterSepPool -max_status_code: maxStatusCode +max_status_code__CloudapiAuditListParamsModel: max_status_code +max_status_code__CloudbrokerAuditListParamsModel: max_status_code maxconn: maxconn maxqueue: maxqueue mem_allocation_ratio: mem_allocation_ratio +meta: _meta mgmt: mgmt mgmt_ip: mgmtIp -migration_job: migrationjob +migrate_to_uri3_job_id: migrate_to_uri3_job_id +migration_job_id: migration_job_id +migration_job_id__CloudapiComputeGetResultModel: migrationjob +migration_job_id__VMAPIResultNM: migrationjob milestones: milestones -min_status_code: minStatusCode +min_status_code__CloudapiAuditListParamsModel: min_status_code +min_status_code__CloudbrokerAuditListParamsModel: min_status_code +mobile: mobile mode: mode mtu: mtu name: name name__CloudapiComputeDiskAddParamsModel: diskName +name__CloudbrokerUserListParamsModel: by_id name__DiskAPIParamsNM: diskName +name__VFPoolNodeInterfaceAPIResultNM: nicName nat: NAT natable_vins_id: natableVinsId natable_vins_ip: natableVinsIp natable_vins_name: natableVinsName natable_vins_network: natableVinsNetwork natable_vins_network_name: natableVinsNetworkName +native_vlan_id: nativeVlanId need_reboot: needReboot net_cidr__CloudapiFlipgroupGetResultModel: network net_id: netId @@ -391,12 +562,14 @@ net_id__CloudapiComputeChangeIpParamsModel: net_id net_id__LBNodeAPIResultNM: networkId net_ip: network net_ip__CloudapiExtnetListParamsModel: network -net_mask: netmask -net_mask__CloudapiExtnetGetResultModel: prefix -net_mask__CloudapiVinsGetResultModel: netMask -net_mask__InterfaceForComputeGetAPIResultNM: netMask -net_mask__InterfaceForComputeListAPIResultNM: netMask -net_mask__VNFDevInterfaceAPIResultNM: netMask +net_mapping: netmap +net_prefix: netmask +net_prefix__CloudapiExtnetGetResultModel: prefix +net_prefix__CloudapiVinsGetResultModel: netMask +net_prefix__InterfaceForComputeGetAPIResultNM: netMask +net_prefix__InterfaceForComputeListAPIResultNM: netMask +net_prefix__VINSExtNetAPIResultNM: prefixlen +net_prefix__VNFDevInterfaceAPIResultNM: netMask net_type: netType net_type__CloudapiComputeChangeIpParamsModel: net_type network_ids: networkIds @@ -406,8 +579,13 @@ network_plugin: networkPlugin network_plugin__CloudapiK8ciListDeletedParamsModel: netPlugins network_plugin__CloudapiK8ciListParamsModel: netPlugins network_plugins: networkPlugins +new_mac: new_mac_address +new_name: new_name +new_vm_name__CloudapiComputeMoveToRgParamsModel: name +new_vm_uuid: new_vm_uuid node_boot_disk_size_gb__CloudapiK8sWorkersGroupGetByNameResultModel: disk node_boot_disk_size_gb__K8sNodeGroupAPIResultNM: disk +node_count__CloudapiK8sWorkerAddParamsModel: num node_count__CloudapiK8sWorkersGroupAddParamsModel: workerNum node_count__CloudapiK8sWorkersGroupGetByNameResultModel: num node_count__K8sNodeGroupAPIResultNM: num @@ -417,9 +595,16 @@ node_cpu_count__K8sNodeGroupAPIResultNM: cpu node_disk_size_gb__CloudapiK8sWorkersGroupAddParamsModel: workerDisk node_groups: k8sGroups node_id: nodeId +node_id__CloudbrokerAuditListParamsModel: node_id +node_id__CloudbrokerNodeAddSshIdentityParamsModel: node_id +node_id__CloudbrokerNodeGetSshIdentityParamsModel: node_id +node_id__CloudbrokerNodeUpdateDescriptionParamsModel: nid +node_ids: nodeIds +node_ids__AuditAPIResultNM: node_ids node_ram_size_mb__CloudapiK8sWorkersGroupAddParamsModel: workerRam node_ram_size_mb__CloudapiK8sWorkersGroupGetByNameResultModel: ram node_ram_size_mb__K8sNodeGroupAPIResultNM: ram +nodes: vfs ntp_servers: ntp numa_affinity: numaAffinity numa_node_id: numaNodeId @@ -429,6 +614,8 @@ os_user_name__CloudapiImageCreateParamsModel: username os_user_name__CloudapiImageGetResultModel: username os_user_name__ImageForListAPIResultNM: username os_users: osUsers +os_users__CloudbrokerComputeStopMigrationInParamsModel: os_users +os_version: os_version other_node: otherNode other_node_indirect: otherNodeIndirect other_node_indirect_soft: otherNodeIndirectSoft @@ -446,18 +633,34 @@ parent_service_id: parentSrvId parent_service_type: parentSrvType part_of_k8s: partK8s password: password +password__CloudbrokerUserGetResultModel: passwd password__DiskForCAComputeGetAPIResultNM: passwd password__DiskForListUnattachedAPIResultNM: passwd -pci_slot: pciSlot -pci_slot__DiskForCAComputeGetAPIResultNM: pci_slot +password__UserAPIResultNM: passwd +path: path +pci_device_id: deviceId +pci_slot_num: pciSlot +pci_slot_num__DiskForCAComputeGetAPIResultNM: pci_slot +pci_slot_num__VGPUAPIResultNM: pciSlot +pci_slot_num_hex: pci_slot +pci_slot_num_hex__CloudapiComputeDiskAddParamsModel: pci_slot permanently: permanently +pgpu_id: pgpuid +pgpu_id__CloudapiVgpuListParamsModel: pgpuId +pgpu_mode__CloudapiVgpuListParamsModel: mode +pgpu_mode__VGPUAPIResultNM: mode +pgpu_processor_type__CloudapiVgpuListParamsModel: type +pgpu_processor_type__VGPUAPIResultNM: type pinned_to_stack: pinnedToStack policy: policy pool_id: poolId +pool_names: pool_names pools: pools port: port port__CloudapiLbFrontendBindParamsModel: bindingPort port__CloudapiLbFrontendBindingUpdateParamsModel: bindingPort +port_range_max: port_range_max +port_range_min: port_range_min pre_reservation_count: preReservationsNum pre_reservations: pre-reservations preferred_cpu_cores: preferredCpu @@ -465,16 +668,20 @@ present_to: presentTo primary: primary primary_node: primaryNode primary_vnfdev_id: priVnfDevId +profile_id: profileId +progress_percent: progress_percent +protected: protected protocol: protocol protocol__CloudapiComputePfwAddParamsModel: proto protocol__CloudapiComputePfwDelParamsModel: proto +protocol__CloudapiVinsNatRuleAddParamsModel: proto provider_name: provider_name -pub_key: pubkey public: public -public_ip_count: CU_I -public_ip_count_quota: maxNumPublicIP +public_keys: public_keys public_port_end: publicPortEnd +public_port_end__CloudapiVinsNatRuleAddParamsModel: extPortEnd public_port_start: publicPortStart +public_port_start__CloudapiVinsNatRuleAddParamsModel: extPortStart pure_virtual: pureVirtual purge_attempt_count: purgeAttempts purge_timestamp: purgeTime @@ -483,6 +690,7 @@ queues: queues quotas: resourceLimits ram_size_mb: ram ram_size_mb__TenantQuotasAPIResultNM: CU_M +ram_size_mb__TenantQuotasForResourceConsumptionAPIResultNM: CU_M ram_size_quota_mb: maxMemoryCapacity ram_size_total_mb: ramTotal read_bytes_sec: read_bytes_sec @@ -493,16 +701,21 @@ reality_device_number: realityDeviceNumber recursively__CloudapiRgDeleteParamsModel: force redundant: redundant reference_id: referenceId +remote_group_id: remote_group_id +remote_ip_prefix: remote_ip_prefix replication: replication request_datetime_iso8601: _ttl -request_timestamp: Time -request_timestamp__CloudapiAuditGetResultModel: timestamp -request_timestamp_end: timestampTo -request_timestamp_start: timestampAt +request_id: request_id +request_timestamp__AuditAPIResultNM: timestamp +request_timestamp_end__CloudapiAuditListParamsModel: timestamp_to +request_timestamp_end__CloudbrokerAuditListParamsModel: timestamp_to +request_timestamp_start__CloudapiAuditListParamsModel: timestamp_at +request_timestamp_start__CloudbrokerAuditListParamsModel: timestamp_at res_id: resId res_name: resName rescue_cd: rescuecd reservations: reservations +reserved: Reserved reserved_cpu_cores: reservedNodeCpus resource_types: resourceTypes resources: resources @@ -511,16 +724,32 @@ result: result rg: rgACL rg__K8sACLAPIResultNM: rgAcl rg_id: rgId +rg_id__AuditAPIResultNM: resgroup_id +rg_id__CloudapiAuditListParamsModel: resgroup_id +rg_id__CloudapiRgAddStoragePolicyParamsModel: resgroup_id +rg_id__CloudapiRgDelStoragePolicyParamsModel: resgroup_id +rg_id__CloudapiSepListAvailableSepAndPoolsParamsModel: rg_id +rg_id__CloudapiStoragePolicyListParamsModel: resgroup_id +rg_id__CloudapiVfpoolListParamsModel: rgAccess +rg_id__CloudbrokerAuditListParamsModel: resgroup_id +rg_id__CloudbrokerRgAddStoragePolicyParamsModel: resgroup_id +rg_id__CloudbrokerRgDelStoragePolicyParamsModel: resgroup_id +rg_id__CloudbrokerStoragePolicyListParamsModel: resgroup_id rg_ids: rgAccess +rg_ids__TenantIDsAPIResultNM: resgroups rg_name: rgName +rgs__CloudapiUserBriefResultModel: RGs rise: rise role: role roles: roles route_id: routeId routes: routes rule_id: ruleId +rule_id__CloudapiSecurityGroupDeleteRuleParamsModel: rule_id +rule_id__CloudbrokerSecurityGroupDeleteRuleParamsModel: rule_id rules: rules rx_queue_size: rx_queue_size +safe: safe same_node: sameNode same_node_soft: sameNodeSoft sdn: sdn @@ -531,17 +760,43 @@ secondary: secondary secondary_node: secondaryNode secondary_vnfdev_id: secVnfDevId secret: secret +security_group_id: security_group_id +security_group_ids: security_groups +security_group_mode: enable_secgroups self_volume_id: selfVolumeId send_access_emails: sendAccessEmails sep_id: sepId +sep_id__AuditAPIResultNM: sep_id +sep_id__CloudapiAuditListParamsModel: sep_id +sep_id__CloudapiComputeCloneParamsModel: sep_id sep_id__CloudapiDisksCreateParamsModel: sep_id sep_id__CloudapiK8sWorkersGroupAddParamsModel: workerSepId +sep_id__CloudapiStoragePolicyListParamsModel: sep_id +sep_id__CloudbrokerAuditListParamsModel: sep_id +sep_id__CloudbrokerComputeCloneParamsModel: sep_id +sep_id__CloudbrokerDisksMigrateParamsModel: sep_id +sep_id__CloudbrokerStoragePolicyAddPoolParamsModel: sep_id +sep_id__CloudbrokerStoragePolicyDeletePoolParamsModel: sep_id +sep_id__CloudbrokerStoragePolicyListParamsModel: sep_id +sep_id__SEPPoolsAPIParamsNM: sep_id +sep_id__SEPPoolsAPIResultNM: sep_id sep_name: sepName +sep_name__SEPPoolsAPIResultNM: sep_name sep_pool_name: pool sep_pool_name__CloudapiBserviceGroupAddParamsModel: sepPool sep_pool_name__CloudapiBserviceGroupGetResultModel: poolName +sep_pool_name__CloudapiComputeCloneParamsModel: pool_name sep_pool_name__CloudapiImageCreateParamsModel: poolName sep_pool_name__CloudapiK8sWorkersGroupAddParamsModel: workerSepPool +sep_pool_name__CloudapiStoragePolicyListParamsModel: pool_name +sep_pool_name__CloudbrokerComputeCloneParamsModel: pool_name +sep_pool_name__CloudbrokerDisksMigrateParamsModel: pool_name +sep_pool_name__CloudbrokerStoragePolicyAddPoolParamsModel: pool_name +sep_pool_name__CloudbrokerStoragePolicyDeletePoolParamsModel: pool_name +sep_pool_name__CloudbrokerStoragePolicyListParamsModel: pool_name +sep_pools: access_seps_pools +sep_pools__ResourceCountersAPIResultNM: seps +sep_pools__StoragePolicyCountersAPIResultNM: seps sep_type: sepType seq_no: seqNo server_default_settings: serverDefaultSettings @@ -549,6 +804,9 @@ server_name: serverName server_settings: serverSettings servers: servers service_account: serviceAccount +service_account__CloudbrokerUserGetResultModel: serviceaccount +service_account__CloudbrokerUserListParamsModel: serviceaccount +service_account__UserAPIResultNM: serviceaccount shared: shareable shared__CloudapiDisksListDeletedParamsModel: shared shared__CloudapiDisksListParamsModel: shared @@ -572,41 +830,82 @@ snapshot_sets: snapSets snapshot_timestamp: snapshotTimestamp snapshots: snapshots sort_by: sortBy -ssh_key: sshkey -ssh_key__CloudapiBserviceCreateParamsModel: sshKey -ssh_key__CloudapiBserviceGetResultModel: sshKey -ssh_user: sshUser +sort_by__CloudapiAuditListParamsModel: sort_by +sort_by__CloudapiSecurityGroupListParamsModel: sort_by +sort_by__CloudapiStoragePolicyListParamsModel: sort_by +sort_by__CloudapiTrunkListParamsModel: sort_by +sort_by__CloudbrokerAuditListParamsModel: sort_by +sort_by__CloudbrokerComputeMigrateStorageListParamsModel: sort_by +sort_by__CloudbrokerSecurityGroupListParamsModel: sort_by +sort_by__CloudbrokerStoragePolicyListParamsModel: sort_by +source_stack_id: sourceStackId +source_type: source_type +source_value: source_value +ssh_public_key: pubkey +ssh_public_key__CloudapiBserviceCreateParamsModel: sshKey +ssh_public_key__CloudapiBserviceGetResultModel: sshKey +ssh_public_key__VNFDevMGMTConfigAPIResultNM: sshkey +ssh_user_name: sshUser stack_id: stackId stage: stage start: start start__CloudapiComputeRedeployParamsModel: autoStart start_timeout: timeoutStart started: started +started__VMStatusCountersAPIResultNM: Started +state: state stateless_sep_id: statelessSepId stateless_sep_type: statelessSepType status: status status_code: statuscode -status_code__UserAuditAPIResultNM: Status Code +stop_replication: stopReplication stopped: stopped +stopped__VMStatusCountersAPIResultNM: Stopped storage_id: storageId +storage_policies: storage_policy +storage_policies__CloudapiRgUpdateParamsModel: storage_policies +storage_policies__ResourceCountersAPIResultNM: policies +storage_policy_id: storage_policy_id +storage_policy_ids: storage_policy_ids +storage_policy_quotas__CloudapiRgCreateParamsModel: storage_policies +storage_policy_quotas__CloudbrokerAccountCreateParamsModel: storage_policies storage_size_gb: CU_DM +storage_size_gb__CloudapiRgAddStoragePolicyParamsModel: limit +storage_size_gb__CloudbrokerAccountAddStoragePolicyParamsModel: limit +storage_size_gb__CloudbrokerRgAddStoragePolicyParamsModel: limit +storage_size_gb__StoragePolicyQuotasAPIParamsNM: limit +storage_size_gb__StoragePolicyQuotasAPIResultNM: limit +storage_size_gb_by_disk_max__ResourceCountersAPIResultNM: disksizemax +storage_size_gb_by_disk_max__StorageCountersAPIResultNM: disksizemax +storage_size_gb_by_disk_max__StoragePolicyCountersAPIResultNM: disksizemax +storage_size_gb_by_real_usage__ResourceCountersAPIResultNM: disksize +storage_size_gb_by_real_usage__StorageCountersAPIResultNM: disksize +storage_size_gb_by_real_usage__StoragePolicyCountersAPIResultNM: disksize storage_size_quota_gb: maxVDiskCapacity +storage_size_quota_gb__StoragePolicyCountersAPIResultNM: limit sysctl_params: sysctlParams system: system system_name: IS +system_name__PCIDeviceAPIResultNM: systemName tags: tags taints: taints target: target +target_dev: target_dev +target_disk_id: targetDiskId target_image_id: targetId +target_stack_id: targetStackId task_guid: taskId tech_status: techStatus timestamp: timestamp +to_clean: to_clean topology: topology +total_bytes : end total_bytes_sec: total_bytes_sec total_bytes_sec_max: total_bytes_sec_max total_disks_size: totalDisksSize total_iops_sec: total_iops_sec total_iops_sec_max: total_iops_sec_max +traffic_direction: direction trunk_vlan_ids: trunk_tags tx_mode: txmode tx_queue_size: tx_queue_size @@ -615,41 +914,66 @@ type__CloudapiImageListParamsModel: typeImage types: types unc_path: UNCPath uniq_pools: uniqPools +updated_after_timestamp__CloudapiSecurityGroupListParamsModel: updated_min +updated_after_timestamp__CloudbrokerSecurityGroupListParamsModel: updated_min +updated_before_timestamp__CloudapiSecurityGroupListParamsModel: updated_max +updated_before_timestamp__CloudbrokerSecurityGroupListParamsModel: updated_max updated_by: updatedBy +updated_by__SecurityGroupAPIResultNM: updated_by +updated_by__TrunkAPIResultNM: updated_by updated_timestamp: updatedTime +updated_timestamp__SecurityGroupAPIResultNM: updated_at +updated_timestamp__TrunkAPIResultNM: updated_at +usage: usage +use_unsafe: use_unsafe user: user user_group_id: userGroupId user_managed: userManaged user_name: username +user_name__AuditAPIResultNM: user user_name__CloudapiAccountAddUserParamsModel: userId user_name__CloudapiAccountDeleteUserParamsModel: userId user_name__CloudapiAccountUpdateUserParamsModel: userId -user_name__CloudapiAuditGetResultModel: user +user_name__CloudapiAuditListParamsModel: user user_name__CloudapiComputeUserGrantParamsModel: userName user_name__CloudapiComputeUserRevokeParamsModel: userName user_name__CloudapiComputeUserUpdateParamsModel: userName user_name__CloudapiRgAccessGrantParamsModel: user user_name__CloudapiRgAccessRevokeParamsModel: user user_name__CloudapiUserApiListParamsModel: userId +user_name__CloudbrokerAuditListParamsModel: user +user_name__CloudbrokerUserBlockParamsModel: user_id +user_name__CloudbrokerUserGetParamsModel: userId +user_name__CloudbrokerUserUnblockParamsModel: user_id user_name__GuestAgentAPIResultNM: user uuid: uuid valid: valid value: value version: version +vfpool_id__CloudapiVfpoolGetParamsModel: id +vfs: vfsInfo +vgpu_id: vgpuId +vgpu_ids__VMAPIResultNM: vgpus vgpus: vgpus vins_count: vinsConnected vins_count__CloudapiAccountGetResultModel: vinses vins_id: vinsId +vins_id__AuditAPIResultNM: vins_id +vins_id__CloudapiAuditListParamsModel: vins_id +vins_id__CloudapiVinsMigrateToZoneParamsModel: net_id +vins_id__CloudbrokerAuditListParamsModel: vins_id +vins_id__CloudbrokerVinsUpdateParamsModel: vins_id vins_ids: vins vins_ids__CloudapiBserviceGroupAddParamsModel: vinses vins_ids__CloudapiBserviceGroupGetResultModel: vinses vins_ids__CloudapiBserviceGroupUpdateVinsParamsModel: vinses +vins_ids__CloudapiZoneGetResultModel: vinsIds vins_name: vinsName virtual: virtual -virtual_image_id: virtualImageId virtual_image_id__CloudapiImageLinkParamsModel: imageId -virtual_image_name: virtualImageName vlan_id: vlanId +vlan_ids: trunkTags +vlan_ids__CloudapiTrunkListParamsModel: trunk_tags vm: computeACL vm_ci_id: computeciId vm_count__BServiceGroupAPIResultNM: computes @@ -658,21 +982,41 @@ vm_count__CloudapiBserviceGroupResizeParamsModel: count vm_counts: computes vm_features: computeFeatures vm_id: computeId +vm_id__AuditAPIResultNM: compute_id +vm_id__CloudapiAuditListParamsModel: compute_id +vm_id__CloudapiComputeAbortSharedSnapshotMergeParamsModel: compute_id vm_id__CloudapiComputeChangeIpParamsModel: compute_id +vm_id__CloudapiComputeChangeMacParamsModel: compute_id +vm_id__CloudapiComputeChangeMtuParamsModel: compute_id +vm_id__CloudapiComputeChangeSecurityGroupsParamsModel: compute_id +vm_id__CloudapiComputeCloneAbortParamsModel: compute_id +vm_id__CloudapiComputeGuestAgentDisableParamsModel: compute_id +vm_id__CloudapiComputeGuestAgentEnableParamsModel: compute_id +vm_id__CloudapiComputeGuestAgentExecuteParamsModel: compute_id +vm_id__CloudapiComputeGuestAgentFeatureUpdateParamsModel: compute_id vm_id__CloudapiDisksGetResultModel: machineId +vm_id__CloudbrokerAuditListParamsModel: compute_id +vm_id__CloudbrokerComputeChangeSecurityGroupsParamsModel: compute_id +vm_id__CloudbrokerComputeCloneAbortParamsModel: compute_id +vm_id__CloudbrokerComputeStartMigrationOutParamsModel: compute_id vm_id__DHCPReservationAPIResultNM: vmId vm_id__DiskForListAndListDeletedAPIResultNM: machineId vm_id__NATRuleAPIResultNM: vmId +vm_id__VGPUAPIResultNM: vmid +vm_id__VirtualFunctionAPIResultNM: vmId vm_ids: vms vm_ids__CloudapiDpdknetListParamsModel: computeIds +vm_ids__CloudapiZoneGetResultModel: computeIds vm_ids__DPDKNetAPIResultNM: computeIds vm_ids__RouteAPIResultNM: computeIds vm_name__CloudapiDisksGetResultModel: machineName vm_name__DiskForListAndListDeletedAPIResultNM: machineName +vm_name__NATRuleAPIResultNM: vmName vms__CloudapiBserviceGetResultModel: computes vms__CloudapiBserviceGroupGetResultModel: computes vms__CloudapiDisksGetResultModel: computes vms__CloudapiK8sWorkersGroupGetByNameResultModel: detailedInfo +vms__CloudapiUserBriefResultModel: Computes vms__CloudapiVinsGetResultModel: computes vms__DiskForListAndListDeletedAPIResultNM: computes vms__K8sNodeGroupAPIResultNM: detailedInfo @@ -682,6 +1026,7 @@ vnf_ids_by_type__CloudapiExtnetGetResultModel: vnfs vnfdev: VNFDev vnfdev_id: vnfdevId vnfdev_id__CloudapiExtnetListParamsModel: vnfDevId +vnfdev_id__CloudbrokerVnfdevMigrateAbortParamsModel: vnfdev_id vnfs__CloudapiVinsGetResultModel: vnfs volume_id: volumeId vxlan_id: vxlanId @@ -696,7 +1041,6 @@ worker_groups: workersGroups worker_node_count: workerNum worker_node_cpu_count: workerCpu worker_node_disk_size_gb: workerDisk -worker_node_driver: workerDriver worker_node_id: workerId worker_node_ram_size_mb: workerRam worker_node_sep_id: workerSepId @@ -705,6 +1049,18 @@ write_bytes_sec: write_bytes_sec write_bytes_sec_max: write_bytes_sec_max write_iops_sec: write_iops_sec write_iops_sec_max: write_iops_sec_max +xmpp: xmpp zone_id: zoneId +zone_id__CloudapiAccountListParamsModel: zone_id +zone_id__CloudapiBserviceListParamsModel: zone_id +zone_id__CloudapiComputeListParamsModel: zone_id +zone_id__CloudapiExtnetListParamsModel: zone_id +zone_id__CloudapiK8sListParamsModel: zone_id +zone_id__CloudapiLbListParamsModel: zone_id +zone_id__CloudapiVinsListParamsModel: zone_id +zone_id__CloudapiVinsMigrateToZoneParamsModel: zone_id +zone_id__CloudbrokerAccountListParamsModel: zone_id zone_ids: zoneIds +zones__AccountForCBAPIResultNM: zoneIds zones__CloudapiAccountGetResultModel: zoneIds +zones__CloudbrokerAccountGetResultModel: zoneIds diff --git a/src/dynamix_sdk/api/path_mapping.yml b/src/dynamix_sdk/api/path_mapping.yml index 524edaa..6d24202 100644 --- a/src/dynamix_sdk/api/path_mapping.yml +++ b/src/dynamix_sdk/api/path_mapping.yml @@ -2,6 +2,7 @@ access_grant: accessGrant access_revoke: accessRevoke add_user: addUser +add_zone: addZone affinity_label_remove: affinityLabelRemove affinity_label_set: affinityLabelSet affinity_relations: affinityRelations @@ -12,37 +13,60 @@ anti_affinity_rule_add: antiAffinityRuleAdd anti_affinity_rule_remove: antiAffinityRuleRemove anti_affinity_rules_clear: antiAffinityRulesClear api_list: apiList +attach_gpu: attachGpu +attach_pci_device: attachPciDevice backend_create: backendCreate backend_delete: backendDelete backend_server_add: backendServerAdd backend_server_delete: backendServerDelete backend_server_update: backendServerUpdate backend_update: backendUpdate +boot_disk_set: bootDiskSet cd_eject: cdEject cd_insert: cdInsert change_ip: changeIp +change_link_state: changeLinkState +change_mac: changeMac compute_add: computeAdd compute_remove: computeRemove +config_reset: configReset create_blank: createBlank create_in_account: createInAccount create_in_rg: createInRG +create_template: createTemplate create_virtual: createVirtual +delete_accounts: deleteAccounts delete_custom_fields: deleteCustomFields delete_disks: deleteDisks +delete_master_from_group: deleteMasterFromGroup delete_user: deleteUser +delete_worker_from_group: deleteWorkerFromGroup +detach_gpu: detachGpu +detach_pci_device: detachPciDevice +disable_accounts: disableAccounts disk_add: diskAdd disk_attach: diskAttach disk_del: diskDel disk_detach: diskDetach -disk_resize: diskResize +disk_migrate: diskMigrate +disk_switch_to_replication: diskSwitchToReplication +dns_apply: dnsApply +enable_accounts: enableAccounts +ext_net_connect: extNetConnect +ext_net_disconnect: extNetDisconnect +ext_net_list: extNetList frontend_bind: frontendBind frontend_bind_delete: frontendBindDelete frontend_binding_update: frontendBindingUpdate frontend_create: frontendCreate frontend_delete: frontendDelete -get_audit: getAudit get_config: getConfig +get_console_url: getConsoleUrl get_default: getDefault +get_node_annotations: getNodeAnnotations +get_node_labels: getNodeLabels +get_node_taints: getNodeTaints +get_resource_consumption: getResourceConsumption get_url: getUrl group_add: groupAdd group_compute_remove: groupComputeRemove @@ -60,18 +84,27 @@ ip_list: ipList ip_release: ipRelease ip_reserve: ipReserve limit_io: limitIO +list_available_sep_and_pools: listAvailableSepAndPools list_deleted: listDeleted list_types: listTypes list_unattached: listUnattached make_highly_available: makeHighlyAvailable +migrate_to_zone: migrateToZone +move_to_rg: moveToRg +nat_rule_add: natRuleAdd +nat_rule_del: natRuleDel +nat_rule_list: natRuleList net_attach: netAttach net_detach: netDetach pfw_add: pfwAdd pfw_del: pfwDel pfw_list: pfwList pin_to_stack: pinToStack +power_cycle: powerCycle remove_def_net: removeDefNet +remove_zone: removeZone set_custom_fields: setCustomFields +set_data: setData set_def_net: setDefNet snapshot_create: snapshotCreate snapshot_delete: snapshotDelete @@ -83,13 +116,16 @@ static_route_list: staticRouteList tag_add: tagAdd tag_remove: tagRemove unpin_from_stack: unpinFromStack +update_sysctl_params: updateSysctlParams update_user: updateUser +update_worker_nodes_meta_data: updateWorkerNodesMetaData user_grant: userGrant user_list: userList user_revoke: userRevoke user_update: userUpdate vnfdev_redeploy: vnfdevRedeploy vnfdev_restart: vnfdevRestart +worker_add: workerAdd worker_reset: workerReset worker_restart: workerRestart workers_group_add: workersGroupAdd diff --git a/src/dynamix_sdk/api/system/_api.py b/src/dynamix_sdk/api/system/_api.py index bc93d79..478a7df 100644 --- a/src/dynamix_sdk/api/system/_api.py +++ b/src/dynamix_sdk/api/system/_api.py @@ -1,6 +1,8 @@ import dynamix_sdk.base as _base +from .info import * from .usermanager import * class SystemAPI(_base.BaseAPI): + info: SystemInfoAPI usermanager: SystemUsermanagerAPI diff --git a/src/dynamix_sdk/api/system/info/__init__.py b/src/dynamix_sdk/api/system/info/__init__.py new file mode 100644 index 0000000..24a9928 --- /dev/null +++ b/src/dynamix_sdk/api/system/info/__init__.py @@ -0,0 +1 @@ +from ._api import * diff --git a/src/dynamix_sdk/api/system/info/_api.py b/src/dynamix_sdk/api/system/info/_api.py new file mode 100644 index 0000000..4554880 --- /dev/null +++ b/src/dynamix_sdk/api/system/info/_api.py @@ -0,0 +1,9 @@ +import dynamix_sdk.base as _base +from .version import * + + +class SystemInfoAPI( + _base.BaseAPI, + SystemInfoVersionProtocol, +): + pass diff --git a/src/dynamix_sdk/api/system/info/version.py b/src/dynamix_sdk/api/system/info/version.py new file mode 100644 index 0000000..631dce3 --- /dev/null +++ b/src/dynamix_sdk/api/system/info/version.py @@ -0,0 +1,10 @@ +import dynamix_sdk.base as _base + + +class SystemInfoVersionResultStr(_base.BaseAPIResultStr): + pass + + +class SystemInfoVersionProtocol(_base.BaseGetAPIFunctionProtocol): + def version(self) -> SystemInfoVersionResultStr: + ... diff --git a/src/dynamix_sdk/base.py b/src/dynamix_sdk/base.py index 9864e49..351a514 100644 --- a/src/dynamix_sdk/base.py +++ b/src/dynamix_sdk/base.py @@ -28,6 +28,7 @@ from pydantic import ( import yaml from dynamix_sdk.config import Config, ConfigWithAuth +from dynamix_sdk.exceptions import RequestException from dynamix_sdk.utils import HTTPMethod, gen_cls_name_from_url_path @@ -98,9 +99,24 @@ class BaseGetAPIFunctionProtocol(BaseAPIFunctionProtocol): pass +class BaseDeleteAPIFunctionProtocol(BaseAPIFunctionProtocol): + pass + + +class BasePatchAPIFunctionProtocol(BaseAPIFunctionProtocol): + pass + + +class BasePutAPIFunctionProtocol(BaseAPIFunctionProtocol): + pass + + base_proto_to_http_method: dict[type[BaseAPIFunctionProtocol], HTTPMethod] = { BasePostAPIFunctionProtocol: HTTPMethod.POST, BaseGetAPIFunctionProtocol: HTTPMethod.GET, + BaseDeleteAPIFunctionProtocol: HTTPMethod.DELETE, + BasePatchAPIFunctionProtocol: HTTPMethod.PATCH, + BasePutAPIFunctionProtocol: HTTPMethod.PUT, } @@ -328,6 +344,15 @@ def create_api_params_cls( ) +def get_func_api_path(*, func_name: str, path_mapping: dict) -> str: + api_path_parts = [] + for func_part in func_name.split('.'): + api_path_parts.append( + path_mapping.get(func_part, func_part) + ) + return f'/{"/".join(api_path_parts)}' + + APIParamsP = ParamSpec('APIParamsP') APIResultT = TypeVar( 'APIResultT', @@ -337,10 +362,9 @@ APIResultT = TypeVar( class BaseAPI(ABC): _config: Config - _base_api_path: None | str - _path_mapping_dict: dict[str, str] = path_mapping_dict - _last_call_api_path: None | str = None + _parent_api_group_names: list[str] _name_mapping_dict: dict[str, str] = name_mapping_dict + _path_mapping_dict: dict[str, str] = path_mapping_dict _post_json: bool = True def __init_subclass__( @@ -359,31 +383,26 @@ class BaseAPI(ABC): def __init__( self, config: Config, - base_api_path: None | str = None + parent_api_group_names: None | list = None, ): self._config = config - self._base_api_path = base_api_path + self._parent_api_group_names = parent_api_group_names or [] def __getattribute__(self, name: str) -> Any: if name.startswith('_'): return super().__getattribute__(name) else: - path_part = self._path_mapping_dict.get(name, name) if name in self.__annotations__: annotation = self.__annotations__[name] if issubclass(annotation, BaseAPI): api_cls = annotation return api_cls( config=self._config, - base_api_path=( - f'{self._base_api_path or ""}/{path_part}' + parent_api_group_names=( + self._parent_api_group_names + [name] ) ) else: - self._last_call_api_path = ( - f'{self._base_api_path or ""}/{path_part}' - ) - attr_value = super().__getattribute__(name) if not inspect.ismethod(attr_value): raise ValueError @@ -406,16 +425,21 @@ class BaseAPI(ABC): if not isinstance(protocol_method, MethodType): raise TypeError + func_name_parts = ( + self._parent_api_group_names + [protocol_method.__name__] + ) + func_name = '.'.join(func_name_parts) + def api_function( *args: APIParamsP.args, **kwargs: APIParamsP.kwargs, ): config = self._config - if self._last_call_api_path: - api_path = self._last_call_api_path - else: - raise ValueError + api_path = get_func_api_path( + func_name=func_name, + path_mapping=self._path_mapping_dict, + ) api_params_cls_name = gen_api_params_cls_name( api_path=api_path, @@ -476,7 +500,12 @@ class BaseAPI(ABC): match http_method: case HTTPMethod.GET: req_params = model_data - case HTTPMethod.POST: + case ( + HTTPMethod.POST + | HTTPMethod.DELETE + | HTTPMethod.PATCH + | HTTPMethod.PUT + ): if self._post_json: req_json = model_data else: @@ -494,23 +523,33 @@ class BaseAPI(ABC): ).prepare() attempts = config.http503_attempts - with requests.Session() as session: - while True: - http_response = session.send( - request=http_request, - verify=config.verify_ssl, - ) + try: + with requests.Session() as session: + while True: + http_response = session.send( + request=http_request, + verify=config.verify_ssl, + ) - if http_response.status_code == 503: - if attempts < 1: - break + if http_response.status_code == 503: + if attempts < 1: + break + else: + attempts -= 1 + time.sleep(config.http503_attempts_interval) else: - attempts -= 1 - time.sleep(config.http503_attempts_interval) - else: - break + break - http_response.raise_for_status() + http_response.raise_for_status() + except requests.exceptions.RequestException as e: + if config.wrap_request_exceptions: + raise RequestException( + orig_exception=e, + func_name=func_name, + func_kwargs=kwargs, + ) + else: + raise e api_result_context = APIResultContext( api_params=api_params, @@ -553,4 +592,10 @@ class BaseAPI(ABC): return api_result + api_function.__name__ = func_name.replace('.', '__') + + if self._config.f_decorators: + for decorator in reversed(self._config.f_decorators): + api_function = decorator(api_function) + return api_function diff --git a/src/dynamix_sdk/bvs.py b/src/dynamix_sdk/bvs.py index 45d92dc..8d4fa49 100644 --- a/src/dynamix_sdk/bvs.py +++ b/src/dynamix_sdk/bvs.py @@ -1,4 +1,5 @@ from dynamix_sdk import base, config +from dynamix_sdk.utils import F_DECORATOR class BVSAuth(config.AuthenticatorProtocol): @@ -20,6 +21,8 @@ class BVSAuth(config.AuthenticatorProtocol): http503_attempts: int = 10, http503_attempts_interval: int = 5, result_extra_allow: bool = True, + wrap_request_exceptions: bool = False, + f_decorators: list[F_DECORATOR] | None = None, ): self._config = config.BaseConfigWithDomain( url=url, @@ -28,6 +31,8 @@ class BVSAuth(config.AuthenticatorProtocol): http503_attempts=http503_attempts, http503_attempts_interval=http503_attempts_interval, result_extra_allow=result_extra_allow, + wrap_request_exceptions=wrap_request_exceptions, + f_decorators=f_decorators, ) self.client_id = client_id diff --git a/src/dynamix_sdk/config.py b/src/dynamix_sdk/config.py index 5f92b00..6d4cdc9 100644 --- a/src/dynamix_sdk/config.py +++ b/src/dynamix_sdk/config.py @@ -2,6 +2,8 @@ from dataclasses import dataclass import re from typing import Protocol +from dynamix_sdk.utils import F_DECORATOR + @dataclass(kw_only=True) class Config: @@ -11,6 +13,8 @@ class Config: http503_attempts: int = 10 http503_attempts_interval: int = 5 result_extra_allow: bool = False + wrap_request_exceptions: bool = False + f_decorators: list[F_DECORATOR] | None = None def get_api_url(self, api_path: str): substitutions = re.findall(r'\[\w+\]', api_path) diff --git a/src/dynamix_sdk/decs3o.py b/src/dynamix_sdk/decs3o.py index cdac3c5..5a2b1f5 100644 --- a/src/dynamix_sdk/decs3o.py +++ b/src/dynamix_sdk/decs3o.py @@ -1,4 +1,5 @@ from dynamix_sdk import base, config +from dynamix_sdk.utils import F_DECORATOR class DECS3OAuth(config.AuthenticatorProtocol): @@ -15,6 +16,8 @@ class DECS3OAuth(config.AuthenticatorProtocol): http503_attempts: int = 10, http503_attempts_interval: int = 5, result_extra_allow: bool = True, + wrap_request_exceptions: bool = False, + f_decorators: list[F_DECORATOR] | None = None, ): self._config = config.Config( base_api_path='/v1', @@ -23,6 +26,8 @@ class DECS3OAuth(config.AuthenticatorProtocol): http503_attempts=http503_attempts, http503_attempts_interval=http503_attempts_interval, result_extra_allow=result_extra_allow, + wrap_request_exceptions=wrap_request_exceptions, + f_decorators=f_decorators, ) self.client_id = client_id diff --git a/src/dynamix_sdk/dynamix.py b/src/dynamix_sdk/dynamix.py index 2d91835..a902178 100644 --- a/src/dynamix_sdk/dynamix.py +++ b/src/dynamix_sdk/dynamix.py @@ -1,9 +1,15 @@ +import json +from warnings import warn from dynamix_sdk import config +from dynamix_sdk.exceptions import IncompatibleAPIError +from dynamix_sdk.utils import F_DECORATOR from .api import API class Dynamix: _config: config.ConfigWithAuth + _COMPATIBLE_DX_BUILD = 1145 + _dx_build: int def __init__( self, @@ -14,6 +20,9 @@ class Dynamix: http503_attempts: int = 10, http503_attempts_interval: int = 5, result_extra_allow: bool = False, + ignore_api_compatibility: bool = False, + wrap_request_exceptions: bool = False, + f_decorators: list[F_DECORATOR] | None = None, ): self._config = config.ConfigWithAuth( base_api_path='/restmachine', @@ -23,8 +32,39 @@ class Dynamix: http503_attempts=http503_attempts, http503_attempts_interval=http503_attempts_interval, result_extra_allow=result_extra_allow, + wrap_request_exceptions=wrap_request_exceptions, + f_decorators=f_decorators, ) + self._dx_build = self._get_dx_build() + self._check_dx_compatibility(ignore_api_compatibility) @property def api(self): return API(config=self._config) + + @property + def compatible_dx_build(self) -> int: + return self._COMPATIBLE_DX_BUILD + + @property + def dx_build(self) -> int: + return self._dx_build + + def _get_dx_build(self) -> int: + result = self.api.system.info.version() + dx_build = json.loads(result.replace("'", '"'))['build'] + if not isinstance(dx_build, int): + raise TypeError(f'DX build must be an int, got {type(dx_build)}') + return dx_build + + def _check_dx_compatibility(self, ignore_api_compatibility: bool): + if self.dx_build != self.compatible_dx_build: + message = ( + f'Incompatible Dynamix build. ' + f'Dynamix build: {self.dx_build}. ' + f'Compatible build: {self.compatible_dx_build}' + ) + if ignore_api_compatibility: + warn(message=message) + else: + raise IncompatibleAPIError(message=message) diff --git a/src/dynamix_sdk/exceptions.py b/src/dynamix_sdk/exceptions.py new file mode 100644 index 0000000..024cdd7 --- /dev/null +++ b/src/dynamix_sdk/exceptions.py @@ -0,0 +1,29 @@ +import requests + + +class IncompatibleAPIError(Exception): + """Raised when the API is incompatible""" + message: str + + def __init__( + self, + message: str, + ): + self.message = message + super().__init__(message) + + +class RequestException(Exception): + orig_exception: requests.exceptions.RequestException + func_name: str + func_kwargs: None | dict = None + + def __init__( + self, + orig_exception: requests.exceptions.RequestException, + func_name: str, + func_kwargs: None | dict, + ): + self.orig_exception = orig_exception + self.func_name = func_name + self.func_kwargs = func_kwargs diff --git a/src/dynamix_sdk/utils.py b/src/dynamix_sdk/utils.py index a83c365..e96aaaf 100644 --- a/src/dynamix_sdk/utils.py +++ b/src/dynamix_sdk/utils.py @@ -1,9 +1,14 @@ from enum import Enum, auto as enum_auto -from typing import Any -from collections.abc import Sequence +from typing import Any, ParamSpec, TypeVar +from collections.abc import Callable, Sequence + + +P = ParamSpec('P') +T = TypeVar('T') JSON = int | str | bool | list['JSON'] | dict[str, 'JSON'] | None +F_DECORATOR = Callable[[Callable[P, T]], Callable[P, T]] class AutoNameEnum(Enum): @@ -17,12 +22,15 @@ class EmptyStr(str, Enum): class HTTPMethod(str, AutoNameEnum): + DELETE = enum_auto() + PATCH = enum_auto() + PUT = enum_auto() POST = enum_auto() GET = enum_auto() def gen_cls_name_from_url_path(url_path: str, postfix: str = ''): - parts = url_path.strip('/').replace('-', '').split('/') + parts = url_path.strip('/').replace('-', '').replace('_', '/').split('/') base = ''.join(f'{p[0].upper()}{p[1:]}' for p in parts) return f'{base}{postfix}' diff --git a/tests/local/test_class_naming.py b/tests/local/test_class_naming.py index 6a7ed65..64281d7 100644 --- a/tests/local/test_class_naming.py +++ b/tests/local/test_class_naming.py @@ -4,17 +4,19 @@ 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 = f'{api_group.name.capitalize()}API' + 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 = ( - f'{api_group.name.capitalize()}' - f'{api_subgroup.name.capitalize()}' - f'API' + 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}' diff --git a/tests/test_with_api_definition.py b/tests/test_with_api_definition.py index f02eb77..00bf90b 100644 --- a/tests/test_with_api_definition.py +++ b/tests/test_with_api_definition.py @@ -15,21 +15,257 @@ 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 = ''', # 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 = ''', # 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 = ''', # 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.k8s.create: annotation of parameter "lb_sysctl_params" must contain BaseAPIParamsNestedModel.', # noqa: E501 - 'cloudapi.user.get_audit: result type must be child of BaseAPIParamsNestedModel.', # 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: result type must be child of BaseAPIResultBool.', # 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.create: annotation of parameter "sysctl_params" must contain BaseAPIParamsNestedModel.', # noqa: E501 + '''cloudapi.lb.update_sysctl_params: parameter "sysctl_params", target_annotation = dict[str, str], expected_annot = ''', # noqa: E501 + '''cloudbroker.compute.start_migration_out: parameter "disk_mapping", target_annotation = dict[str, str], expected_annot = ''', # noqa E501 + '''cloudbroker.compute.start_migration_out: parameter "cdrom_mapping", target_annotation = dict[str, str], expected_annot = ''', # noqa E501 + '''cloudbroker.compute.start_migration_out: parameter "net_mapping", target_annotation = dict[str, dynamix_sdk.api._nested.params.NetMapConfigAPIParamsNM], expected_annot = ''', # 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, @@ -37,6 +273,7 @@ def test_with_api_definition( ): 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): @@ -49,7 +286,7 @@ def test_with_api_definition( if func_full_api_path not in dx_api_definition_paths: inconsistencies.append( - f"{'.'.join(sdk_func.call_attrs)}:" + f"{sdk_func_name}:" f' url path {sdk_func.url_path} not found in' f' DX API definition.' ) @@ -66,7 +303,7 @@ def test_with_api_definition( m.upper() for m in func_api_definition.keys() ] inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' + 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:' @@ -78,14 +315,6 @@ def test_with_api_definition( if not isinstance(func_api_def_method, dict): raise TypeError - type_mappings = { - 'integer': int, - 'string': str, - 'boolean': bool, - 'object': sdk_types.BaseAPIParamsNestedModel, - 'number': float, - } - if api_def_result_type := get_nested_value( d=func_api_def_method, keys=('responses', '200', 'schema', 'type'), @@ -95,7 +324,7 @@ def test_with_api_definition( expected_result_type = sdk_types.BaseAPIResultBool if not issubclass(sdk_func.result_cls, expected_result_type): inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' + f'{sdk_func_name}:' f' result type must be child of' f' {expected_result_type.__qualname__}.' ) @@ -111,222 +340,86 @@ def test_with_api_definition( ) sdk_func_params[alias] = p - api_definition_params = func_api_def_method.get('parameters') - if not api_definition_params: - if sdk_func_params: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' this function must not have parameters.' - ) - continue + api_definition_params = func_api_def_method.get('parameters') or [] + body_schema = None if not isinstance(api_definition_params, list): raise TypeError - dx_param_names = set() for p in api_definition_params: - if not isinstance(p, dict): - raise TypeError - dx_param_names.add(p['name']) - - if len(sdk_func_params) > len(dx_param_names): - unused_sdk_param_names = [] - for sdk_param_alias, sdk_param in sdk_func_params.items(): - if sdk_param_alias not in dx_param_names: - unused_sdk_param_names.append(sdk_param.name) - if unused_sdk_param_names: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' unused parameters:' - f' {", ".join(sorted(unused_sdk_param_names))}' - ) - - for api_def_param in api_definition_params: - if not isinstance(api_def_param, dict): - raise TypeError - - api_def_param_enum = api_def_param.get('enum') if ( - api_def_param_enum is not None - and not isinstance(api_def_param_enum, list) + isinstance(p, dict) + and p.get('name') == 'body' and 'schema' in p ): - raise TypeError + body_schema = p['schema'] + break - api_def_param_default = api_def_param.get('default') + dx_param_names = set() + param_defs = dict() + required_params = set() - api_def_param_type = api_def_param.get('type') - if ( - api_def_param_type is not None - and not isinstance(api_def_param_type, str) - ): - raise TypeError + if isinstance(body_schema, dict) and 'properties' in body_schema: + properties = body_schema['properties'] - api_def_param_items = api_def_param.get('items') - if ( - api_def_param_items is not None - and not isinstance(api_def_param_items, dict) - ): + if not isinstance(properties, dict): raise TypeError - necessary_dx_param = not ( - api_def_param_enum - and len(api_def_param_enum) == 1 - and api_def_param_default is not None - ) - - sdk_param_alias = api_def_param['name'] - if not isinstance(sdk_param_alias, str): + required = body_schema.get('required', []) + if not isinstance(required, list): raise TypeError - param_exists_in_sdk = sdk_param_alias in sdk_func_params.keys() + dx_param_names.update(properties.keys()) + param_defs.update(properties) + required_params.update(required) - if not param_exists_in_sdk: - if necessary_dx_param: + else: + if not api_definition_params: + if sdk_func_params: inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' API has parameter "{sdk_param_alias}"' - f" but this SDK function doesn't have" - f' corresponding parameter.' + f'{sdk_func_name}: this function ' + f'must not have parameters.' ) continue - sdk_param_name = sdk_func_params[sdk_param_alias].name + 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 - if not necessary_dx_param: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' parameter "{sdk_param_name} is unnecessary in SDK.' - ) - continue + dx_param_names.add(param_name) + param_defs[param_name] = p + if p.get('required', False): + required_params.add(param_name) - sdk_func_param = sdk_func_params[sdk_param_alias] - - if sdk_func_param.annotation is Any: + if not dx_param_names: + if sdk_func_params: inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must not be Any.' + f"{sdk_func_name}: this function must not have parameters." ) - continue - - if api_def_param_default and api_def_param_default != -1: - if sdk_func_param.default != api_def_param_default: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' default value of parameter "{sdk_param_name}"' - f' must be {api_def_param_default}.' - ) - - target_annotation = sdk_func_param.annotation - if not api_def_param.get('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 - ): - if sdk_func_param.default is not None: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' default value of parameter "{sdk_param_name}"' - f' must be None.' - ) - - if not isinstance(sdk_func_param.annotation, UnionType): - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must be Union.' - ) - continue - - annot_union_args = get_args(sdk_func_param.annotation) - if NoneType not in annot_union_args: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must contain None.' - ) - continue - - if not len(annot_union_args) == 2: - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must contain two types.' - ) - continue - - 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'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must contain list[...].' - ) - continue - - 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: - continue - 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: - continue - elif api_def_param_type is not None: - expected_annot = type_mappings.get(api_def_param_type) - if expected_annot is None: - continue - - if not inspect.isclass(target_annotation): - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' parameter "{sdk_param_name}",' - f' {target_annotation = },' # noqa: E202, E251 - f' {expected_annot = }' # noqa: E202, E251 + 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, ) - continue + ) - if api_def_param_enum: - if not issubclass(target_annotation, Enum): - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must contain enum.' - ) - continue - enum_from_annot = target_annotation - enum_values = enum_from_annot.__members__.values() - if sorted(api_def_param_enum) != sorted(enum_values): - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' parameter "{sdk_param_name}":' - f' enum {enum_from_annot.__qualname__}' - f' must contain these values: {api_def_param_enum}.' + 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, ) - elif not issubclass(target_annotation, expected_annot): - inconsistencies.append( - f'{".".join(sdk_func.call_attrs)}:' - f' annotation of parameter "{sdk_param_name}"' - f' must contain {expected_annot.__qualname__}.' ) - continue for expected_inconsistency in expected_inconsistencies: if expected_inconsistency in inconsistencies: