diff --git a/CHANGELOG.md b/CHANGELOG.md index 20b06bd..bb3c6cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,128 @@ -## Version 4.8.3 +## Version 4.9.0 + +### Добавлено + +#### account +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-823 | Опциональное поле `desc` в resource `decort_account` в cloudapi/account, в resource `decort_cb_account` в cloudbroker/account | +| BATF-823 | Вычисляемое поле `desc` в datasources `decort_cb_account_list` , `decort_cb_account_list_deleted`, `decort_cb_account`, `decort_cb_account_rg_list` в cloudbroker/account, в datasources `decort_account`, `decort_account_list`, `decort_account_deleted_list`, `decort_account_rg_list` в cloudapi/account | +| BATF-832 | Опциональное поле `reason` в resource `decort_cb_account` в cloudbroker/account и в resource `decort_account` в cloudapi/account| + +#### audit +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-826 | Опциональное поле `request_id` в datasource `decort_cb_audit_list` в cloudbroker/audit | +| BATF-836 | Вычисляемое поле `physical_node` в datasource `decort_cb_audit_linked_jobs` в cloudbroker/audit | +| BATF-870 | Вычисляемое поле `ttl` в datasource `decort_cb_audit` и вычисляемые поля `ttl`, `args`, `kwargs`, `result`, `timestamp_end`, `remote_addr` и `tags` в datasource `decort_cb_audit_list` в cloudbroker/audit | + +#### bservice +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-833 | Опциональное поле `chipset` в resource `decort_bservice_group` в cloudapi/bservice | + +#### disks +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-873 | Вычисляемые поля `size_available`, `updated_by`, `deleted_by`, `created_by`, `updated_time` и `milestones` в datasource `decort_disk_list` и `decort_disk_list_deleted` в cloudapi/disks | +| BATF-873 | Вычисляемые поля `size_available`, `updated_by`, `deleted_by`, `created_by`, `updated_time`, `machine_id`, `machine_name` и `milestones` в datasource `decort_disk` в cloudapi/disks и в datasource `decort_cb_disk` в cloudbroker/disks | +| BATF-873 | Вычисляемые поля `size_available`, `updated_by`, `deleted_by`, `created_by` и `updated_time` в datasource `decort_cb_disk_list` в cloudbroker/disks | +| BATF-873 | Вычисляемые поля `machine_id`, `machine_name`, `updated_by`, `deleted_by`, `created_by` и `updated_time` в resource `decort_disk` в cloudapi/disks и в resource `decort_cb_disk` в cloudbroker/disks | + +#### extnet +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-861 | Опциональное поле `ovs_bridge` в datasource `decort_extnet_list` в cloudapi/extnet | +| BATF-856 | Вычисляемое поле `ntp` в datasource `decort_extnet` в cloudapi/extnet и в datasource `decort_cb_extnet` в cloudbroker/extnet | + +#### image +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-831 | Вычисляемое поле `snapshot_id` в datasource `decort_image` и resource `decort_image`, `decort_image_from_blank_compute`, `decort_image_from_platform_disk`, `decort_image_virtual` в cloudapi/image | + +#### k8s +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-823 | Вычисляемое поле `desc` в datasources `decort_k8s`, `decort_k8s_list` в cloudapi/k8s| + +#### kvmvm +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-828 | Опциональное поле `stack_name` в datasource `decort_cb_kvmvm_list` в cloudbroker/kvmvm | +| BATF-828 | Вычисляемое поле `stack_name` в datasource `decort_cb_kvmvm_list_deleted` в cloudbroker/kvmvm | +| BATF-829 | Опциональные поля `loader_type`, `boot_type`, `hot_resize`, `network_interface_naming` в resource `decort_kvmvm` в cloudapi/kvmvm и resource `decort_cb_kvmvm` в cloudbroker/kvmvm| +| BATF-829 | Вычисляемые поля `loader_type`, `boot_type`, `hot_resize`, `network_interface_naming` в datasources `decort_kvmvm`, `decort_kvmvm_list`, `decort_kvmvm_list_deleted` в cloudapi/kvmvm и datasources `decort_cb_kvmvm`, `decort_cb_kvmvm_list`, `decort_cb_kvmvm_list_deleted` в cloudbroker/kvmvm| +| BATF-830 | Вычисляемое поле `present_to` в resources `decort_cb_kvmvm` в cloudbroker/kvmvm и `decort_kvmvm` в cloudapi/kvmvm | +| BATF-837 | Вычисляемое поле `nid` в datasource `decort_cb_kvmvm_list` в cloudbroker/kvmvm | +| BATF-866 | Вычисляемое поле `size_available` в datasources `decort_cb_kvmvm` в cloudbroker/kvmvm и `decort_kvmvm` в cloudapi/kvmvm | + +#### location +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-896 | Опциональное поле `sdn_support` в datasource `decort_locations_list` в cloudapi/location | + +#### sep +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-822 | Datasources `decort_sep_and_pools_available_list` в cloudapi/sep и datasource `decort_cb_sep_and_pools_available_list` в cloudbroker/sep | +| BATF-839 | Datasource `decort_cb_sep_template` в cloudbroker/sep | + +#### vins +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-821 | Опциональное поле `status` в datasource `decort_vins_list` в cloudapi/vins и datasource `decort_cb_vins_list` в cloudbroker/vins | ### Исправлено +#### disks +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-819 | Изменен тип поля `type` с Optional на Computed в resource `decort_disk` в cloudapi/disks и resource `decort_cb_disk` в cloudbroker/disks | +| BATF-830 | Изменен тип поля `present_to` с []int на map[string]int в datasources `decort_disk`, `decort_disk_list`, `decort_disk_replication`, в resources `decort_disk`, `decort_disk_replication` в cloudapi/disks, в datasources `decort_cb_disk`, `decort_cb_disk_replication`, `decort_cb_disk_list`, `decort_cb_disk_list_deleted`, `decort_cb_disk_list_unattached` и resources `decort_cb_disk`, `decort_cb_disk_replication` в cloudbroker/disks | +| BATF-835 | Изменен тип поля `gid` с Required на Computed в resource `decort_disk` в cloudapi/disks и resource `decort_cb_disk` в cloudbroker/disks | + +#### image +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-830 | Изменен тип поля `present_to` с []int на map[string]int в datasource `decort_image`, resource `decort_virtual_image`, `decort_image_from_platform_disk`, `decort_image`, `decort_image_from_blank_compute` в cloudapi/image, в datasource `decort_cb_image` и resources `decort_cb_cdrom_image`, `decort_cb_virtual_image`, `decort_cb_image`, `decort_cb_image_from_blank_compute`, `decort_cb_image_from_platform_disk` в cloudbroker/image | +| BATF-835 | Изменен тип поля `gid` с Required на Computed в resource `decort_cb_image` и `decort_cb_image_cdrom` в cloudbroker/image | +| BATF-874 | Изменено возможное для ввода значение с `other` на `unknown` для поля `type` в resources `decort_image_from_blank_compute`, `decort_image_from_platform_disk`, `decort_image` в cloudapi/image и для поля `image_type` в resources `decort_cb_image_from_blank_compute`, `decort_cb_image_from_platform_disk` в cloudbroker/image| +| BATF-917 | Изменен тип поля `sep_id` с Optional на Computed в resource `decort_image_from_blank_compute`, `decort_image_from_platform_disk` в cloudapi/image и resources `decort_cb_image_from_blank_compute`, `decort_cb_image_from_platform_disk` в cloudbroker/image| + +#### kvmvm +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-830 | Изменен тип поля `present_to` с []int на map[string]int в datasources `decort_kvmvm` в cloudapi/kvmvm и `decort_cb_kvmvm` в cloudbroker/kvmvm| +| BATF-859 | Изменен тип поля `pinned` с bool на int в resource `decort_cb_kvmvm` и data sources `decort_cb_kvmvm`, `decort_cb_kvmvm_list` и `decort_cb_kvmvm_list_deleted` в cloudbroker/kvmvm | +| BATF-868 | Изменен тип поля `mac` с computed на optional/computed в resources `decort_kvmvm`, `decort_cb_kvmvm` в cloudapi/kvmvm и cloudbroker/kvmvm| +| BATF-897 | Убраны ограничения по количеству сетей и дисков в resources `decort_kvmvm`, `decort_cb_kvmvm` в cloudapi/kvmvm и cloudbroker/kvmvm| +| BATF-919 | Изменено поведение ВМ при удалении дисков из поля `extra_disks`, теперь ВМ не останавливатся при отключении дисков | +| BATF-928 | Изменен тип поля `vgpus` c []int на []struct в resource `decort_kvmvm`, datasource `decort_kvmvm` в cloudapi/kvmvm и resource `decort_cb_kvmvm`, datasource `decort_cb_kvmvm` в cloudbroker/kvmvm | + #### vins | Идентификатор
задачи | Описание | | --- | --- | -| BATF-880 | Исправлена ошибка создания resource `decort_vins` с указанным блоком `ext_net` в cloudapi/vins | \ No newline at end of file +| BATF-881 | Исправлена ошибка создания resource `decort_vins` с указанным блоком `ext_net` в cloudapi/vins | + +### Удалено + +#### account +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-922 | Обязательное поле `username` в resource `decort_account` в cloudapi/account | + +#### disks +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-819 | Опциональное поле `ssd_size` в resource `decort_cb_disk` в cloudbroker/disks | + +#### kvmvm +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-857 | Опциональное поле `depresent` в resource `decort_cb_kvmvm` в cloudbroker/kvmvm | + +#### rg +| Идентификатор
задачи | Описание | +| --- | --- | +| BATF-838 | Опциональное поле `register_computes` в resource `decort_cb_rg` в cloudbroker/rg и `decort_resgroup` в cloudapi/rg | +| BATF-838 | Вычисляемое поле `register_computes` в datasourses `decort_cb_rg`, `decort_cb_rg_list`, `decort_cb_rg_list_deleted` в cloudbroker/rg и `decort_resgroup`, `decort_rg_list`, `decort_rg_list_deleted` в cloudapi/rg | \ No newline at end of file diff --git a/Makefile b/Makefile index cd69a4e..437549a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ ZIPDIR = ./zip BINARY=${NAME} WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH} MAINPATH = ./cmd/decort/ -VERSION=4.8.3 +VERSION=4.9.0 OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH) FILES = ${BINARY}_${VERSION}_darwin_amd64\ diff --git a/README.md b/README.md index 55d4fb0..7f2e2ed 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Terraform provider для платформы Digital Energy Cloud Orchestration | Версия DECORT API | Версия провайдера Terraform | | ------ | ------ | +| 4.3.0 | 4.9.x | | 4.2.0 | 4.8.x | | 4.1.0 | 4.7.x | | 4.0.0 | 4.6.x | @@ -47,7 +48,8 @@ Terraform provider для платформы Digital Energy Cloud Orchestration - Работа с resource groups, - Работа с snapshots, - Работа с stacks, - - Работа с VINS. + - Работа с VINS, + - Работа с SEPs. - Режим администратора: - Работа с accounts, diff --git a/docs/data-sources/account.md b/docs/data-sources/account.md index f15b6aa..e2aa1f3 100644 --- a/docs/data-sources/account.md +++ b/docs/data-sources/account.md @@ -40,6 +40,7 @@ description: |- - `deactivation_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `displayname` (String) - `guid` (Number) - `id` (String) The ID of this resource. diff --git a/docs/data-sources/account_deleted_list.md b/docs/data-sources/account_deleted_list.md index ddcb0f4..551adbd 100644 --- a/docs/data-sources/account_deleted_list.md +++ b/docs/data-sources/account_deleted_list.md @@ -51,6 +51,7 @@ Read-Only: - `compute_features` (List of String) - `created_time` (Number) - `deleted_time` (Number) +- `desc` (String) - `status` (String) - `updated_time` (Number) diff --git a/docs/data-sources/account_list.md b/docs/data-sources/account_list.md index c322034..f3e3952 100644 --- a/docs/data-sources/account_list.md +++ b/docs/data-sources/account_list.md @@ -52,6 +52,7 @@ Read-Only: - `compute_features` (List of String) - `created_time` (Number) - `deleted_time` (Number) +- `desc` (String) - `status` (String) - `updated_time` (Number) diff --git a/docs/data-sources/account_rg_list.md b/docs/data-sources/account_rg_list.md index ed9b0bd..01e73a1 100644 --- a/docs/data-sources/account_rg_list.md +++ b/docs/data-sources/account_rg_list.md @@ -56,6 +56,7 @@ Read-Only: - `created_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `milestones` (Number) - `resources` (List of Object) (see [below for nested schema](#nestedobjatt--items--resources)) - `rg_id` (Number) diff --git a/docs/data-sources/bservice_group.md b/docs/data-sources/bservice_group.md index 752175f..d7af6b5 100644 --- a/docs/data-sources/bservice_group.md +++ b/docs/data-sources/bservice_group.md @@ -72,6 +72,7 @@ Optional: Read-Only: +- `chipset` (String) - `id` (Number) - `ip_addresses` (List of String) - `name` (String) diff --git a/docs/data-sources/cb_account.md b/docs/data-sources/cb_account.md index ce60b35..b574a41 100644 --- a/docs/data-sources/cb_account.md +++ b/docs/data-sources/cb_account.md @@ -39,6 +39,7 @@ description: |- - `deactivation_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `displayname` (String) - `guid` (Number) - `id` (String) The ID of this resource. diff --git a/docs/data-sources/cb_account_list.md b/docs/data-sources/cb_account_list.md index 592b201..d7b06c8 100644 --- a/docs/data-sources/cb_account_list.md +++ b/docs/data-sources/cb_account_list.md @@ -61,6 +61,7 @@ Read-Only: - `deactivation_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `displayname` (String) - `guid` (Number) - `meta` (List of String) diff --git a/docs/data-sources/cb_account_list_deleted.md b/docs/data-sources/cb_account_list_deleted.md index cdc1cf1..8ebf8ce 100644 --- a/docs/data-sources/cb_account_list_deleted.md +++ b/docs/data-sources/cb_account_list_deleted.md @@ -60,6 +60,7 @@ Read-Only: - `deactivation_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `displayname` (String) - `guid` (Number) - `meta` (List of String) diff --git a/docs/data-sources/cb_account_rg_list.md b/docs/data-sources/cb_account_rg_list.md index 2d336d8..2a1617e 100644 --- a/docs/data-sources/cb_account_rg_list.md +++ b/docs/data-sources/cb_account_rg_list.md @@ -56,6 +56,7 @@ Read-Only: - `created_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `milestones` (Number) - `resources` (List of Object) (see [below for nested schema](#nestedobjatt--items--resources)) - `rg_id` (Number) diff --git a/docs/data-sources/cb_audit.md b/docs/data-sources/cb_audit.md index 3d93830..9d1edcc 100644 --- a/docs/data-sources/cb_audit.md +++ b/docs/data-sources/cb_audit.md @@ -37,6 +37,7 @@ description: |- - `tags` (String) - `timestamp` (Number) - `timestamp_end` (Number) +- `ttl` (String) - `user` (String) diff --git a/docs/data-sources/cb_audit_linked_jobs.md b/docs/data-sources/cb_audit_linked_jobs.md index 4aef310..c2c4f40 100644 --- a/docs/data-sources/cb_audit_linked_jobs.md +++ b/docs/data-sources/cb_audit_linked_jobs.md @@ -45,6 +45,7 @@ Read-Only: - `cmd` (String) - `guid` (String) - `nid` (Number) +- `physical_node` (Boolean) - `state` (String) - `time_create` (Number) - `time_start` (Number) diff --git a/docs/data-sources/cb_audit_list.md b/docs/data-sources/cb_audit_list.md index 0c39fcc..6467dc5 100644 --- a/docs/data-sources/cb_audit_list.md +++ b/docs/data-sources/cb_audit_list.md @@ -21,6 +21,7 @@ description: |- - `max_status_code` (Number) find by HTTP max status code - `min_status_code` (Number) find by HTTP min status code - `page` (Number) page number +- `request_id` (String) request id - `size` (Number) page size - `sort_by` (String) sort by one of supported fields, format +|-(field) - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) @@ -48,9 +49,16 @@ Optional: Read-Only: +- `args` (String) - `call` (String) - `guid` (String) +- `kwargs` (String) +- `remote_addr` (String) - `responsetime` (Number) +- `result` (String) - `status_code` (Number) +- `tags` (String) - `timestamp` (Number) +- `timestamp_end` (Number) +- `ttl` (String) - `user` (String) diff --git a/docs/data-sources/cb_disk.md b/docs/data-sources/cb_disk.md index e757214..b5d5546 100644 --- a/docs/data-sources/cb_disk.md +++ b/docs/data-sources/cb_disk.md @@ -30,7 +30,9 @@ description: |- - `acl` (String) - `boot_partition` (Number) - `computes` (List of Object) (see [below for nested schema](#nestedatt--computes)) +- `created_by` (String) - `created_time` (Number) +- `deleted_by` (String) - `deleted_time` (Number) - `desc` (String) - `destruction_time` (Number) @@ -45,6 +47,8 @@ description: |- - `iotune` (List of Object) (see [below for nested schema](#nestedatt--iotune)) - `iqn` (String) - `login` (String) +- `machine_id` (Number) +- `machine_name` (String) - `milestones` (Number) - `order` (Number) - `params` (String) @@ -52,7 +56,7 @@ description: |- - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) @@ -64,12 +68,15 @@ description: |- - `sep_id` (Number) - `sep_type` (String) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots)) - `status` (String) - `tech_status` (String) - `type` (String) +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) diff --git a/docs/data-sources/cb_disk_list.md b/docs/data-sources/cb_disk_list.md index 44b60c9..931b348 100644 --- a/docs/data-sources/cb_disk_list.md +++ b/docs/data-sources/cb_disk_list.md @@ -57,7 +57,9 @@ Read-Only: - `acl` (String) - `boot_partition` (Number) - `computes` (List of Object) (see [below for nested schema](#nestedobjatt--items--computes)) +- `created_by` (String) - `created_time` (Number) +- `deleted_by` (String) - `deleted_time` (Number) - `desc` (String) - `destruction_time` (Number) @@ -81,7 +83,7 @@ Read-Only: - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) @@ -93,12 +95,15 @@ Read-Only: - `sep_id` (Number) - `sep_type` (String) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--items--snapshots)) - `status` (String) - `tech_status` (String) - `type` (String) +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) diff --git a/docs/data-sources/cb_disk_list_deleted.md b/docs/data-sources/cb_disk_list_deleted.md index 23b7431..aba2377 100644 --- a/docs/data-sources/cb_disk_list_deleted.md +++ b/docs/data-sources/cb_disk_list_deleted.md @@ -54,7 +54,9 @@ Read-Only: - `acl` (String) - `boot_partition` (Number) - `computes` (List of Object) (see [below for nested schema](#nestedobjatt--items--computes)) +- `created_by` (String) - `created_time` (Number) +- `deleted_by` (String) - `deleted_time` (Number) - `desc` (String) - `destruction_time` (Number) @@ -78,7 +80,7 @@ Read-Only: - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) @@ -90,12 +92,15 @@ Read-Only: - `sep_id` (Number) - `sep_type` (String) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--items--snapshots)) - `status` (String) - `tech_status` (String) - `type` (String) +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) diff --git a/docs/data-sources/cb_disk_list_unattached.md b/docs/data-sources/cb_disk_list_unattached.md index d4b9869..8f37d86 100644 --- a/docs/data-sources/cb_disk_list_unattached.md +++ b/docs/data-sources/cb_disk_list_unattached.md @@ -77,7 +77,7 @@ Read-Only: - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) diff --git a/docs/data-sources/cb_disk_replication.md b/docs/data-sources/cb_disk_replication.md index c230f43..e9f8843 100644 --- a/docs/data-sources/cb_disk_replication.md +++ b/docs/data-sources/cb_disk_replication.md @@ -53,7 +53,7 @@ description: |- - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) diff --git a/docs/data-sources/cb_extnet.md b/docs/data-sources/cb_extnet.md index 06e2048..7e33852 100644 --- a/docs/data-sources/cb_extnet.md +++ b/docs/data-sources/cb_extnet.md @@ -43,6 +43,7 @@ description: |- - `name` (String) - `network` (String) - `network_id` (Number) +- `ntp` (List of String) - `ovs_bridge` (String) - `pre_reservations_num` (Number) - `prefix` (Number) diff --git a/docs/data-sources/cb_image.md b/docs/data-sources/cb_image.md index 6f33485..f5a9b6c 100644 --- a/docs/data-sources/cb_image.md +++ b/docs/data-sources/cb_image.md @@ -50,7 +50,7 @@ description: |- - `network_interface_naming` (String) - `password` (String) Optional password for the image - `pool_name` (String) pool for image create -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) diff --git a/docs/data-sources/cb_image_list.md b/docs/data-sources/cb_image_list.md index 826baa1..4477dda 100644 --- a/docs/data-sources/cb_image_list.md +++ b/docs/data-sources/cb_image_list.md @@ -79,7 +79,7 @@ Read-Only: - `network_interface_naming` (String) - `password` (String) - `pool_name` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) diff --git a/docs/data-sources/cb_kvmvm.md b/docs/data-sources/cb_kvmvm.md index 792ebae..da2b433 100644 --- a/docs/data-sources/cb_kvmvm.md +++ b/docs/data-sources/cb_kvmvm.md @@ -37,6 +37,7 @@ description: |- - `boot_disk_id` (Number) - `boot_disk_size` (Number) - `boot_order` (List of String) +- `boot_type` (String) - `cd_image_id` (Number) - `chipset` (String) - `clone_reference` (Number) @@ -55,11 +56,13 @@ description: |- - `driver` (String) - `gid` (Number) - `guid` (Number) +- `hot_resize` (Boolean) - `hp_backed` (Boolean) - `id` (String) The ID of this resource. - `image_id` (Number) - `image_name` (String) - `interfaces` (List of Object) (see [below for nested schema](#nestedatt--interfaces)) +- `loader_type` (String) - `lock_status` (String) - `manager_id` (Number) - `manager_type` (String) @@ -72,11 +75,12 @@ description: |- - `natable_vins_network` (String) - `natable_vins_network_name` (String) - `need_reboot` (Boolean) +- `network_interface_naming` (String) - `numa_affinity` (String) - `numa_node_id` (Number) - `os_users` (List of Object) (see [below for nested schema](#nestedatt--os_users)) - `pci_devices` (List of Number) -- `pinned` (Boolean) +- `pinned` (Number) - `pool` (String) - `preferred_cpu` (List of Number) - `ram` (Number) @@ -99,7 +103,7 @@ description: |- - `updated_time` (Number) - `user_data` (String) - `user_managed` (Boolean) -- `vgpus` (List of Number) +- `vgpus` (List of Object) List of virtual GPUs (see [below for nested schema](#nestedatt--vgpus)) - `virtual_image_id` (Number) - `virtual_image_name` (String) - `vnc_password` (String) @@ -183,7 +187,7 @@ Read-Only: - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) @@ -194,6 +198,7 @@ Read-Only: - `role` (String) - `sep_id` (Number) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--disks--snapshots)) @@ -332,3 +337,29 @@ Read-Only: - `key` (String) - `val` (String) + + + +### Nested Schema for `vgpus` + +Read-Only: + +- `account_id` (Number) +- `bus_number` (Number) +- `created_time` (Number) +- `deleted_time` (Number) +- `gid` (Number) +- `guid` (Number) +- `id` (Number) +- `last_claimed_by` (Number) +- `last_update_time` (Number) +- `mode` (String) +- `pci_slot` (Number) +- `pgpuid` (Number) +- `profile_id` (Number) +- `ram` (Number) +- `reference_id` (String) +- `rg_id` (Number) +- `status` (String) +- `type` (String) +- `vmid` (Number) diff --git a/docs/data-sources/cb_kvmvm_list.md b/docs/data-sources/cb_kvmvm_list.md index 2aaec00..8ebacf9 100644 --- a/docs/data-sources/cb_kvmvm_list.md +++ b/docs/data-sources/cb_kvmvm_list.md @@ -33,6 +33,7 @@ description: |- - `size` (Number) - `sort_by` (String) sort by one of supported fields, format +|-(field) - `stack_id` (Number) Find by stack ID +- `stack_name` (String) Find by node name. - `status` (String) Find by status - `tech_status` (String) Find by tech status - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) @@ -67,6 +68,7 @@ Read-Only: - `arch` (String) - `auto_start_w_node` (Boolean) - `boot_order` (List of String) +- `boot_type` (String) - `bootdisk_size` (Number) - `cd_image_id` (Number) - `chipset` (String) @@ -87,9 +89,11 @@ Read-Only: - `driver` (String) - `gid` (Number) - `guid` (Number) +- `hot_resize` (Boolean) - `hp_backed` (Boolean) - `image_id` (Number) - `interfaces` (List of Object) (see [below for nested schema](#nestedobjatt--items--interfaces)) +- `loader_type` (String) - `lock_status` (String) - `manager_id` (Number) - `manager_type` (String) @@ -97,10 +101,12 @@ Read-Only: - `milestones` (Number) - `name` (String) - `need_reboot` (Boolean) +- `network_interface_naming` (String) +- `nid` (Number) - `numa_affinity` (String) - `numa_node_id` (Number) - `os_users` (List of Object) (see [below for nested schema](#nestedobjatt--items--os_users)) -- `pinned` (Boolean) +- `pinned` (Number) - `preferred_cpu` (List of Number) - `ram` (Number) - `reference_id` (String) @@ -111,6 +117,7 @@ Read-Only: - `rg_name` (String) - `snap_sets` (List of Object) (see [below for nested schema](#nestedobjatt--items--snap_sets)) - `stack_id` (Number) +- `stack_name` (String) - `stateless_sep_id` (Number) - `stateless_sep_type` (String) - `status` (String) diff --git a/docs/data-sources/cb_kvmvm_list_deleted.md b/docs/data-sources/cb_kvmvm_list_deleted.md index 25d2df8..a085bb8 100644 --- a/docs/data-sources/cb_kvmvm_list_deleted.md +++ b/docs/data-sources/cb_kvmvm_list_deleted.md @@ -62,8 +62,10 @@ Read-Only: - `arch` (String) - `auto_start_w_node` (Boolean) - `boot_order` (List of String) +- `boot_type` (String) - `bootdisk_size` (Number) - `cd_image_id` (Number) +- `chipset` (String) - `clone_reference` (Number) - `clones` (List of Number) - `compute_id` (Number) @@ -81,9 +83,11 @@ Read-Only: - `driver` (String) - `gid` (Number) - `guid` (Number) +- `hot_resize` (Boolean) - `hp_backed` (Boolean) - `image_id` (Number) - `interfaces` (List of Object) (see [below for nested schema](#nestedobjatt--items--interfaces)) +- `loader_type` (String) - `lock_status` (String) - `manager_id` (Number) - `manager_type` (String) @@ -91,10 +95,11 @@ Read-Only: - `milestones` (Number) - `name` (String) - `need_reboot` (Boolean) +- `network_interface_naming` (String) - `numa_affinity` (String) - `numa_node_id` (Number) - `os_users` (List of Object) (see [below for nested schema](#nestedobjatt--items--os_users)) -- `pinned` (Boolean) +- `pinned` (Number) - `preferred_cpu` (List of Number) - `ram` (Number) - `reference_id` (String) @@ -105,6 +110,7 @@ Read-Only: - `rg_name` (String) - `snap_sets` (List of Object) (see [below for nested schema](#nestedobjatt--items--snap_sets)) - `stack_id` (Number) +- `stack_name` (String) - `stateless_sep_id` (Number) - `stateless_sep_type` (String) - `status` (String) @@ -172,6 +178,7 @@ Read-Only: Read-Only: +- `bus_number` (Number) - `conn_id` (Number) - `conn_type` (String) - `def_gw` (String) @@ -179,8 +186,10 @@ Read-Only: - `flip_group_id` (Number) - `guid` (String) - `ip_address` (String) +- `libvirt_settings` (List of Object) (see [below for nested schema](#nestedobjatt--items--interfaces--libvirt_settings)) - `listen_ssh` (Boolean) - `mac` (String) +- `mtu` (Number) - `name` (String) - `net_id` (Number) - `net_type` (String) @@ -192,6 +201,20 @@ Read-Only: - `type` (String) - `vnfs` (List of Number) + +### Nested Schema for `items.interfaces.libvirt_settings` + +Read-Only: + +- `event_idx` (String) +- `guid` (String) +- `ioeventfd` (String) +- `queues` (Number) +- `rx_queue_size` (Number) +- `tx_queue_size` (Number) +- `txmode` (String) + + ### Nested Schema for `items.interfaces.qos` diff --git a/docs/data-sources/cb_rg.md b/docs/data-sources/cb_rg.md index 10cc1b7..0b1e32a 100644 --- a/docs/data-sources/cb_rg.md +++ b/docs/data-sources/cb_rg.md @@ -46,7 +46,6 @@ description: |- - `lock_status` (String) - `milestones` (Number) - `name` (String) -- `register_computes` (Boolean) - `resource_limits` (List of Object) (see [below for nested schema](#nestedatt--resource_limits)) - `resource_types` (List of String) - `secret` (String) diff --git a/docs/data-sources/cb_rg_list.md b/docs/data-sources/cb_rg_list.md index ce5790b..c8d4c9e 100644 --- a/docs/data-sources/cb_rg_list.md +++ b/docs/data-sources/cb_rg_list.md @@ -70,7 +70,6 @@ Read-Only: - `lock_status` (String) - `milestones` (Number) - `name` (String) -- `register_computes` (Boolean) - `resource_limits` (List of Object) (see [below for nested schema](#nestedobjatt--items--resource_limits)) - `resource_types` (List of String) - `rg_id` (Number) diff --git a/docs/data-sources/cb_rg_list_deleted.md b/docs/data-sources/cb_rg_list_deleted.md index 6c3a5fb..62db33b 100644 --- a/docs/data-sources/cb_rg_list_deleted.md +++ b/docs/data-sources/cb_rg_list_deleted.md @@ -68,7 +68,6 @@ Read-Only: - `lock_status` (String) - `milestones` (Number) - `name` (String) -- `register_computes` (Boolean) - `resource_limits` (List of Object) (see [below for nested schema](#nestedobjatt--items--resource_limits)) - `resource_types` (List of String) - `rg_id` (Number) diff --git a/docs/data-sources/cb_sep_and_pools_available_list.md b/docs/data-sources/cb_sep_and_pools_available_list.md new file mode 100644 index 0000000..b6c4f0b --- /dev/null +++ b/docs/data-sources/cb_sep_and_pools_available_list.md @@ -0,0 +1,59 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "decort_cb_sep_and_pools_available_list Data Source - terraform-provider-decort" +subcategory: "" +description: |- + +--- + +# decort_cb_sep_and_pools_available_list (Data Source) + + + + + + +## Schema + +### Required + +- `account_id` (Number) Account ID + +### Optional + +- `rg_id` (Number) Resource group ID +- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) + +### Read-Only + +- `entry_count` (Number) Number of available SEP entries +- `id` (String) The ID of this resource. +- `items` (List of Object) List of available SEPs (see [below for nested schema](#nestedatt--items)) + + +### Nested Schema for `timeouts` + +Optional: + +- `default` (String) +- `read` (String) + + + +### Nested Schema for `items` + +Read-Only: + +- `pools` (List of Object) (see [below for nested schema](#nestedobjatt--items--pools)) +- `sep_id` (Number) +- `sep_name` (String) +- `sep_type` (String) + + +### Nested Schema for `items.pools` + +Read-Only: + +- `name` (String) +- `system` (Boolean) +- `types` (List of String) diff --git a/docs/data-sources/cb_sep_template.md b/docs/data-sources/cb_sep_template.md new file mode 100644 index 0000000..3870ed3 --- /dev/null +++ b/docs/data-sources/cb_sep_template.md @@ -0,0 +1,38 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "decort_cb_sep_template Data Source - terraform-provider-decort" +subcategory: "" +description: |- + +--- + +# decort_cb_sep_template (Data Source) + + + + + + +## Schema + +### Required + +- `lang` (String) language +- `sep_type` (String) type of sep + +### Optional + +- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) + +### Read-Only + +- `id` (String) The ID of this resource. +- `sep_template` (String) + + +### Nested Schema for `timeouts` + +Optional: + +- `default` (String) +- `read` (String) diff --git a/docs/data-sources/cb_vins_list.md b/docs/data-sources/cb_vins_list.md index 345b973..2d011cc 100644 --- a/docs/data-sources/cb_vins_list.md +++ b/docs/data-sources/cb_vins_list.md @@ -27,6 +27,7 @@ description: |- - `rg_id` (Number) Find by rg id - `size` (Number) Page size - `sort_by` (String) sort by one of supported fields, format +|-(field) +- `status` (String) sort by status - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `vnfdev_id` (Number) find by VNF Device id diff --git a/docs/data-sources/disk.md b/docs/data-sources/disk.md index f391c2e..20ce557 100644 --- a/docs/data-sources/disk.md +++ b/docs/data-sources/disk.md @@ -29,7 +29,9 @@ description: |- - `account_name` (String) The name of the subscriber '(account') to whom this disk belongs - `acl` (String) - `computes` (List of Object) (see [below for nested schema](#nestedatt--computes)) +- `created_by` (String) - `created_time` (Number) Created time +- `deleted_by` (String) - `deleted_time` (Number) Deleted time - `desc` (String) Description of disk - `destruction_time` (Number) Time of final deletion @@ -40,12 +42,15 @@ description: |- - `image_id` (Number) Image ID - `images` (List of String) IDs of images using the disk - `iotune` (List of Object) (see [below for nested schema](#nestedatt--iotune)) +- `machine_id` (Number) +- `machine_name` (String) +- `milestones` (Number) Milestones - `order` (Number) Disk order - `params` (String) Disk params - `parent_id` (Number) ID of the parent disk - `pci_slot` (Number) ID of the pci slot to which the disk is connected - `pool` (String) Pool for disk location -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_time` (Number) Time of the last deletion attempt - `replication` (List of Object) Replication status (see [below for nested schema](#nestedatt--replication)) - `res_id` (String) Resource ID @@ -54,12 +59,15 @@ description: |- - `sep_id` (Number) Storage endpoint provider ID to create disk - `sep_type` (String) Type SEP. Defines the type of storage system and contains one of the values set in the cloud platform - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) Size in GB - `size_used` (Number) Number of used space, in GB - `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots)) - `status` (String) Disk status - `tech_status` (String) Technical status of the disk - `type` (String) The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp' +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) Virtual Machine ID (Deprecated) diff --git a/docs/data-sources/disk_list.md b/docs/data-sources/disk_list.md index ae9ec45..52f3cb0 100644 --- a/docs/data-sources/disk_list.md +++ b/docs/data-sources/disk_list.md @@ -56,7 +56,9 @@ Read-Only: - `account_name` (String) - `acl` (String) - `computes` (List of Object) (see [below for nested schema](#nestedobjatt--items--computes)) +- `created_by` (String) - `created_time` (Number) +- `deleted_by` (String) - `deleted_time` (Number) - `desc` (String) - `destruction_time` (Number) @@ -69,12 +71,13 @@ Read-Only: - `iotune` (List of Object) (see [below for nested schema](#nestedobjatt--items--iotune)) - `machine_id` (Number) - `machine_name` (String) +- `milestones` (Number) - `order` (Number) - `params` (String) - `parent_id` (Number) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_time` (Number) - `replication` (List of Object) (see [below for nested schema](#nestedobjatt--items--replication)) - `res_id` (String) @@ -83,12 +86,15 @@ Read-Only: - `sep_id` (Number) - `sep_type` (String) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--items--snapshots)) - `status` (String) - `tech_status` (String) - `type` (String) +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) diff --git a/docs/data-sources/disk_list_deleted.md b/docs/data-sources/disk_list_deleted.md index 1d0f64a..791227f 100644 --- a/docs/data-sources/disk_list_deleted.md +++ b/docs/data-sources/disk_list_deleted.md @@ -53,7 +53,9 @@ Read-Only: - `account_name` (String) - `acl` (String) - `computes` (List of Object) (see [below for nested schema](#nestedobjatt--items--computes)) +- `created_by` (String) - `created_time` (Number) +- `deleted_by` (String) - `deleted_time` (Number) - `desc` (String) - `destruction_time` (Number) @@ -66,12 +68,13 @@ Read-Only: - `iotune` (List of Object) (see [below for nested schema](#nestedobjatt--items--iotune)) - `machine_id` (Number) - `machine_name` (String) +- `milestones` (Number) - `order` (Number) - `params` (String) - `parent_id` (Number) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_time` (Number) - `replication` (List of Object) (see [below for nested schema](#nestedobjatt--items--replication)) - `res_id` (String) @@ -80,12 +83,15 @@ Read-Only: - `sep_id` (Number) - `sep_type` (String) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--items--snapshots)) - `status` (String) - `tech_status` (String) - `type` (String) +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) diff --git a/docs/data-sources/disk_replication.md b/docs/data-sources/disk_replication.md index 32990f3..65ba62b 100644 --- a/docs/data-sources/disk_replication.md +++ b/docs/data-sources/disk_replication.md @@ -46,7 +46,7 @@ description: |- - `parent_id` (Number) ID of the parent disk - `pci_slot` (Number) ID of the pci slot to which the disk is connected - `pool` (String) Pool for disk location -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_time` (Number) Time of the last deletion attempt - `replication` (List of Object) Replication status (see [below for nested schema](#nestedatt--replication)) - `res_id` (String) Resource ID diff --git a/docs/data-sources/extnet.md b/docs/data-sources/extnet.md index 6e93be0..2db7449 100644 --- a/docs/data-sources/extnet.md +++ b/docs/data-sources/extnet.md @@ -43,6 +43,7 @@ description: |- - `net_name` (String) - `network` (String) - `network_id` (Number) +- `ntp` (List of String) - `pre_reservations_num` (Number) - `prefix` (Number) - `pri_vnf_dev_id` (Number) diff --git a/docs/data-sources/extnet_list.md b/docs/data-sources/extnet_list.md index 718c5f6..cc62049 100644 --- a/docs/data-sources/extnet_list.md +++ b/docs/data-sources/extnet_list.md @@ -21,6 +21,7 @@ description: |- - `by_id` (Number) Find by ID - `name` (String) Find by name - `network` (String) +- `ovs_bridge` (String) Name of the openVswitch bridge - `page` (Number) Page number - `size` (Number) Page size - `sort_by` (String) sort by one of supported fields, format +|-(field) diff --git a/docs/data-sources/image.md b/docs/data-sources/image.md index fb52f4c..44519f5 100644 --- a/docs/data-sources/image.md +++ b/docs/data-sources/image.md @@ -50,7 +50,7 @@ description: |- - `network_interface_naming` (String) - `password` (String) - `pool_name` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `res_id` (String) @@ -58,6 +58,7 @@ description: |- - `sep_id` (Number) - `shared_with` (List of Number) - `size` (Number) +- `snapshot_id` (String) - `status` (String) - `tech_status` (String) - `type` (String) diff --git a/docs/data-sources/k8s.md b/docs/data-sources/k8s.md index 8f274fa..735292f 100644 --- a/docs/data-sources/k8s.md +++ b/docs/data-sources/k8s.md @@ -33,6 +33,7 @@ description: |- - `created_time` (Number) - `deleted_by` (String) - `deleted_time` (Number) +- `desc` (String) - `extnet_id` (Number) ID of the external network to connect workers to. If omitted network will be chosen by the platfom. - `id` (String) The ID of this resource. - `k8s_ci_name` (String) diff --git a/docs/data-sources/kvmvm.md b/docs/data-sources/kvmvm.md index b24f858..309ab6a 100644 --- a/docs/data-sources/kvmvm.md +++ b/docs/data-sources/kvmvm.md @@ -35,6 +35,7 @@ description: |- - `arch` (String) - `auto_start_w_node` (Boolean) - `boot_order` (List of String) +- `boot_type` (String) - `bootdisk_size` (Number) - `cd_image_id` (Number) - `chipset` (String) @@ -54,10 +55,12 @@ description: |- - `driver` (String) - `gid` (Number) - `guid` (Number) +- `hot_resize` (Boolean) - `hp_backed` (Boolean) - `id` (String) The ID of this resource. - `image_id` (Number) - `interfaces` (List of Object) (see [below for nested schema](#nestedatt--interfaces)) +- `loader_type` (String) - `lock_status` (String) - `manager_id` (Number) - `manager_type` (String) @@ -70,6 +73,7 @@ description: |- - `natable_vins_network` (String) - `natable_vins_network_name` (String) - `need_reboot` (Boolean) +- `network_interface_naming` (String) - `numa_affinity` (String) - `numa_node_id` (Number) - `os_users` (List of Object) (see [below for nested schema](#nestedatt--os_users)) @@ -93,7 +97,7 @@ description: |- - `updated_time` (Number) - `user_managed` (Boolean) - `userdata` (String) -- `vgpus` (List of Number) +- `vgpus` (List of Object) List of virtual GPUs (see [below for nested schema](#nestedatt--vgpus)) - `virtual_image_id` (Number) - `virtual_image_name` (String) - `vnc_password` (String) @@ -214,7 +218,7 @@ Read-Only: - `passwd` (String) - `pci_slot` (Number) - `pool` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_time` (Number) - `reality_device_number` (Number) - `replication` (List of Object) (see [below for nested schema](#nestedobjatt--disks--replication)) @@ -222,6 +226,7 @@ Read-Only: - `role` (String) - `sep_id` (Number) - `shareable` (Boolean) +- `size_available` (Number) - `size_max` (Number) - `size_used` (Number) - `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--disks--snapshots)) @@ -352,3 +357,29 @@ Read-Only: - `guid` (String) - `label` (String) - `timestamp` (Number) + + + +### Nested Schema for `vgpus` + +Read-Only: + +- `account_id` (Number) +- `bus_number` (Number) +- `created_time` (Number) +- `deleted_time` (Number) +- `gid` (Number) +- `guid` (Number) +- `id` (Number) +- `last_claimed_by` (Number) +- `last_update_time` (Number) +- `mode` (String) +- `pci_slot` (Number) +- `pgpuid` (Number) +- `profile_id` (Number) +- `ram` (Number) +- `reference_id` (String) +- `rg_id` (Number) +- `status` (String) +- `type` (String) +- `vmid` (Number) diff --git a/docs/data-sources/kvmvm_list.md b/docs/data-sources/kvmvm_list.md index b36d655..e810035 100644 --- a/docs/data-sources/kvmvm_list.md +++ b/docs/data-sources/kvmvm_list.md @@ -64,6 +64,7 @@ Read-Only: - `arch` (String) - `auto_start_w_node` (Boolean) - `boot_order` (List of String) +- `boot_type` (String) - `bootdisk_size` (Number) - `cd_image_id` (Number) - `chipset` (String) @@ -84,9 +85,11 @@ Read-Only: - `driver` (String) - `gid` (Number) - `guid` (Number) +- `hot_resize` (Boolean) - `hp_backed` (Boolean) - `image_id` (Number) - `interfaces` (List of Object) (see [below for nested schema](#nestedobjatt--items--interfaces)) +- `loader_type` (String) - `lock_status` (String) - `manager_id` (Number) - `manager_type` (String) @@ -94,6 +97,7 @@ Read-Only: - `milestones` (Number) - `name` (String) - `need_reboot` (Boolean) +- `network_interface_naming` (String) - `numa_affinity` (String) - `numa_node_id` (Number) - `pinned` (Boolean) diff --git a/docs/data-sources/kvmvm_list_deleted.md b/docs/data-sources/kvmvm_list_deleted.md index ee75b76..fc63f9f 100644 --- a/docs/data-sources/kvmvm_list_deleted.md +++ b/docs/data-sources/kvmvm_list_deleted.md @@ -62,6 +62,7 @@ Read-Only: - `arch` (String) - `auto_start_w_node` (Boolean) - `boot_order` (List of String) +- `boot_type` (String) - `bootdisk_size` (Number) - `cd_image_id` (Number) - `chipset` (String) @@ -82,9 +83,11 @@ Read-Only: - `driver` (String) - `gid` (Number) - `guid` (Number) +- `hot_resize` (Boolean) - `hp_backed` (Boolean) - `image_id` (Number) - `interfaces` (List of Object) (see [below for nested schema](#nestedobjatt--items--interfaces)) +- `loader_type` (String) - `lock_status` (String) - `manager_id` (Number) - `manager_type` (String) @@ -92,6 +95,7 @@ Read-Only: - `milestones` (Number) - `name` (String) - `need_reboot` (Boolean) +- `network_interface_naming` (String) - `numa_affinity` (String) - `numa_node_id` (Number) - `pinned` (Boolean) diff --git a/docs/data-sources/locations_list.md b/docs/data-sources/locations_list.md index 11ef95a..e70fcdd 100644 --- a/docs/data-sources/locations_list.md +++ b/docs/data-sources/locations_list.md @@ -55,3 +55,4 @@ Read-Only: - `location_code` (String) - `meta` (List of String) - `name` (String) +- `sdn_support` (Boolean) diff --git a/docs/data-sources/resgroup.md b/docs/data-sources/resgroup.md index 8032010..3c1a75b 100644 --- a/docs/data-sources/resgroup.md +++ b/docs/data-sources/resgroup.md @@ -46,7 +46,6 @@ description: |- - `lock_status` (String) - `milestones` (Number) - `name` (String) -- `register_computes` (Boolean) - `res_types` (List of String) - `resource_limits` (List of Object) (see [below for nested schema](#nestedatt--resource_limits)) - `secret` (String) diff --git a/docs/data-sources/rg_list.md b/docs/data-sources/rg_list.md index 1f1df4b..f1af8db 100644 --- a/docs/data-sources/rg_list.md +++ b/docs/data-sources/rg_list.md @@ -70,7 +70,6 @@ Read-Only: - `lock_status` (String) - `milestones` (Number) - `name` (String) -- `register_computes` (Boolean) - `resource_limits` (List of Object) (see [below for nested schema](#nestedobjatt--items--resource_limits)) - `resource_types` (List of String) - `rg_id` (Number) diff --git a/docs/data-sources/rg_list_deleted.md b/docs/data-sources/rg_list_deleted.md index d985c97..4d5f1fe 100644 --- a/docs/data-sources/rg_list_deleted.md +++ b/docs/data-sources/rg_list_deleted.md @@ -68,7 +68,6 @@ Read-Only: - `lock_status` (String) - `milestones` (Number) - `name` (String) -- `register_computes` (Boolean) - `resource_limits` (List of Object) (see [below for nested schema](#nestedobjatt--items--resource_limits)) - `resource_types` (List of String) - `rg_id` (Number) diff --git a/docs/data-sources/sep_and_pools_available_list.md b/docs/data-sources/sep_and_pools_available_list.md new file mode 100644 index 0000000..e5e0779 --- /dev/null +++ b/docs/data-sources/sep_and_pools_available_list.md @@ -0,0 +1,59 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "decort_sep_and_pools_available_list Data Source - terraform-provider-decort" +subcategory: "" +description: |- + +--- + +# decort_sep_and_pools_available_list (Data Source) + + + + + + +## Schema + +### Required + +- `account_id` (Number) Account ID + +### Optional + +- `rg_id` (Number) Resource group ID +- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) + +### Read-Only + +- `entry_count` (Number) Number of available SEP entries +- `id` (String) The ID of this resource. +- `items` (List of Object) List of available SEPs (see [below for nested schema](#nestedatt--items)) + + +### Nested Schema for `timeouts` + +Optional: + +- `default` (String) +- `read` (String) + + + +### Nested Schema for `items` + +Read-Only: + +- `pools` (List of Object) (see [below for nested schema](#nestedobjatt--items--pools)) +- `sep_id` (Number) +- `sep_name` (String) +- `sep_type` (String) + + +### Nested Schema for `items.pools` + +Read-Only: + +- `name` (String) +- `system` (Boolean) +- `types` (List of String) diff --git a/docs/data-sources/vins_list.md b/docs/data-sources/vins_list.md index 08f74b9..d1dd7bc 100644 --- a/docs/data-sources/vins_list.md +++ b/docs/data-sources/vins_list.md @@ -26,6 +26,7 @@ description: |- - `rg_id` (Number) Filter by RG ID - `size` (Number) Page size - `sort_by` (String) sort by one of supported fields, format +|-(field) +- `status` (String) sort by status - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `vnf_dev_id` (Number) Filter by VNF Device id diff --git a/docs/resources/account.md b/docs/resources/account.md index 8158055..74f5234 100644 --- a/docs/resources/account.md +++ b/docs/resources/account.md @@ -18,13 +18,14 @@ description: |- ### Required - `account_name` (String) account name -- `username` (String) username of owner the account ### Optional +- `desc` (String) description - `emailaddress` (String) email - `enable` (Boolean) enable/disable account - `permanently` (Boolean) whether to completely delete the account +- `reason` (Boolean) reason for deactivation - `resource_limits` (Block List, Max: 1) (see [below for nested schema](#nestedblock--resource_limits)) - `restore` (Boolean) restore a deleted account - `send_access_emails` (Boolean) if true send emails when a user is granted access to resources diff --git a/docs/resources/bservice_group.md b/docs/resources/bservice_group.md index 6add535..f988f52 100644 --- a/docs/resources/bservice_group.md +++ b/docs/resources/bservice_group.md @@ -28,6 +28,7 @@ description: |- ### Optional +- `chipset` (String) - `cloud_init` (String) Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases. - `compgroup_id` (Number) - `extnets` (List of Number) list of external networks to connect computes to @@ -83,6 +84,7 @@ Optional: Read-Only: +- `chipset` (String) - `id` (Number) - `ip_addresses` (List of String) - `name` (String) diff --git a/docs/resources/cb_account.md b/docs/resources/cb_account.md index 6ab77d9..be97981 100644 --- a/docs/resources/cb_account.md +++ b/docs/resources/cb_account.md @@ -27,9 +27,11 @@ description: |- - `compute_features` (Set of String) - `cpu_allocation_parameter` (String) set cpu allocation parameter - `cpu_allocation_ratio` (Number) set cpu allocation ratio +- `desc` (String) description - `emailaddress` (String) email - `enable` (Boolean) enable/disable account - `permanently` (Boolean) whether to completely delete the account +- `reason` (Boolean) reason for restore or deactivation - `resource_limits` (Block List, Max: 1) (see [below for nested schema](#nestedblock--resource_limits)) - `restore` (Boolean) restore a deleted account - `send_access_emails` (Boolean) if true send emails when a user is granted access to resources diff --git a/docs/resources/cb_cdrom_image.md b/docs/resources/cb_cdrom_image.md index ad5bbc4..68b89b8 100644 --- a/docs/resources/cb_cdrom_image.md +++ b/docs/resources/cb_cdrom_image.md @@ -17,7 +17,6 @@ description: |- ### Required -- `gid` (Number) grid (platform) ID where this template should be create in - `name` (String) Name of the rescue disk - `url` (String) URL where to download ISO from @@ -45,6 +44,7 @@ description: |- - `ckey` (String) - `deleted_time` (Number) - `desc` (String) +- `gid` (Number) - `guid` (Number) - `history` (List of Object) (see [below for nested schema](#nestedatt--history)) - `id` (String) The ID of this resource. @@ -54,7 +54,7 @@ description: |- - `link_to` (Number) - `meta` (List of String) meta - `milestones` (Number) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) diff --git a/docs/resources/cb_disk.md b/docs/resources/cb_disk.md index 6f1d480..92d9e64 100644 --- a/docs/resources/cb_disk.md +++ b/docs/resources/cb_disk.md @@ -19,9 +19,7 @@ description: |- - `account_id` (Number) - `disk_name` (String) -- `gid` (Number) - `size_max` (Number) -- `type` (String) The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp' ### Optional @@ -35,7 +33,6 @@ description: |- - `restore` (Boolean) restore deleting disk - `sep_id` (Number) - `shareable` (Boolean) -- `ssd_size` (Number) - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) ### Read-Only @@ -44,25 +41,30 @@ description: |- - `acl` (String) - `boot_partition` (Number) - `computes` (List of Object) (see [below for nested schema](#nestedatt--computes)) +- `created_by` (String) - `created_time` (Number) +- `deleted_by` (String) - `deleted_time` (Number) - `destruction_time` (Number) - `devicename` (String) - `disk_id` (Number) - `disk_path` (String) +- `gid` (Number) - `guid` (Number) - `id` (String) The ID of this resource. - `image_id` (Number) - `images` (List of String) - `iqn` (String) - `login` (String) +- `machine_id` (Number) +- `machine_name` (String) - `milestones` (Number) - `order` (Number) - `params` (String) - `parent_id` (Number) - `passwd` (String) - `pci_slot` (Number) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_attempts` (Number) - `purge_time` (Number) - `reality_device_number` (Number) @@ -76,6 +78,9 @@ description: |- - `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots)) - `status` (String) - `tech_status` (String) +- `type` (String) The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp' +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) diff --git a/docs/resources/cb_image.md b/docs/resources/cb_image.md index 75d8872..dd0ed73 100644 --- a/docs/resources/cb_image.md +++ b/docs/resources/cb_image.md @@ -18,7 +18,6 @@ description: |- ### Required - `boot_type` (String) Boot type of image bios or uefi -- `gid` (Number) grid (platform) ID where this template should be create in - `image_type` (String) Image type linux, windows or other - `name` (String) Name of the rescue disk @@ -52,6 +51,7 @@ description: |- - `cd_presented_to` (String) - `deleted_time` (Number) - `desc` (String) +- `gid` (Number) - `guid` (Number) - `history` (List of Object) (see [below for nested schema](#nestedatt--history)) - `id` (String) The ID of this resource. @@ -59,7 +59,7 @@ description: |- - `last_modified` (Number) - `link_to` (Number) - `milestones` (Number) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) diff --git a/docs/resources/cb_image_from_blank_compute.md b/docs/resources/cb_image_from_blank_compute.md index 98851be..b1ee226 100644 --- a/docs/resources/cb_image_from_blank_compute.md +++ b/docs/resources/cb_image_from_blank_compute.md @@ -19,7 +19,7 @@ description: |- - `boot_type` (String) Boot type of image BIOS or UEFI - `compute_id` (Number) Compute Id -- `image_type` (String) Image type linux, windows or other +- `image_type` (String) Image type linux, windows or unknown - `name` (String) Name of the rescue disk ### Optional @@ -35,7 +35,6 @@ description: |- - `network_interface_naming` (String) select a network interface naming pattern for your Linux machine. eth - onboard, ens - pci slot naming - `password` (String) Optional password for the image - `pool_name` (String) pool for image create -- `sep_id` (Number) storage endpoint provider ID - `shared_with` (List of Number) - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `username` (String) Optional username for the image @@ -56,13 +55,14 @@ description: |- - `last_modified` (Number) - `link_to` (Number) - `milestones` (Number) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) - `res_id` (String) - `res_name` (String) - `rescuecd` (Boolean) +- `sep_id` (Number) storage endpoint provider ID - `size` (Number) - `snapshot_id` (String) snapshot id - `status` (String) diff --git a/docs/resources/cb_image_from_platform_disk.md b/docs/resources/cb_image_from_platform_disk.md index 36a915f..6b0ea0a 100644 --- a/docs/resources/cb_image_from_platform_disk.md +++ b/docs/resources/cb_image_from_platform_disk.md @@ -21,7 +21,7 @@ description: |- - `boot_type` (String) Boot type of image BIOS or UEFI - `disk_id` (Number) Disk Id - `drivers` (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ] -- `image_type` (String) Image type linux, windows or other +- `image_type` (String) Image type linux, windows or unknown - `name` (String) Name of the rescue disk ### Optional @@ -37,7 +37,6 @@ description: |- - `network_interface_naming` (String) select a network interface naming pattern for your Linux machine. eth - onboard, ens - pci slot naming - `password` (String) Optional password for the image - `pool_name` (String) pool for image create -- `sep_id` (Number) storage endpoint provider ID - `shared_with` (List of Number) - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `username` (String) Optional username for the image @@ -56,13 +55,14 @@ description: |- - `last_modified` (Number) - `link_to` (Number) - `milestones` (Number) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) - `res_id` (String) - `res_name` (String) - `rescuecd` (Boolean) +- `sep_id` (Number) storage endpoint provider ID - `size` (Number) - `snapshot_id` (String) snapshot id - `status` (String) diff --git a/docs/resources/cb_kvmvm.md b/docs/resources/cb_kvmvm.md index 291e990..dab7495 100644 --- a/docs/resources/cb_kvmvm.md +++ b/docs/resources/cb_kvmvm.md @@ -31,12 +31,12 @@ description: |- - `anti_affinity_rules` (Block List) (see [below for nested schema](#nestedblock--anti_affinity_rules)) - `auto_start_w_node` (Boolean) - `boot_disk_size` (Number) This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image. +- `boot_type` (String) Type of image upload. - `cd` (Block Set, Max: 1) (see [below for nested schema](#nestedblock--cd)) - `chipset` (String) Type of the emulated system. - `cloud_init` (String) Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases. - `cpu_pin` (Boolean) Run VM on dedicated CPUs. To use this feature, the system must be pre-configured by allocating CPUs on the physical node. - `custom_fields` (String) -- `depresent` (Boolean) whether to depresent compute disks from node or not - `description` (String) Optional text description of this compute instance. - `detach_disks` (Boolean) - `disks` (Block List) (see [below for nested schema](#nestedblock--disks)) @@ -45,12 +45,15 @@ description: |- - `force_pin` (Boolean) - `force_resize` (Boolean) Flag for resize compute - `force_stop` (Boolean) Flag for redeploy compute +- `hot_resize` (Boolean) Type of image vm. - `hp_backed` (Boolean) Use Huge Pages to allocate RAM of the virtual machine. The system must be pre-configured by allocating Huge Pages on the physical node. - `image_id` (Number) ID of the OS image to base this compute instance on. - `ipa_type` (String) compute purpose - `is` (String) system name - `libvirt_settings` (Block Set) Configure libvirt virtio interface parameters. You can only delete values locally. Data on the platform cannot be deleted. (see [below for nested schema](#nestedblock--libvirt_settings)) -- `network` (Block Set, Max: 8) Optional network connection(s) for this compute. You may specify several network blocks, one for each connection. (see [below for nested schema](#nestedblock--network)) +- `loader_type` (String) Type of image vm. +- `network` (Block Set) Optional network connection(s) for this compute. You may specify several network blocks, one for each connection. (see [below for nested schema](#nestedblock--network)) +- `network_interface_naming` (String) Name of netfowrk interface. - `numa_affinity` (String) Rule for VM placement with NUMA affinity. - `pause` (Boolean) - `pci_devices` (Set of Number) ID of the connected pci devices @@ -109,7 +112,7 @@ description: |- - `need_reboot` (Boolean) - `numa_node_id` (Number) - `os_users` (List of Object) Guest OS users provisioned on this compute instance. (see [below for nested schema](#nestedatt--os_users)) -- `pinned` (Boolean) +- `pinned` (Number) - `reference_id` (String) - `registered` (Boolean) - `res_name` (String) @@ -124,7 +127,7 @@ description: |- - `updated_by` (String) - `updated_time` (Number) - `user_managed` (Boolean) -- `vgpus` (List of Number) +- `vgpus` (List of Object) List of virtual GPUs (see [below for nested schema](#nestedatt--vgpus)) - `virtual_image_id` (Number) - `virtual_image_name` (String) - `vnc_password` (String) @@ -188,6 +191,7 @@ Optional: Read-Only: - `disk_id` (Number) Disk ID +- `present_to` (Map of Number) - `shareable` (Boolean) - `size_max` (Number) - `size_used` (Number) @@ -222,13 +226,10 @@ Required: Optional: - `ip_address` (String) Optional IP address to assign to this connection. This IP should belong to the selected network and free for use. +- `mac` (String) MAC address associated with this connection. MAC address is assigned automatically. - `mtu` (Number) Maximum transmission unit, used only for DPDK type, must be 1-9216 - `weight` (Number) weight the network if you need to sort network list, the smallest attach first. zero or null weight attach last -Read-Only: - -- `mac` (String) MAC address associated with this connection. MAC address is assigned automatically. - ### Nested Schema for `port_forwarding` @@ -381,3 +382,29 @@ Read-Only: - `guid` (String) - `label` (String) - `timestamp` (Number) + + + +### Nested Schema for `vgpus` + +Read-Only: + +- `account_id` (Number) +- `bus_number` (Number) +- `created_time` (Number) +- `deleted_time` (Number) +- `gid` (Number) +- `guid` (Number) +- `id` (Number) +- `last_claimed_by` (Number) +- `last_update_time` (Number) +- `mode` (String) +- `pci_slot` (Number) +- `pgpuid` (Number) +- `profile_id` (Number) +- `ram` (Number) +- `reference_id` (String) +- `rg_id` (Number) +- `status` (String) +- `type` (String) +- `vmid` (Number) diff --git a/docs/resources/cb_rg.md b/docs/resources/cb_rg.md index 0c99ebd..5f19188 100644 --- a/docs/resources/cb_rg.md +++ b/docs/resources/cb_rg.md @@ -37,7 +37,6 @@ description: |- - `ipcidr` (String) Address of the netowrk inside the private network segment (aka ViNS) if def_net_type=PRIVATE - `owner` (String) username - owner of this RG. Leave blank to set current user as owner - `permanently` (Boolean) flag to permanently delete resource group -- `register_computes` (Boolean) Register computes in registration system - `resource_limits` (Block List, Max: 1) (see [below for nested schema](#nestedblock--resource_limits)) - `restore` (Boolean) restore deleted rg - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) diff --git a/docs/resources/cb_virtual_image.md b/docs/resources/cb_virtual_image.md index 87a34b4..8d57994 100644 --- a/docs/resources/cb_virtual_image.md +++ b/docs/resources/cb_virtual_image.md @@ -52,7 +52,7 @@ description: |- - `meta` (List of String) meta - `milestones` (Number) - `pool_name` (String) pool for image create -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `reference_id` (String) diff --git a/docs/resources/disk.md b/docs/resources/disk.md index ea55a47..c80b4d4 100644 --- a/docs/resources/disk.md +++ b/docs/resources/disk.md @@ -19,7 +19,6 @@ description: |- - `account_id` (Number) The unique ID of the subscriber-owner of the disk - `disk_name` (String) Name of disk -- `gid` (Number) ID of the grid (platform) - `size_max` (Number) Size in GB ### Optional @@ -32,26 +31,30 @@ description: |- - `sep_id` (Number) Storage endpoint provider ID to create disk - `shareable` (Boolean) - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) -- `type` (String) The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp' ### Read-Only - `account_name` (String) The name of the subscriber '(account') to whom this disk belongs - `acl` (String) - `computes` (List of Object) (see [below for nested schema](#nestedatt--computes)) +- `created_by` (String) - `created_time` (Number) Created time +- `deleted_by` (String) - `deleted_time` (Number) Deleted time - `destruction_time` (Number) Time of final deletion - `devicename` (String) Name of the device - `disk_id` (Number) Disk ID. Duplicates the value of the ID parameter +- `gid` (Number) ID of the grid (platform) - `id` (String) The ID of this resource. - `image_id` (Number) Image ID - `images` (List of String) IDs of images using the disk +- `machine_id` (Number) +- `machine_name` (String) - `order` (Number) Disk order - `params` (String) Disk params - `parent_id` (Number) ID of the parent disk - `pci_slot` (Number) ID of the pci slot to which the disk is connected -- `present_to` (List of Number) +- `present_to` (Map of Number) - `purge_time` (Number) Time of the last deletion attempt - `replication` (List of Object) Replication status (see [below for nested schema](#nestedatt--replication)) - `res_id` (String) Resource ID @@ -62,6 +65,9 @@ description: |- - `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots)) - `status` (String) Disk status - `tech_status` (String) Technical status of the disk +- `type` (String) The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp' +- `updated_by` (String) +- `updated_time` (Number) - `vmid` (Number) Virtual Machine ID (Deprecated) diff --git a/docs/resources/image.md b/docs/resources/image.md index 0c9a596..bac9ba6 100644 --- a/docs/resources/image.md +++ b/docs/resources/image.md @@ -21,7 +21,7 @@ description: |- - `boot_type` (String) Boot type of image bios or uefi - `drivers` (List of String) - `name` (String) Name of the rescue disk -- `type` (String) Image type linux, windows or other +- `type` (String) Image type linux, windows or unknown - `url` (String) URL where to download media from ### Optional @@ -56,13 +56,14 @@ description: |- - `last_modified` (Number) - `link_to` (Number) - `milestones` (Number) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `res_id` (String) - `rescuecd` (Boolean) - `shared_with` (List of Number) - `size` (Number) +- `snapshot_id` (String) - `status` (String) - `tech_status` (String) - `unc_path` (String) diff --git a/docs/resources/image_from_blank_compute.md b/docs/resources/image_from_blank_compute.md index 4f01965..7e45762 100644 --- a/docs/resources/image_from_blank_compute.md +++ b/docs/resources/image_from_blank_compute.md @@ -20,7 +20,7 @@ description: |- - `boot_type` (String) Boot type of image BIOS or UEFI - `compute_id` (Number) Compute Id - `name` (String) Name of the rescue disk -- `type` (String) Image type linux, windows or other +- `type` (String) Image type linux, windows or unknown ### Optional @@ -29,7 +29,6 @@ description: |- - `hot_resize` (Boolean) Does this machine supports hot resize - `password` (String) Optional password for the image - `pool_name` (String) pool for image create -- `sep_id` (Number) storage endpoint provider ID - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `username` (String) Optional username for the image @@ -55,13 +54,15 @@ description: |- - `link_to` (Number) - `milestones` (Number) - `network_interface_naming` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `res_id` (String) - `rescuecd` (Boolean) +- `sep_id` (Number) storage endpoint provider ID - `shared_with` (List of Number) - `size` (Number) +- `snapshot_id` (String) - `status` (String) - `tech_status` (String) - `unc_path` (String) diff --git a/docs/resources/image_from_platform_disk.md b/docs/resources/image_from_platform_disk.md index c6c63fa..ba87162 100644 --- a/docs/resources/image_from_platform_disk.md +++ b/docs/resources/image_from_platform_disk.md @@ -22,7 +22,7 @@ description: |- - `disk_id` (Number) Disk Id - `drivers` (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ] - `name` (String) Name of the rescue disk -- `type` (String) Image type linux, windows or other +- `type` (String) Image type linux, windows or unknown ### Optional @@ -32,7 +32,6 @@ description: |- - `hot_resize` (Boolean) Does this machine supports hot resize - `password` (String) Optional password for the image - `pool_name` (String) pool for image create -- `sep_id` (Number) storage endpoint provider ID - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `username` (String) Optional username for the image @@ -55,13 +54,15 @@ description: |- - `link_to` (Number) - `milestones` (Number) - `network_interface_naming` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `res_id` (String) - `rescuecd` (Boolean) +- `sep_id` (Number) storage endpoint provider ID - `shared_with` (List of Number) - `size` (Number) +- `snapshot_id` (String) - `status` (String) - `tech_status` (String) - `unc_path` (String) diff --git a/docs/resources/image_virtual.md b/docs/resources/image_virtual.md index 6aff231..d24f0ff 100644 --- a/docs/resources/image_virtual.md +++ b/docs/resources/image_virtual.md @@ -50,7 +50,7 @@ description: |- - `network_interface_naming` (String) - `password` (String) - `pool_name` (String) -- `present_to` (List of Number) +- `present_to` (Map of Number) - `provider_name` (String) - `purge_attempts` (Number) - `res_id` (String) @@ -58,6 +58,7 @@ description: |- - `sep_id` (Number) - `shared_with` (List of Number) - `size` (Number) +- `snapshot_id` (String) - `status` (String) - `tech_status` (String) - `type` (String) diff --git a/docs/resources/kvmvm.md b/docs/resources/kvmvm.md index 68834a1..3ad8c0a 100644 --- a/docs/resources/kvmvm.md +++ b/docs/resources/kvmvm.md @@ -30,6 +30,7 @@ description: |- - `anti_affinity_rules` (Block List) (see [below for nested schema](#nestedblock--anti_affinity_rules)) - `auto_start_w_node` (Boolean) Flag for start compute after node exits from MAINTENANCE state - `boot_disk_size` (Number) This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image. +- `boot_type` (String) Type of image upload. - `cd` (Block Set, Max: 1) (see [below for nested schema](#nestedblock--cd)) - `chipset` (String) Type of the emulated system. - `cloud_init` (String) Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases. @@ -42,11 +43,14 @@ description: |- - `extra_disks` (Set of Number) Optional list of IDs of extra disks to attach to this compute. You may specify several extra disks. - `force_resize` (Boolean) Flag for resize compute - `force_stop` (Boolean) Flag for redeploy compute +- `hot_resize` (Boolean) Type of image vm. - `hp_backed` (Boolean) Use Huge Pages to allocate RAM of the virtual machine. The system must be pre-configured by allocating Huge Pages on the physical node. - `image_id` (Number) ID of the OS image to base this compute instance on. - `ipa_type` (String) compute purpose - `is` (String) system name -- `network` (Block Set, Max: 8) Optional network connection(s) for this compute. You may specify several network blocks, one for each connection. (see [below for nested schema](#nestedblock--network)) +- `loader_type` (String) Type of image vm. +- `network` (Block Set) Optional network connection(s) for this compute. You may specify several network blocks, one for each connection. (see [below for nested schema](#nestedblock--network)) +- `network_interface_naming` (String) Name of netfowrk interface. - `numa_affinity` (String) Rule for VM placement with NUMA affinity. - `pause` (Boolean) - `pci_devices` (Set of Number) ID of the connected pci devices @@ -118,7 +122,7 @@ description: |- - `updated_by` (String) - `updated_time` (Number) - `user_managed` (Boolean) -- `vgpus` (List of Number) +- `vgpus` (List of Object) List of virtual GPUs (see [below for nested schema](#nestedatt--vgpus)) - `virtual_image_id` (Number) - `virtual_image_name` (String) - `vnc_password` (String) @@ -181,6 +185,7 @@ Optional: Read-Only: - `disk_id` (Number) Disk ID +- `present_to` (Map of Number) - `shareable` (Boolean) - `size_max` (Number) - `size_used` (Number) @@ -197,13 +202,10 @@ Required: Optional: - `ip_address` (String) Optional IP address to assign to this connection. This IP should belong to the selected network and free for use. +- `mac` (String) MAC address associated with this connection. MAC address is assigned automatically. - `mtu` (Number) Maximum transmission unit, used only for DPDK type, must be 1-9216 - `weight` (Number) weight the network if you need to sort network list, the smallest attach first. zero or null weight attach last -Read-Only: - -- `mac` (String) MAC address associated with this connection. MAC address is assigned automatically. - ### Nested Schema for `port_forwarding` @@ -277,6 +279,7 @@ Read-Only: - `image_id` (Number) - `permanently` (Boolean) - `pool` (String) +- `present_to` (Map of Number) - `sep_id` (Number) - `shareable` (Boolean) - `size` (Number) @@ -358,3 +361,29 @@ Read-Only: - `guid` (String) - `label` (String) - `timestamp` (Number) + + + +### Nested Schema for `vgpus` + +Read-Only: + +- `account_id` (Number) +- `bus_number` (Number) +- `created_time` (Number) +- `deleted_time` (Number) +- `gid` (Number) +- `guid` (Number) +- `id` (Number) +- `last_claimed_by` (Number) +- `last_update_time` (Number) +- `mode` (String) +- `pci_slot` (Number) +- `pgpuid` (Number) +- `profile_id` (Number) +- `ram` (Number) +- `reference_id` (String) +- `rg_id` (Number) +- `status` (String) +- `type` (String) +- `vmid` (Number) diff --git a/docs/resources/resgroup.md b/docs/resources/resgroup.md index 4f9c4d0..4381e6a 100644 --- a/docs/resources/resgroup.md +++ b/docs/resources/resgroup.md @@ -35,7 +35,6 @@ description: |- - `owner` (String) - `permanently` (Boolean) Set to True if you want force delete non-empty RG - `quota` (Block List, Max: 1) Quota settings for this resource group. (see [below for nested schema](#nestedblock--quota)) -- `register_computes` (Boolean) Register computes in registration system - `restore` (Boolean) - `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) - `uniq_pools` (List of String) diff --git a/go.mod b/go.mod index 2093d78..9dc9b01 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 github.com/sirupsen/logrus v1.9.0 golang.org/x/net v0.23.0 - repository.basistech.ru/BASIS/decort-golang-sdk v1.10.2 + repository.basistech.ru/BASIS/decort-golang-sdk v1.11.4 ) require ( diff --git a/go.sum b/go.sum index 5c11ebb..346bc97 100644 --- a/go.sum +++ b/go.sum @@ -273,5 +273,5 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -repository.basistech.ru/BASIS/decort-golang-sdk v1.10.2 h1:sA/ZngL4xvkyz8lVGkqbi2RBi4CrHJjho2WV21KX918= -repository.basistech.ru/BASIS/decort-golang-sdk v1.10.2/go.mod h1:OaUynHHuSjWMzpfyoL4au6oLcUogqUkPPBKA15pbHWo= +repository.basistech.ru/BASIS/decort-golang-sdk v1.11.4 h1:OEFgSEGjzut+vVMGeNgoNq3dtk63FbXB6yGLTywtAas= +repository.basistech.ru/BASIS/decort-golang-sdk v1.11.4/go.mod h1:OaUynHHuSjWMzpfyoL4au6oLcUogqUkPPBKA15pbHWo= diff --git a/internal/provider/data_sources_map.go b/internal/provider/data_sources_map.go index 3c1a910..118bd66 100644 --- a/internal/provider/data_sources_map.go +++ b/internal/provider/data_sources_map.go @@ -55,6 +55,7 @@ import ( cb_node "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/node" cb_pcidevice "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/pcidevice" cb_rg "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/rg" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/sep" cb_sep "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/sep" cb_stack "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/stack" cb_user "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/user" @@ -159,6 +160,7 @@ func newDataSourcesMap() map[string]*schema.Resource { "decort_k8s_wg_cloud_init": k8s.DataSourceK8sWgCloudInit(), "decort_rg_resource_consumption_list": rg.DataSourceRGResourceConsumptionList(), "decort_rg_resource_consumption_get": rg.DataSourceRGResourceConsumptionGet(), + "decort_sep_and_pools_available_list": sep.DataSourceAvailableSEPAndPoolsList(), "decort_cb_account": cb_account.DataSourceAccount(), "decort_cb_account_list": cb_account.DataSourceAccountList(), @@ -241,10 +243,12 @@ func newDataSourcesMap() map[string]*schema.Resource { "decort_cb_rg_usage": cb_rg.DataSourceRgUsage(), "decort_cb_sep_list": cb_sep.DataSourceSepList(), "decort_cb_sep": cb_sep.DataSourceSep(), + "decort_cb_sep_and_pools_available_list": cb_sep.DataSourceAvailableSEPAndPoolsList(), "decort_cb_sep_consumption": cb_sep.DataSourceSepConsumption(), "decort_cb_sep_disk_list": cb_sep.DataSourceSepDiskList(), "decort_cb_sep_config": cb_sep.DataSourceSepConfig(), "decort_cb_sep_pool": cb_sep.DataSourceSepPool(), + "decort_cb_sep_template": cb_sep.DataSourceSepTemplate(), "decort_cb_lb": cb_lb.DataSourceLB(), "decort_cb_lb_list": cb_lb.DataSourceLBList(), "decort_cb_lb_list_deleted": cb_lb.DataSourceLBListDeleted(), diff --git a/internal/service/cloudapi/account/data_source_account.go b/internal/service/cloudapi/account/data_source_account.go index 9968ce8..4698ed8 100644 --- a/internal/service/cloudapi/account/data_source_account.go +++ b/internal/service/cloudapi/account/data_source_account.go @@ -326,6 +326,10 @@ func dataSourceAccountSchemaMake() map[string]*schema.Schema { Type: schema.TypeFloat, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudapi/account/data_source_account_list.go b/internal/service/cloudapi/account/data_source_account_list.go index f07829f..6cca41a 100644 --- a/internal/service/cloudapi/account/data_source_account_list.go +++ b/internal/service/cloudapi/account/data_source_account_list.go @@ -49,6 +49,7 @@ func flattenAccountList(al *account.ListAccounts) []map[string]interface{} { "acl": flattenRgAcl(acc.ACL), "compute_features": acc.ComputeFeatures, "created_time": acc.CreatedTime, + "desc": acc.Description, "deleted_time": acc.DeletedTime, "account_id": acc.ID, "account_name": acc.Name, @@ -176,6 +177,10 @@ func dataSourceAccountListSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_time": { Type: schema.TypeInt, Computed: true, diff --git a/internal/service/cloudapi/account/data_source_account_rg_list.go b/internal/service/cloudapi/account/data_source_account_rg_list.go index 6752099..5da9e97 100644 --- a/internal/service/cloudapi/account/data_source_account_rg_list.go +++ b/internal/service/cloudapi/account/data_source_account_rg_list.go @@ -50,6 +50,7 @@ func flattenAccountRGList(argl *account.ListRG) []map[string]interface{} { "resources": flattenAccRGResources(arg.Resources), "created_by": arg.CreatedBy, "created_time": arg.CreatedTime, + "desc": arg.Description, "deleted_by": arg.DeletedBy, "deleted_time": arg.DeletedTime, "rg_id": arg.RGID, @@ -314,6 +315,10 @@ func dataSourceAccountRGListSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudapi/account/flattens.go b/internal/service/cloudapi/account/flattens.go index e09903b..2074b7f 100644 --- a/internal/service/cloudapi/account/flattens.go +++ b/internal/service/cloudapi/account/flattens.go @@ -7,6 +7,7 @@ import ( func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error { d.Set("dc_location", acc.DCLocation) + d.Set("desc", acc.Description) // d.Set("resources", flattenAccResources(acc.Resources)) d.Set("ckey", acc.CKey) d.Set("acl", flattenAccAcl(acc.ACL)) @@ -16,6 +17,7 @@ func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error { d.Set("created_by", acc.CreatedBy) d.Set("created_time", acc.CreatedTime) d.Set("deactivation_time", acc.DeactivationTime) + d.Set("desc", acc.Description) d.Set("deleted_by", acc.DeletedBy) d.Set("deleted_time", acc.DeletedTime) d.Set("displayname", acc.DisplayName) diff --git a/internal/service/cloudapi/account/resource_account.go b/internal/service/cloudapi/account/resource_account.go index 5a4fa07..049cf49 100644 --- a/internal/service/cloudapi/account/resource_account.go +++ b/internal/service/cloudapi/account/resource_account.go @@ -176,6 +176,7 @@ func resourceAccountUpdate(ctx context.Context, d *schema.ResourceData, m interf if d.HasChange("enable") { reqSwitch := account.DisableEnableRequest{ AccountID: accountId, + Reason: d.Get("reason").(string), } enable := d.Get("enable").(bool) @@ -207,6 +208,11 @@ func resourceAccountUpdate(ctx context.Context, d *schema.ResourceData, m interf updated = true } + if d.HasChange("desc") { + req.Description = d.Get("desc").(string) + updated = true + } + if d.HasChange("resource_limits") { resLimit := d.Get("resource_limits").([]interface{})[0] resLimitConv := resLimit.(map[string]interface{}) @@ -394,10 +400,10 @@ func resourceAccountSchemaMake() map[string]*schema.Schema { Required: true, Description: "account name", }, - "username": { + "desc": { Type: schema.TypeString, - Required: true, - Description: "username of owner the account", + Optional: true, + Description: "description", }, "emailaddress": { Type: schema.TypeString, @@ -425,6 +431,11 @@ func resourceAccountSchemaMake() map[string]*schema.Schema { }, }, }, + "reason": { + Type: schema.TypeBool, + Optional: true, + Description: "reason for deactivation", + }, "restore": { Type: schema.TypeBool, Optional: true, diff --git a/internal/service/cloudapi/bservice/data_source_bservice_group.go b/internal/service/cloudapi/bservice/data_source_bservice_group.go index 1619c73..c504740 100644 --- a/internal/service/cloudapi/bservice/data_source_bservice_group.go +++ b/internal/service/cloudapi/bservice/data_source_bservice_group.go @@ -105,6 +105,7 @@ func flattenBSGroupComputes(bsgcs bservice.ListGroupComputes) []map[string]inter "ip_addresses": bsgc.IPAddresses, "name": bsgc.Name, "os_users": flattenBSGroupOSUsers(bsgc.OSUsers), + "chipset": bsgc.Chipset, } res = append(res, temp) } @@ -149,6 +150,10 @@ func dataSourceBasicServiceGroupSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "chipset": { + Type: schema.TypeString, + Computed: true, + }, "os_users": { Type: schema.TypeList, Computed: true, diff --git a/internal/service/cloudapi/bservice/resource_bservice_group.go b/internal/service/cloudapi/bservice/resource_bservice_group.go index 280a8d5..11bc9f8 100644 --- a/internal/service/cloudapi/bservice/resource_bservice_group.go +++ b/internal/service/cloudapi/bservice/resource_bservice_group.go @@ -100,6 +100,10 @@ func resourceBasicServiceGroupCreate(ctx context.Context, d *schema.ResourceData req.ExtNets = res } + if chipset, ok := d.GetOk("chipset"); ok { + req.Chipset = chipset.(string) + } + compgroupId, err := c.CloudAPI().BService().GroupAdd(ctx, req) if err != nil { return diag.FromErr(err) @@ -172,6 +176,7 @@ func resourceBasicServiceGroupUpdate(ctx context.Context, d *schema.ResourceData ServiceID: uint64(d.Get("service_id").(int)), CompGroupID: uint64(d.Get("compgroup_id").(int)), Count: int64(d.Get("comp_count").(int)), + Chipset: d.Get("chipset").(string), Mode: d.Get("mode").(string), } @@ -414,6 +419,12 @@ func resourceBasicServiceGroupSchemaMake() map[string]*schema.Schema { Optional: true, Description: "Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases.", }, + "chipset": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice([]string{"i440fx", "Q35"}, false), + Default: "i440fx", + }, /// "role": { Type: schema.TypeString, @@ -503,6 +514,10 @@ func resourceBasicServiceGroupSchemaMake() map[string]*schema.Schema { Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "chipset": { + Type: schema.TypeString, + Computed: true, + }, "id": { Type: schema.TypeInt, Computed: true, diff --git a/internal/service/cloudapi/disks/data_source_disk.go b/internal/service/cloudapi/disks/data_source_disk.go index ead990c..9b3e8e2 100644 --- a/internal/service/cloudapi/disks/data_source_disk.go +++ b/internal/service/cloudapi/disks/data_source_disk.go @@ -101,11 +101,19 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { }, }, }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, "created_time": { Type: schema.TypeInt, Computed: true, Description: "Created time", }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, "deleted_time": { Type: schema.TypeInt, Computed: true, @@ -237,16 +245,24 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { // Computed: true, // Description: "Login to access the disk", // }, - // "milestones": { - // Type: schema.TypeInt, - // Computed: true, - // Description: "Milestones", - // }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + Description: "Milestones", + }, "disk_name": { Type: schema.TypeString, Computed: true, Description: "Name of disk", }, + "machine_id": { + Type: schema.TypeInt, + Computed: true, + }, + "machine_name": { + Type: schema.TypeString, + Computed: true, + }, "order": { Type: schema.TypeInt, Computed: true, @@ -278,7 +294,7 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Description: "Pool for disk location", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -300,27 +316,27 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "disk_id": { - Type: schema.TypeInt, + Type: schema.TypeInt, Computed: true, }, "pool_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "role": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "self_volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "storage_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, }, @@ -366,6 +382,10 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -434,6 +454,14 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Virtual Machine ID (Deprecated)", }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, } return rets diff --git a/internal/service/cloudapi/disks/data_source_disk_list.go b/internal/service/cloudapi/disks/data_source_disk_list.go index dc6799e..8f7f204 100644 --- a/internal/service/cloudapi/disks/data_source_disk_list.go +++ b/internal/service/cloudapi/disks/data_source_disk_list.go @@ -163,6 +163,10 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { }, }, }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, "created_time": { Type: schema.TypeInt, Computed: true, @@ -314,11 +318,15 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Machine name", }, - // "milestones": { - // Type: schema.TypeInt, - // Computed: true, - // Description: "Milestones", - // }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + Description: "Milestones", + }, "disk_name": { Type: schema.TypeString, Computed: true, @@ -355,7 +363,7 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Description: "Pool for disk location", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -387,27 +395,27 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "disk_id": { - Type: schema.TypeInt, + Type: schema.TypeInt, Computed: true, }, "pool_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "role": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "self_volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "storage_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, }, @@ -443,6 +451,10 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -511,6 +523,14 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Virtual Machine ID (Deprecated)", }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, }, }, }, diff --git a/internal/service/cloudapi/disks/data_source_disk_replication.go b/internal/service/cloudapi/disks/data_source_disk_replication.go index 0488d57..e120a49 100644 --- a/internal/service/cloudapi/disks/data_source_disk_replication.go +++ b/internal/service/cloudapi/disks/data_source_disk_replication.go @@ -303,7 +303,7 @@ func dataSourceDiskReplicationSchemaMake() map[string]*schema.Schema { Description: "Pool for disk location", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -325,27 +325,27 @@ func dataSourceDiskReplicationSchemaMake() map[string]*schema.Schema { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "disk_id": { - Type: schema.TypeInt, + Type: schema.TypeInt, Computed: true, }, "pool_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "role": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "self_volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "storage_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, }, diff --git a/internal/service/cloudapi/disks/data_source_list_deleted.go b/internal/service/cloudapi/disks/data_source_list_deleted.go index 7368909..89e3c92 100644 --- a/internal/service/cloudapi/disks/data_source_list_deleted.go +++ b/internal/service/cloudapi/disks/data_source_list_deleted.go @@ -149,11 +149,19 @@ func dataSourceDiskDeletedListSchemaMake() map[string]*schema.Schema { }, }, }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, "created_time": { Type: schema.TypeInt, Computed: true, Description: "Created time", }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, "deleted_time": { Type: schema.TypeInt, Computed: true, @@ -300,11 +308,11 @@ func dataSourceDiskDeletedListSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Machine name", }, - // "milestones": { - // Type: schema.TypeInt, - // Computed: true, - // Description: "Milestones", - // }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + Description: "Milestones", + }, "disk_name": { Type: schema.TypeString, Computed: true, @@ -341,7 +349,7 @@ func dataSourceDiskDeletedListSchemaMake() map[string]*schema.Schema { Description: "Pool for disk location", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -363,27 +371,27 @@ func dataSourceDiskDeletedListSchemaMake() map[string]*schema.Schema { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "disk_id": { - Type: schema.TypeInt, + Type: schema.TypeInt, Computed: true, }, "pool_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "role": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "self_volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "storage_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, "volume_id": { - Type: schema.TypeString, + Type: schema.TypeString, Computed: true, }, }, @@ -429,6 +437,10 @@ func dataSourceDiskDeletedListSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -497,6 +509,14 @@ func dataSourceDiskDeletedListSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Virtual Machine ID (Deprecated)", }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, }, }, }, diff --git a/internal/service/cloudapi/disks/flattens.go b/internal/service/cloudapi/disks/flattens.go index e045f51..522e4f7 100644 --- a/internal/service/cloudapi/disks/flattens.go +++ b/internal/service/cloudapi/disks/flattens.go @@ -77,7 +77,9 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("acl", string(diskAcl)) // d.Set("boot_partition", disk.BootPartition) d.Set("computes", flattenDiskComputes(disk.Computes)) + d.Set("created_by", disk.CreatedBy) d.Set("created_time", disk.CreatedTime) + d.Set("deleted_by", disk.DeletedBy) d.Set("deleted_time", disk.DeletedTime) d.Set("desc", disk.Description) d.Set("destruction_time", disk.DestructionTime) @@ -91,7 +93,9 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("iotune", flattenIOTune(disk.IOTune)) // d.Set("iqn", disk.IQN) // d.Set("login", disk.Login) - // d.Set("milestones", disk.Milestones) + d.Set("machine_id", disk.MachineID) + d.Set("machine_name", disk.MachineName) + d.Set("milestones", disk.Milestones) d.Set("disk_name", disk.Name) d.Set("order", disk.Order) d.Set("params", disk.Params) @@ -110,6 +114,7 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("role", disk.Role) d.Set("sep_id", disk.SepID) d.Set("sep_type", disk.SepType) + d.Set("size_available", disk.SizeAvailable) d.Set("size_max", disk.SizeMax) d.Set("size_used", disk.SizeUsed) d.Set("shareable", disk.Shareable) @@ -118,6 +123,8 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("tech_status", disk.TechStatus) d.Set("type", disk.Type) d.Set("vmid", disk.VMID) + d.Set("updated_by", disk.UpdatedBy) + d.Set("updated_time", disk.UpdatedTime) } func flattenDiskReplication(rep disks.ItemReplication) []map[string]interface{} { @@ -211,7 +218,9 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "account_name": disk.AccountName, "acl": string(diskAcl), "computes": flattenDiskComputes(disk.Computes), + "created_by": disk.CreatedBy, "created_time": disk.CreatedTime, + "deleted_by": disk.DeletedBy, "deleted_time": disk.DeletedTime, "desc": disk.Description, "destruction_time": disk.DestructionTime, @@ -223,6 +232,7 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "iotune": flattenIOTune(disk.IOTune), "machine_id": disk.MachineID, "machine_name": disk.MachineName, + "milestones": disk.Milestones, "disk_name": disk.Name, "order": disk.Order, "params": disk.Params, @@ -238,6 +248,7 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "sep_id": disk.SepID, "sep_type": disk.SepType, "shareable": disk.Shareable, + "size_available": disk.SizeAvailable, "size_max": disk.SizeMax, "size_used": disk.SizeUsed, "snapshots": flattenDiskSnapshotList(disk.Snapshots), @@ -245,6 +256,8 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "tech_status": disk.TechStatus, "type": disk.Type, "vmid": disk.VMID, + "updated_by": disk.UpdatedBy, + "updated_time": disk.UpdatedTime, } res = append(res, temp) } diff --git a/internal/service/cloudapi/disks/resource_disk.go b/internal/service/cloudapi/disks/resource_disk.go index a73a329..8114f88 100644 --- a/internal/service/cloudapi/disks/resource_disk.go +++ b/internal/service/cloudapi/disks/resource_disk.go @@ -36,7 +36,6 @@ import ( "context" "fmt" "strconv" - "strings" log "github.com/sirupsen/logrus" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/disks" @@ -47,7 +46,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { @@ -62,23 +60,9 @@ func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, m interface return diag.Errorf("resourceDiskCreate: can't create Disk because AccountID %d is not allowed or does not exist", d.Get("account_id").(int)) } - haveGID, err := existGID(ctx, d, m) - if err != nil { - return diag.FromErr(err) - } - if !haveGID { - return diag.Errorf("resourceDiskCreate: can't create Disk because GID %d is not allowed or does not exist", d.Get("gid").(int)) - } - req.AccountID = uint64(d.Get("account_id").(int)) - req.GID = uint64(d.Get("gid").(int)) req.Name = d.Get("disk_name").(string) req.Size = uint64(d.Get("size_max").(int)) - if typeRaw, ok := d.GetOk("type"); ok { - req.Type = strings.ToUpper(typeRaw.(string)) - } else { - req.Type = "D" - } if sepId, ok := d.GetOk("sep_id"); ok { req.SEPID = uint64(sepId.(int)) @@ -210,14 +194,6 @@ func resourceDiskUpdate(ctx context.Context, d *schema.ResourceData, m interface return diag.Errorf("resourceDiskUpdate: can't update Disk because AccountID %d is not allowed or does not exist", d.Get("account_id").(int)) } - haveGID, err := existGID(ctx, d, m) - if err != nil { - return diag.FromErr(err) - } - if !haveGID { - return diag.Errorf("resourceDiskUpdate: can't update Disk because GID %d is not allowed or does not exist", d.Get("gid").(int)) - } - disk, err := utilityDiskCheckPresence(ctx, d, m) if err != nil { d.SetId("") @@ -377,6 +353,14 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { //ForceNew: true, Description: "The unique ID of the subscriber-owner of the disk", }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, "disk_name": { Type: schema.TypeString, Required: true, @@ -387,12 +371,6 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Required: true, Description: "Size in GB", }, - "gid": { - Type: schema.TypeInt, - Required: true, - //ForceNew: true, - Description: "ID of the grid (platform)", - }, "pool": { Type: schema.TypeString, Optional: true, @@ -411,13 +389,6 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Description of disk", }, - "type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.StringInSlice([]string{"D", "B", "T"}, false), - Description: "The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp'", - }, "detach": { Type: schema.TypeBool, Optional: true, @@ -524,7 +495,7 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { }, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -585,6 +556,11 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Name of the device", }, + "gid": { + Type: schema.TypeInt, + Computed: true, + Description: "ID of the grid (platform)", + }, // "disk_path": { // Type: schema.TypeString, // Computed: true, @@ -623,6 +599,14 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { // Computed: true, // Description: "Milestones", // }, + "machine_id": { + Type: schema.TypeInt, + Computed: true, + }, + "machine_name": { + Type: schema.TypeString, + Computed: true, + }, "order": { Type: schema.TypeInt, Computed: true, @@ -638,6 +622,11 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, Description: "ID of the parent disk", }, + "type": { + Type: schema.TypeString, + Computed: true, + Description: "The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp'", + }, // "passwd": { // Type: schema.TypeString, // Computed: true, @@ -779,6 +768,14 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Virtual Machine ID (Deprecated)", }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, } return rets diff --git a/internal/service/cloudapi/disks/resource_disk_replication.go b/internal/service/cloudapi/disks/resource_disk_replication.go index 5e3700a..1c28cf9 100644 --- a/internal/service/cloudapi/disks/resource_disk_replication.go +++ b/internal/service/cloudapi/disks/resource_disk_replication.go @@ -454,7 +454,7 @@ func resourceDiskReplicationSchemaMake() map[string]*schema.Schema { Description: "ID of the pci slot to which the disk is connected", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, diff --git a/internal/service/cloudapi/extnet/data_source_extnet.go b/internal/service/cloudapi/extnet/data_source_extnet.go index 6e6174e..4ac0a37 100644 --- a/internal/service/cloudapi/extnet/data_source_extnet.go +++ b/internal/service/cloudapi/extnet/data_source_extnet.go @@ -270,6 +270,13 @@ func dataSourceExtnetSchemaMake() map[string]*schema.Schema { }, }, }, + "ntp": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, } return res } diff --git a/internal/service/cloudapi/extnet/data_source_extnet_list.go b/internal/service/cloudapi/extnet/data_source_extnet_list.go index c104000..46f3e49 100644 --- a/internal/service/cloudapi/extnet/data_source_extnet_list.go +++ b/internal/service/cloudapi/extnet/data_source_extnet_list.go @@ -107,6 +107,11 @@ func dataSourceExtnetListSchemaMake() map[string]*schema.Schema { Optional: true, Description: "Page size", }, + "ovs_bridge": { + Type: schema.TypeString, + Optional: true, + Description: "Name of the openVswitch bridge", + }, "items": { Type: schema.TypeList, Computed: true, diff --git a/internal/service/cloudapi/extnet/flattens.go b/internal/service/cloudapi/extnet/flattens.go index 41f43d1..2da36fd 100644 --- a/internal/service/cloudapi/extnet/flattens.go +++ b/internal/service/cloudapi/extnet/flattens.go @@ -24,6 +24,7 @@ func flattenExtnet(d *schema.ResourceData, e *extnet.RecordExtNet) { d.Set("net_name", e.Name) d.Set("network", e.Network) d.Set("network_id", e.NetworkID) + d.Set("ntp", e.NTP) d.Set("pre_reservations_num", e.PreReservationsNum) d.Set("prefix", e.Prefix) d.Set("pri_vnf_dev_id", e.PriVNFDevID) diff --git a/internal/service/cloudapi/extnet/utility_extnet_list.go b/internal/service/cloudapi/extnet/utility_extnet_list.go index 4f9b29b..c9a39bd 100644 --- a/internal/service/cloudapi/extnet/utility_extnet_list.go +++ b/internal/service/cloudapi/extnet/utility_extnet_list.go @@ -46,11 +46,11 @@ func utilityExtnetListCheckPresence(ctx context.Context, d *schema.ResourceData, c := m.(*controller.ControllerCfg) req := extnet.ListRequest{} - if accountId, ok := d.GetOk("account_id"); ok { - req.AccountID = uint64(accountId.(int)) + if accountID, ok := d.GetOk("account_id"); ok { + req.AccountID = uint64(accountID.(int)) } - if by_id, ok := d.GetOk("by_id"); ok { - req.ByID = uint64(by_id.(int)) + if byID, ok := d.GetOk("by_id"); ok { + req.ByID = uint64(byID.(int)) } if name, ok := d.GetOk("name"); ok { req.Name = name.(string) @@ -58,11 +58,11 @@ func utilityExtnetListCheckPresence(ctx context.Context, d *schema.ResourceData, if network, ok := d.GetOk("network"); ok { req.Network = network.(string) } - if vlan_id, ok := d.GetOk("vlan_id"); ok { - req.VLANID = uint64(vlan_id.(int)) + if vlanID, ok := d.GetOk("vlan_id"); ok { + req.VLANID = uint64(vlanID.(int)) } - if vnfdev_id, ok := d.GetOk("vnfdev_id"); ok { - req.VNFDevID = uint64(vnfdev_id.(int)) + if vnfDevID, ok := d.GetOk("vnfdev_id"); ok { + req.VNFDevID = uint64(vnfDevID.(int)) } if status, ok := d.GetOk("status"); ok { req.Status = status.(string) @@ -77,6 +77,10 @@ func utilityExtnetListCheckPresence(ctx context.Context, d *schema.ResourceData, req.Size = uint64(size.(int)) } + if ovsBridge, ok := d.GetOk("ovs_bridge"); ok { + req.OVSBridge = ovsBridge.(string) + } + log.Debugf("utilityExtnetListCheckPresence") extnetList, err := c.CloudAPI().ExtNet().List(ctx, req) if err != nil { diff --git a/internal/service/cloudapi/image/flattens.go b/internal/service/cloudapi/image/flattens.go index 916f777..376db11 100644 --- a/internal/service/cloudapi/image/flattens.go +++ b/internal/service/cloudapi/image/flattens.go @@ -58,6 +58,7 @@ func flattenImage(d *schema.ResourceData, img *image.RecordImage) { d.Set("sep_id", img.SepID) d.Set("shared_with", img.SharedWith) d.Set("size", img.Size) + d.Set("snapshot_id", img.SnapshotID) d.Set("status", img.Status) d.Set("tech_status", img.TechStatus) d.Set("type", img.Type) diff --git a/internal/service/cloudapi/image/image_ds_subresource.go b/internal/service/cloudapi/image/image_ds_subresource.go index e0fc599..26d5a4a 100644 --- a/internal/service/cloudapi/image/image_ds_subresource.go +++ b/internal/service/cloudapi/image/image_ds_subresource.go @@ -169,7 +169,7 @@ func dataSourceImageExtendSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -198,6 +198,10 @@ func dataSourceImageExtendSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "snapshot_id": { + Type: schema.TypeString, + Computed: true, + }, "status": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudapi/image/image_rs_subresource.go b/internal/service/cloudapi/image/image_rs_subresource.go index 4653ac1..3a88370 100644 --- a/internal/service/cloudapi/image/image_rs_subresource.go +++ b/internal/service/cloudapi/image/image_rs_subresource.go @@ -68,8 +68,8 @@ func resourceImageSchemaMake(sch map[string]*schema.Schema) map[string]*schema.S sch["type"] = &schema.Schema{ Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "other"}, true), - Description: "Image type linux, windows or other", + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, true), + Description: "Image type linux, windows or unknown", } sch["hot_resize"] = &schema.Schema{ diff --git a/internal/service/cloudapi/image/resource_image_from_blank_compute.go b/internal/service/cloudapi/image/resource_image_from_blank_compute.go index 64e242f..26d1102 100644 --- a/internal/service/cloudapi/image/resource_image_from_blank_compute.go +++ b/internal/service/cloudapi/image/resource_image_from_blank_compute.go @@ -90,9 +90,6 @@ func resourceImageFromBlankComputeCreate(ctx context.Context, d *schema.Resource if accountId, ok := d.GetOk("account_id"); ok { req.AccountID = uint64(accountId.(int)) } - if sepId, ok := d.GetOk("sep_id"); ok { - req.SepID = uint64(sepId.(int)) - } if poolName, ok := d.GetOk("pool_name"); ok { req.PoolName = poolName.(string) } @@ -302,8 +299,8 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { "type": { Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "other"}, true), - Description: "Image type linux, windows or other", + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, true), + Description: "Image type linux, windows or unknown", }, "username": { @@ -326,7 +323,6 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { }, "sep_id": { Type: schema.TypeInt, - Optional: true, Computed: true, Description: "storage endpoint provider ID", }, @@ -457,7 +453,7 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -482,6 +478,10 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "snapshot_id": { + Type: schema.TypeString, + Computed: true, + }, "status": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudapi/image/resource_image_from_platform_disk.go b/internal/service/cloudapi/image/resource_image_from_platform_disk.go index 594feb2..d535973 100644 --- a/internal/service/cloudapi/image/resource_image_from_platform_disk.go +++ b/internal/service/cloudapi/image/resource_image_from_platform_disk.go @@ -93,9 +93,6 @@ func resourceImageFromPlatformDiskCreate(ctx context.Context, d *schema.Resource if accountId, ok := d.GetOk("account_id"); ok { req.AccountID = uint64(accountId.(int)) } - if sepId, ok := d.GetOk("sep_id"); ok { - req.SepID = uint64(sepId.(int)) - } if poolName, ok := d.GetOk("pool_name"); ok { req.PoolName = poolName.(string) } @@ -292,8 +289,8 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { "type": { Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "other"}, true), - Description: "Image type linux, windows or other", + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, true), + Description: "Image type linux, windows or unknown", }, "architecture": { Type: schema.TypeString, @@ -322,7 +319,6 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { }, "sep_id": { Type: schema.TypeInt, - Optional: true, Computed: true, Description: "storage endpoint provider ID", }, @@ -454,7 +450,7 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -479,6 +475,10 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "snapshot_id": { + Type: schema.TypeString, + Computed: true, + }, "status": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudapi/k8s/data_source_k8s.go b/internal/service/cloudapi/k8s/data_source_k8s.go index 565383b..72be400 100644 --- a/internal/service/cloudapi/k8s/data_source_k8s.go +++ b/internal/service/cloudapi/k8s/data_source_k8s.go @@ -357,6 +357,10 @@ func dataSourceK8sSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudapi/k8s/flattens.go b/internal/service/cloudapi/k8s/flattens.go index 2ab76b8..9a01ee9 100644 --- a/internal/service/cloudapi/k8s/flattens.go +++ b/internal/service/cloudapi/k8s/flattens.go @@ -240,6 +240,7 @@ func flattenK8sData(d *schema.ResourceData, cluster k8s.RecordK8S, masters []com d.Set("k8sci_id", cluster.CIID) d.Set("created_by", cluster.CreatedBy) d.Set("created_time", cluster.CreatedTime) + d.Set("desc", cluster.Description) d.Set("deleted_by", cluster.DeletedBy) d.Set("deleted_time", cluster.DeletedTime) d.Set("k8s_ci_name", cluster.K8CIName) @@ -353,6 +354,7 @@ func flattenResourceK8sCP(d *schema.ResourceData, k8s k8s.RecordK8S, masters []c d.Set("bservice_id", k8s.BServiceID) d.Set("created_by", k8s.CreatedBy) d.Set("created_time", k8s.CreatedTime) + d.Set("desc", k8s.Description) d.Set("deleted_by", k8s.DeletedBy) d.Set("deleted_time", k8s.DeletedTime) d.Set("k8s_ci_name", k8s.K8CIName) @@ -393,6 +395,7 @@ func flattenResourceK8s(d *schema.ResourceData, k8s k8s.RecordK8S, masters []com d.Set("bservice_id", k8s.BServiceID) d.Set("created_by", k8s.CreatedBy) d.Set("created_time", k8s.CreatedTime) + d.Set("desc", k8s.Description) d.Set("deleted_by", k8s.DeletedBy) d.Set("deleted_time", k8s.DeletedTime) d.Set("k8s_ci_name", k8s.K8CIName) diff --git a/internal/service/cloudapi/kvmvm/data_source_compute.go b/internal/service/cloudapi/kvmvm/data_source_compute.go index 453a143..fa20bfd 100644 --- a/internal/service/cloudapi/kvmvm/data_source_compute.go +++ b/internal/service/cloudapi/kvmvm/data_source_compute.go @@ -359,7 +359,7 @@ func computeListDisksSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -422,6 +422,10 @@ func computeListDisksSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -966,10 +970,88 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "vgpus": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{ - Type: schema.TypeInt, + Type: schema.TypeList, + Computed: true, + Description: "List of virtual GPUs", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeInt, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + "mode": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "profile_id": { + Type: schema.TypeInt, + Computed: true, + }, + "ram": { + Type: schema.TypeInt, + Computed: true, + }, + "last_update_time": { + Type: schema.TypeInt, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "vmid": { + Type: schema.TypeInt, + Computed: true, + }, + "pgpuid": { + Type: schema.TypeInt, + Computed: true, + }, + "reference_id": { + Type: schema.TypeString, + Computed: true, + }, + "account_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "last_claimed_by": { + Type: schema.TypeInt, + Computed: true, + }, + "pci_slot": { + Type: schema.TypeInt, + Computed: true, + }, + "bus_number": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + }, }, }, "virtual_image_id": { @@ -988,6 +1070,22 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "loader_type": { + Type: schema.TypeString, + Computed: true, + }, + "boot_type": { + Type: schema.TypeString, + Computed: true, + }, + "hot_resize": { + Type: schema.TypeBool, + Computed: true, + }, + "network_interface_naming": { + Type: schema.TypeString, + Computed: true, + }, } } diff --git a/internal/service/cloudapi/kvmvm/data_source_compute_list.go b/internal/service/cloudapi/kvmvm/data_source_compute_list.go index 6677ddf..1b7ed9a 100644 --- a/internal/service/cloudapi/kvmvm/data_source_compute_list.go +++ b/internal/service/cloudapi/kvmvm/data_source_compute_list.go @@ -381,6 +381,22 @@ func itemComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "loader_type": { + Type: schema.TypeString, + Computed: true, + }, + "boot_type": { + Type: schema.TypeString, + Computed: true, + }, + "hot_resize": { + Type: schema.TypeBool, + Computed: true, + }, + "network_interface_naming": { + Type: schema.TypeString, + Computed: true, + }, } } diff --git a/internal/service/cloudapi/kvmvm/flattens.go b/internal/service/cloudapi/kvmvm/flattens.go index 281313f..d634f37 100644 --- a/internal/service/cloudapi/kvmvm/flattens.go +++ b/internal/service/cloudapi/kvmvm/flattens.go @@ -47,9 +47,9 @@ func flattenDisks(disks []compute.InfoDisk) []map[string]interface{} { res := make([]map[string]interface{}, 0) for _, disk := range disks { temp := map[string]interface{}{ - "bus_number": disk.BusNumber, - "disk_id": disk.ID, - "pci_slot": disk.PCISlot, + // "bus_number": disk.BusNumber, + "disk_id": disk.ID, + // "pci_slot": disk.PCISlot, } res = append(res, temp) } @@ -217,28 +217,32 @@ func flattenComputeList(computes *compute.ListComputes) []map[string]interface{} "need_reboot": compute.NeedReboot, "numa_affinity": compute.NumaAffinity, "numa_node_id": compute.NumaNodeId, - "pinned": compute.Pinned, - "preferred_cpu": compute.PreferredCPU, - "ram": compute.RAM, - "reference_id": compute.ReferenceID, - "registered": compute.Registered, - "res_name": compute.ResName, - "reserved_node_cpus": compute.ReservedNodeCpus, - "rg_id": compute.RGID, - "rg_name": compute.RGName, - "snap_sets": flattenSnapSets(compute.SnapSets), - "stateless_sep_id": compute.StatelessSepID, - "stateless_sep_type": compute.StatelessSepType, - "status": compute.Status, - "tags": flattenTags(compute.Tags), - "tech_status": compute.TechStatus, - "total_disk_size": compute.TotalDiskSize, - "updated_by": compute.UpdatedBy, - "updated_time": compute.UpdatedTime, - "user_managed": compute.UserManaged, - "vgpus": compute.VGPUs, - "vins_connected": compute.VINSConnected, - "virtual_image_id": compute.VirtualImageID, + // "pinned": compute.Pinned, + "preferred_cpu": compute.PreferredCPU, + "ram": compute.RAM, + "reference_id": compute.ReferenceID, + "registered": compute.Registered, + "res_name": compute.ResName, + "reserved_node_cpus": compute.ReservedNodeCpus, + "rg_id": compute.RGID, + "rg_name": compute.RGName, + "snap_sets": flattenSnapSets(compute.SnapSets), + "stateless_sep_id": compute.StatelessSepID, + "stateless_sep_type": compute.StatelessSepType, + "status": compute.Status, + "tags": flattenTags(compute.Tags), + "tech_status": compute.TechStatus, + "total_disk_size": compute.TotalDiskSize, + "updated_by": compute.UpdatedBy, + "updated_time": compute.UpdatedTime, + "user_managed": compute.UserManaged, + "vgpus": compute.VGPUs, + "vins_connected": compute.VINSConnected, + "virtual_image_id": compute.VirtualImageID, + "loader_type": compute.LoaderType, + "boot_type": compute.BootType, + "hot_resize": compute.HotResize, + "network_interface_naming": compute.NetworkInterfaceNaming, } res = append(res, temp) } @@ -250,17 +254,18 @@ func flattenBootDisk(bootDisk *compute.ItemComputeDisk) []map[string]interface{} res := make([]map[string]interface{}, 0) temp := map[string]interface{}{ - "disk_name": bootDisk.Name, - "disk_id": bootDisk.ID, - "disk_type": bootDisk.Type, - "sep_id": bootDisk.SepID, - "shareable": bootDisk.Shareable, - "size_max": bootDisk.SizeMax, - "size_used": bootDisk.SizeUsed, - "pool": bootDisk.Pool, - "desc": bootDisk.Description, - "image_id": bootDisk.ImageID, - "size": bootDisk.SizeMax, + "disk_name": bootDisk.Name, + "disk_id": bootDisk.ID, + "disk_type": bootDisk.Type, + "sep_id": bootDisk.SepID, + "shareable": bootDisk.Shareable, + "size_max": bootDisk.SizeMax, + "size_used": bootDisk.SizeUsed, + "pool": bootDisk.Pool, + "desc": bootDisk.Description, + "image_id": bootDisk.ImageID, + "size": bootDisk.SizeMax, + "present_to": bootDisk.PresentTo, } res = append(res, temp) @@ -301,6 +306,7 @@ func flattenComputeDisksDemo(disksList compute.ListComputeDisks, disksBlocks, ex "image_id": disk.ImageID, "size": disk.SizeMax, "permanently": pernamentlyValue, + "present_to": disk.PresentTo, } res = append(res, temp) indexDataDisks++ @@ -415,7 +421,7 @@ func flattenCompute(d *schema.ResourceData, computeRec compute.RecordCompute, pc if err := d.Set("os_users", parseOsUsers(computeRec.OSUsers)); err != nil { return err } - d.Set("pinned", computeRec.Pinned) + // d.Set("pinned", computeRec.Pinned) d.Set("preferred_cpu", computeRec.PreferredCPU) d.Set("ram", computeRec.RAM) d.Set("reference_id", computeRec.ReferenceID) @@ -434,9 +440,13 @@ func flattenCompute(d *schema.ResourceData, computeRec compute.RecordCompute, pc d.Set("updated_time", computeRec.UpdatedTime) d.Set("user_managed", computeRec.UserManaged) d.Set("vnc_password", computeRec.VNCPassword) - d.Set("vgpus", computeRec.VGPUs) + d.Set("vgpus", flattenVGPUs(computeRec.VGPUs)) d.Set("virtual_image_id", computeRec.VirtualImageID) d.Set("virtual_image_name", computeRec.VirtualImageName) + d.Set("loader_type", computeRec.LoaderType) + d.Set("boot_type", computeRec.BootType) + d.Set("hot_resize", computeRec.HotResize) + d.Set("network_interface_naming", computeRec.NetworkInterfaceNaming) d.Set("enabled", false) if computeRec.Status == status.Enabled { @@ -561,6 +571,7 @@ func flattenListComputeDisks(disks compute.ListComputeDisks) []map[string]interf "role": disk.Role, "sep_id": disk.SepID, "shareable": disk.Shareable, + "size_available": disk.SizeAvailable, "size_max": disk.SizeMax, "size_used": disk.SizeUsed, "snapshots": flattenSnapshots(disk.Snapshots), @@ -660,7 +671,7 @@ func flattenDataCompute(d *schema.ResourceData, computeRec compute.RecordCompute d.Set("natable_vins_network", computeRec.NatableVINSNetwork) d.Set("natable_vins_network_name", computeRec.NatableVINSNetworkName) d.Set("os_users", flattenOsUsers(computeRec.OSUsers)) - d.Set("pinned", computeRec.Pinned) + // d.Set("pinned", computeRec.Pinned) d.Set("preferred_CPU", computeRec.PreferredCPU) d.Set("ram", computeRec.RAM) d.Set("reference_id", computeRec.ReferenceID) @@ -680,10 +691,14 @@ func flattenDataCompute(d *schema.ResourceData, computeRec compute.RecordCompute d.Set("user_managed", computeRec.UserManaged) d.Set("userdata", string(userdata)) d.Set("vnc_password", computeRec.VNCPassword) - d.Set("vgpus", computeRec.VGPUs) + d.Set("vgpus", flattenVGPUs(computeRec.VGPUs)) d.Set("virtual_image_id", computeRec.VirtualImageID) d.Set("virtual_image_name", computeRec.VirtualImageName) d.Set("pci_devices", flattenPCI(*pciList)) + d.Set("loader_type", computeRec.LoaderType) + d.Set("boot_type", computeRec.BootType) + d.Set("hot_resize", computeRec.HotResize) + d.Set("network_interface_naming", computeRec.NetworkInterfaceNaming) } func flattenPCI(pciList compute.ListPCIDevices) []uint64 { @@ -821,3 +836,34 @@ func flattenPCIDevice(deviceList []compute.ItemPCIDevice) []map[string]interface } return res } + +func flattenVGPUs(vgpus []compute.VGPUItem) []map[string]interface{} { + res := make([]map[string]interface{}, len(vgpus)) + + for i, vgpu := range vgpus { + + res[i] = map[string]interface{}{ + "id": int(vgpu.ID), + "gid": int(vgpu.GID), + "type": vgpu.Type, + "mode": vgpu.Mode, + "status": vgpu.Status, + "profile_id": vgpu.ProfileID, + "ram": int(vgpu.RAM), + "last_update_time": int(vgpu.LastUpdateTime), + "created_time": int(vgpu.CreatedTime), + "deleted_time": int(vgpu.DeletedTime), + "vmid": int(vgpu.VMID), + "pgpuid": int(vgpu.PGPuid), + "reference_id": vgpu.ReferenceID, + "account_id": int(vgpu.AccountID), + "rg_id": int(vgpu.RgID), + "last_claimed_by": int(vgpu.LastClaimedBy), + "pci_slot": int(vgpu.PCISlot), + "bus_number": int(vgpu.BusNumber), + "guid": int(vgpu.GUID), + } + } + + return res +} diff --git a/internal/service/cloudapi/kvmvm/network_subresource.go b/internal/service/cloudapi/kvmvm/network_subresource.go index 9030f93..fea4086 100644 --- a/internal/service/cloudapi/kvmvm/network_subresource.go +++ b/internal/service/cloudapi/kvmvm/network_subresource.go @@ -147,9 +147,11 @@ func networkSubresourceSchemaMake() map[string]*schema.Schema { }, "mac": { - Type: schema.TypeString, - Computed: true, - Description: "MAC address associated with this connection. MAC address is assigned automatically.", + Type: schema.TypeString, + Optional: true, + Computed: true, + DiffSuppressFunc: networkSubresIPAddreDiffSupperss, + Description: "MAC address associated with this connection. MAC address is assigned automatically.", }, "weight": { diff --git a/internal/service/cloudapi/kvmvm/resource_compute.go b/internal/service/cloudapi/kvmvm/resource_compute.go index 79240b3..b0c82cf 100644 --- a/internal/service/cloudapi/kvmvm/resource_compute.go +++ b/internal/service/cloudapi/kvmvm/resource_compute.go @@ -171,6 +171,11 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf reqInterface.IPAddr = ipaddr.(string) } + macaddr, macSet := netInterfaceVal["mac"] + if macSet { + reqInterface.MAC = macaddr.(string) + } + interfaces = append(interfaces, reqInterface) } @@ -288,6 +293,38 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf log.Debugf("resourceComputeCreate: new simple Compute ID %d, name %s created", computeId, d.Get("name").(string)) + updateReq := compute.UpdateRequest{} + + loaderType, loaderTypeOk := d.GetOk("loader_type") + bootType, bootTypeOk := d.GetOk("boot_type") + hotResize, hotResizeOk := d.GetOk("hot_resize") + networkInterfaceNaming, networkInterfaceNamingOk := d.GetOk("network_interface_naming") + + if loaderTypeOk { + updateReq.LoaderType = loaderType.(string) + } + + if bootTypeOk { + updateReq.BootType = bootType.(string) + } + + if hotResizeOk { + updateReq.HotResize = hotResize.(bool) + } + + if networkInterfaceNamingOk { + updateReq.NetworkInterfaceNaming = networkInterfaceNaming.(string) + } + + if loaderTypeOk || bootTypeOk || hotResizeOk || networkInterfaceNamingOk { + log.Debugf("resourceComputeCreate: change loaderType or bootType or hotResize or networkInterfaceNaming on ComputeID: %d", computeId) + updateReq.ComputeID = computeId + _, err := c.CloudAPI().Compute().Update(ctx, updateReq) + if err != nil { + warnings.Add(err) + } + } + if ars, ok := d.GetOk("pci_devices"); ok { log.Debugf("resourceComputeCreate: add pci devices on ComputeID: %d", computeId) addedPciDevices := ars.(*schema.Set).List() @@ -920,7 +957,18 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf } } - if d.HasChanges("description", "name", "numa_affinity", "cpu_pin", "hp_backed", "chipset", "auto_start_w_node", "preferred_cpu") { + if d.HasChanges("description", + "name", + "numa_affinity", + "cpu_pin", + "hp_backed", + "chipset", + "auto_start_w_node", + "preferred_cpu", + "loader_type", + "boot_type", + "hot_resize", + "network_interface_naming") { req := compute.UpdateRequest{ ComputeID: computeRec.ID, } @@ -956,6 +1004,22 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf req.HPBacked = d.Get("hp_backed").(bool) req.AutoStart = d.Get("auto_start_w_node").(bool) + if d.HasChange("loader_type") { + req.LoaderType = d.Get("loader_type").(string) + } + + if d.HasChange("boot_type") { + req.BootType = d.Get("boot_type").(string) + } + + if d.HasChange("hot_resize") { + req.HotResize = d.Get("hot_resize").(bool) + } + + if d.HasChange("network_interface_naming") { + req.NetworkInterfaceNaming = d.Get("network_interface_naming").(string) + } + // Note bene: numa_affinity, cpu_pin and hp_backed are not allowed to be changed for compute in STARTED tech status. // If STARTED, we need to stop it before update var isStopRequired bool @@ -1824,6 +1888,13 @@ func disksSubresourceSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "present_to": { + Type: schema.TypeMap, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, } return rets } @@ -1941,6 +2012,13 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema { ), Description: "Amount of RAM in MB to allocate to this compute instance.", }, + "boot_type": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"bios", "uefi"}, false), + Description: "Type of image upload.", + }, "image_id": { Type: schema.TypeInt, Optional: true, @@ -2096,7 +2174,6 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeSet, Optional: true, MinItems: 1, - MaxItems: constants.MAX_NETWORKS_PER_COMPUTE, Elem: &schema.Resource{ Schema: networkSubresourceSchemaMake(), }, @@ -2171,6 +2248,19 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, Description: "If true - enable compute, else - disable", }, + "loader_type": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, false), + Description: "Type of image vm.", + }, + "hot_resize": { + Type: schema.TypeBool, + Optional: true, + Computed: true, + Description: "Type of image vm.", + }, "pause": { Type: schema.TypeBool, Optional: true, @@ -2230,6 +2320,13 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema { Optional: true, Description: "compute purpose", }, + "network_interface_naming": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"eth", "ens"}, false), + Description: "Name of netfowrk interface.", + }, "numa_affinity": { Type: schema.TypeString, Optional: true, @@ -2481,10 +2578,88 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "vgpus": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{ - Type: schema.TypeInt, + Type: schema.TypeList, + Computed: true, + Description: "List of virtual GPUs", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeInt, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + "mode": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "profile_id": { + Type: schema.TypeInt, + Computed: true, + }, + "ram": { + Type: schema.TypeInt, + Computed: true, + }, + "last_update_time": { + Type: schema.TypeInt, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "vmid": { + Type: schema.TypeInt, + Computed: true, + }, + "pgpuid": { + Type: schema.TypeInt, + Computed: true, + }, + "reference_id": { + Type: schema.TypeString, + Computed: true, + }, + "account_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "last_claimed_by": { + Type: schema.TypeInt, + Computed: true, + }, + "pci_slot": { + Type: schema.TypeInt, + Computed: true, + }, + "bus_number": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + }, }, }, "virtual_image_id": { diff --git a/internal/service/cloudapi/kvmvm/utility_compute.go b/internal/service/cloudapi/kvmvm/utility_compute.go index 973259e..6b20898 100644 --- a/internal/service/cloudapi/kvmvm/utility_compute.go +++ b/internal/service/cloudapi/kvmvm/utility_compute.go @@ -98,14 +98,6 @@ func utilityComputeExtraDisksConfigure(ctx context.Context, d *schema.ResourceDa if detach_set.Len() > 0 { computeId, _ := strconv.ParseUint(d.Id(), 10, 64) - stopReq := compute.StopRequest{ - ComputeID: computeId, - Force: false, - } - _, err := c.CloudAPI().Compute().Stop(ctx, stopReq) - if err != nil { - return err - } for _, diskId := range detach_set.List() { req := compute.DiskDetachRequest{ @@ -120,14 +112,6 @@ func utilityComputeExtraDisksConfigure(ctx context.Context, d *schema.ResourceDa } } - req := compute.StartRequest{ - ComputeID: computeId, - AltBootID: 0, - } - _, err = c.CloudAPI().Compute().Start(ctx, req) - if err != nil { - return err - } } attach_set := new_set.(*schema.Set).Difference(old_set.(*schema.Set)) @@ -180,7 +164,7 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData oldList := oldSet.(*schema.Set).List() newList := newSet.(*schema.Set).List() - detachMap, changeIpMap, attachMap := differenceNetwork(oldList, newList) + detachMap, changeIpMap, changeMacMap, attachMap := differenceNetwork(oldList, newList) apiErrCount := 0 var lastSavedError error @@ -224,7 +208,7 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData needStart := false - if oldSet.(*schema.Set).Len() == len(detachMap) || oldSet.(*schema.Set).Len() == 0 || hasDPDKnetwork(attachMap) { + if oldSet.(*schema.Set).Len() == len(detachMap) || oldSet.(*schema.Set).Len() == 0 || hasDPDKnetwork(attachMap) || len(changeMacMap) != 0 { computeId, _ := strconv.ParseUint(d.Id(), 10, 64) if err := utilityComputeStop(ctx, computeId, m); err != nil { apiErrCount++ @@ -235,6 +219,24 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData } } + log.Debugf("utilityComputeNetworksConfigure: changeMac set has %d items for Compute ID %s", len(changeMacMap), d.Id()) + for _, netData := range changeMacMap { + computeId, _ := strconv.ParseUint(d.Id(), 10, 64) + req := compute.ChangeMACRequest{ + ComputeID: computeId, + NewMAC: netData["mac"].(string), + СurrentMAC: netData["old_mac"].(string), + } + + _, err := c.CloudAPI().Compute().ChangeMAC(ctx, req) + if err != nil { + log.Errorf("utilityComputeNetworksConfigure: failed to change mac %s to %s from Compute ID %s: %s", + req.СurrentMAC, req.NewMAC, d.Id(), err) + apiErrCount++ + lastSavedError = err + } + } + sort.Slice(attachMap, func(i, j int) bool { weightI := attachMap[i]["weight"].(int) weightJ := attachMap[j]["weight"].(int) @@ -246,6 +248,7 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData } return weightI < weightJ }) + log.Debugf("utilityComputeNetworksConfigure: attach set has %d items for Compute ID %s", len(attachMap), d.Id()) for _, netData := range attachMap { computeId, _ := strconv.ParseUint(d.Id(), 10, 64) @@ -259,6 +262,10 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData req.IPAddr = netData["ip_address"].(string) } + if netData["mac"].(string) != "" { + req.MACAddr = netData["mac"].(string) + } + if req.NetType == "DPDK" { req.MTU = uint64(netData["mtu"].(int)) } @@ -378,9 +385,10 @@ func utilityComputeUpdatePciDevices(ctx context.Context, d *schema.ResourceData, return nil } -func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, attachMap []map[string]interface{}) { +func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, changeMacMap, attachMap []map[string]interface{}) { attachMap = make([]map[string]interface{}, 0) changeIpMap = make([]map[string]interface{}, 0) + changeMacMap = make([]map[string]interface{}, 0) detachMap = make([]map[string]interface{}, 0) for _, oldNetwork := range oldList { oldMap := oldNetwork.(map[string]interface{}) @@ -388,15 +396,21 @@ func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, for _, newNetwork := range newList { newMap := newNetwork.(map[string]interface{}) if newMap["net_type"] == oldMap["net_type"] && newMap["net_id"] == oldMap["net_id"] && newMap["weight"] == oldMap["weight"] && (newMap["mtu"] == oldMap["mtu"] || newMap["mtu"].(int) == 0) { - if (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != "") { + found = true + switch { + case (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != ""): changeIpMap = append(changeIpMap, newMap) found = true - break - } else if newMap["ip_address"] == oldMap["ip_address"] || newMap["ip_address"].(string) == "" { + fallthrough + case newMap["mac"] != oldMap["mac"] && newMap["mac"].(string) != "": + newMap["old_mac"] = oldMap["mac"] + changeMacMap = append(changeMacMap, newMap) found = true - break } } + if found { + break + } } if found { continue @@ -410,12 +424,8 @@ func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, for _, oldNetwork := range oldList { oldMap := oldNetwork.(map[string]interface{}) if newMap["net_type"] == oldMap["net_type"] && newMap["net_id"] == oldMap["net_id"] && newMap["weight"] == oldMap["weight"] && (newMap["mtu"] == oldMap["mtu"] || newMap["mtu"].(int) == 0) { - if newMap["ip_address"] == oldMap["ip_address"] || newMap["ip_address"].(string) == "" || - ((newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && - newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != "") { - found = true - break - } + found = true + break } } if found { diff --git a/internal/service/cloudapi/locations/data_source_locations_list.go b/internal/service/cloudapi/locations/data_source_locations_list.go index 04c3968..bc4097d 100644 --- a/internal/service/cloudapi/locations/data_source_locations_list.go +++ b/internal/service/cloudapi/locations/data_source_locations_list.go @@ -56,6 +56,7 @@ func flattenLocationsList(ll *locations.ListLocations) []map[string]interface{} "id": l.ID, "location_code": l.LocationCode, "name": l.Name, + "sdn_support": l.SDNSupport, } res = append(res, temp) } @@ -169,6 +170,11 @@ func dataSourceLocationsListSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Location name", }, + "sdn_support": { + Type: schema.TypeBool, + Computed: true, + Description: "support of SDN", + }, }, }, }, diff --git a/internal/service/cloudapi/rg/data_source_rg.go b/internal/service/cloudapi/rg/data_source_rg.go index f42df3c..7437eab 100644 --- a/internal/service/cloudapi/rg/data_source_rg.go +++ b/internal/service/cloudapi/rg/data_source_rg.go @@ -355,10 +355,6 @@ func dataSourceRgSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, - "register_computes": { - Type: schema.TypeBool, - Computed: true, - }, "resource_limits": { Type: schema.TypeList, Computed: true, diff --git a/internal/service/cloudapi/rg/data_source_rg_list.go b/internal/service/cloudapi/rg/data_source_rg_list.go index dcbecce..6e354ee 100644 --- a/internal/service/cloudapi/rg/data_source_rg_list.go +++ b/internal/service/cloudapi/rg/data_source_rg_list.go @@ -202,10 +202,6 @@ func dataSourceRgListSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, - "register_computes": { - Type: schema.TypeBool, - Computed: true, - }, "resource_limits": { Type: schema.TypeList, Computed: true, diff --git a/internal/service/cloudapi/rg/data_source_rg_list_deleted.go b/internal/service/cloudapi/rg/data_source_rg_list_deleted.go index 3a207b3..b07ab7a 100644 --- a/internal/service/cloudapi/rg/data_source_rg_list_deleted.go +++ b/internal/service/cloudapi/rg/data_source_rg_list_deleted.go @@ -199,10 +199,6 @@ func dataSourceRgListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, - "register_computes": { - Type: schema.TypeBool, - Computed: true, - }, "resource_limits": { Type: schema.TypeList, Computed: true, diff --git a/internal/service/cloudapi/rg/flattens.go b/internal/service/cloudapi/rg/flattens.go index 86485d7..02c777a 100644 --- a/internal/service/cloudapi/rg/flattens.go +++ b/internal/service/cloudapi/rg/flattens.go @@ -106,7 +106,6 @@ func flattenResgroup(d *schema.ResourceData, details rg.RecordResourceGroup) err d.Set("rg_id", details.ID) d.Set("lock_status", details.LockStatus) d.Set("milestones", details.Milestones) - d.Set("register_computes", details.RegisterComputes) d.Set("res_types", details.ResTypes) d.Set("secret", details.Secret) d.Set("status", details.Status) @@ -193,7 +192,6 @@ func flattenRg(d *schema.ResourceData, itemRg rg.RecordResourceGroup) { d.Set("lock_status", itemRg.LockStatus) d.Set("milestones", itemRg.Milestones) d.Set("name", itemRg.Name) - d.Set("register_computes", itemRg.RegisterComputes) d.Set("res_types", itemRg.ResTypes) d.Set("resource_limits", flattenRgResourceLimits(itemRg.ResourceLimits)) d.Set("secret", itemRg.Secret) @@ -245,7 +243,6 @@ func flattenRgList(rgl *rg.ListResourceGroups) []map[string]interface{} { "lock_status": rg.LockStatus, "milestones": rg.Milestones, "name": rg.Name, - "register_computes": rg.RegisterComputes, "resource_limits": flattenRgResourceLimits(rg.ResourceLimits), "secret": rg.Secret, "status": rg.Status, diff --git a/internal/service/cloudapi/rg/models.go b/internal/service/cloudapi/rg/models.go index 92d2e33..2e0f1ae 100644 --- a/internal/service/cloudapi/rg/models.go +++ b/internal/service/cloudapi/rg/models.go @@ -1,749 +1,743 @@ -/* -Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. -Authors: -Petr Krutov, -Stanislav Solovev, -Kasim Baybikov, - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* -Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud -Orchestration Technology) with Terraform by Hashicorp. - -Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort - -Please see README.md to learn where to place source code so that it -builds seamlessly. - -Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki -*/ - -package rg - -type ResourceLimits struct { - CUC float64 `json:"CU_C"` - CUD float64 `json:"CU_D"` - CUI float64 `json:"CU_I"` - CUM float64 `json:"CU_M"` - CUNP float64 `json:"CU_NP"` - GpuUnits float64 `json:"gpu_units"` -} - -type QuotaRecord struct { // this is how quota is reported by /api/.../rg/get - Cpu int `json:"CU_C"` // CPU count in pcs - Ram int `json:"CU_M"` // RAM volume in MB - Disk int `json:"CU_D"` // Disk capacity in GB - ExtIPs int `json:"CU_I"` // Ext IPs count - ExtTraffic int `json:"CU_NP"` // Ext network traffic - GpuUnits int `json:"gpu_units"` // GPU count -} - -// Main information about audit -type ItemAudit struct { - // Call - Call string `json:"call"` - - // Response time - ResponseTime float64 `json:"responsetime"` - - // Status code - StatusCode uint64 `json:"statuscode"` - - // Timestamp - Timestamp float64 `json:"timestamp"` - - // User - User string `json:"user"` -} - -// List of audits -type ListAudits []ItemAudit - -// Resources used -type Resource struct { - // Number of cores - CPU int64 `json:"cpu"` - - // Disk size - DiskSize float64 `json:"disksize"` - - // Max disk size - DiskSizeMax uint64 `json:"disksizemax"` - - // Number of External IPs - ExtIPs int64 `json:"extips"` - - // External traffic - ExtTraffic int64 `json:"exttraffic"` - - // Number of grafic cores - GPU int64 `json:"gpu"` - - // Number of RAM - RAM int64 `json:"ram"` - - // SEPs - SEPs map[string]map[string]DiskUsage `json:"seps"` -} - -// Disk usage -type DiskUsage struct { - // Disk size - DiskSize float64 `json:"disksize"` - - // Disk size max - DiskSizeMax float64 `json:"disksizemax"` -} - -// Information about resources -type Resources struct { - // Current information about resources - Current Resource `json:"Current"` - - // Reserved information about resources - Reserved Resource `json:"Reserved"` -} - -// Detailed information about resource group -type RecordResourceGroup struct { - // Resources - Resources Resources `json:"Resources"` - - // Account ID - AccountID uint64 `json:"accountId"` - - // Account name - AccountName string `json:"accountName"` - - // Access Control List - ACL ListACL `json:"acl"` - - // Created by - CreatedBy string `json:"createdBy"` - - // Created time - CreatedTime uint64 `json:"createdTime"` - - // DefNetID - DefNetID int64 `json:"def_net_id"` - - // DefNetType - DefNetType string `json:"def_net_type"` - - // Deleted by - DeletedBy string `json:"deletedBy"` - - // Deleted time - DeletedTime uint64 `json:"deletedTime"` - - // Description - Description string `json:"desc"` - - // Dirty - Dirty bool `json:"dirty"` - - // Grid ID - GID uint64 `json:"gid"` - - // GUID - GUID uint64 `json:"guid"` - - // ID - ID uint64 `json:"id"` - - // Lock status - LockStatus string `json:"lockStatus"` - - // Milestones - Milestones uint64 `json:"milestones"` - - // Name - Name string `json:"name"` - - // RegisterComputes - RegisterComputes bool `json:"registerComputes"` - - // Resource limits - ResourceLimits ResourceLimits `json:"resourceLimits"` - - // Secret - Secret string `json:"secret"` - - // Status - Status string `json:"status"` - - // Updated by - UpdatedBy string `json:"updatedBy"` - - // Updated time - UpdatedTime uint64 `json:"updatedTime"` - - // List of VINS IDs - VINS []uint64 `json:"vins"` - - // List of compute IDs - Computes []uint64 `json:"vms"` - - // List of resource types - ResTypes []string `json:"resourceTypes"` - - // UniqPools - UniqPools []string `json:"uniqPools"` -} - -// Main information about Access Control List -type ItemACL struct { - // Explicit - Explicit bool `json:"explicit"` - - // GUID - GUID string `json:"guid"` - - // Right - Right string `json:"right"` - - // Status - Status string `json:"status"` - - // Type - Type string `json:"type"` - - // User group ID - UserGroupID string `json:"userGroupId"` -} - -// List ACL -type ListACL []ItemACL - -type ItemResourceGroup struct { - // - AccountACL ItemACL `json:"accountAcl"` - - // Account ID - AccountID uint64 `json:"accountId"` - - // Account name - AccountName string `json:"accountName"` - - // Access Control List - ACL ListACL `json:"acl"` - - // Created by - CreatedBy string `json:"createdBy"` - - // Created time - CreatedTime uint64 `json:"createdTime"` - - // DefNetID - DefNetID int64 `json:"def_net_id"` - - // DefNetType - DefNetType string `json:"def_net_type"` - - // Deleted by - DeletedBy string `json:"deletedBy"` - - // Deleted time - DeletedTime uint64 `json:"deletedTime"` - - // Description - Description string `json:"desc"` - - // Dirty - Dirty bool `json:"dirty"` - - // Grid ID - GID uint64 `json:"gid"` - - // GUID - GUID uint64 `json:"guid"` - - // ID - ID uint64 `json:"id"` - - // Lock status - LockStatus string `json:"lockStatus"` - - // Milestones - Milestones uint64 `json:"milestones"` - - // Name - Name string `json:"name"` - - // RegisterComputes - RegisterComputes bool `json:"registerComputes"` - - // Resource limits - ResourceLimits ResourceLimits `json:"resourceLimits"` - - // Secret - Secret string `json:"secret"` - - // Status - Status string `json:"status"` - - // Updated by - UpdatedBy string `json:"updatedBy"` - - // Updated time - UpdatedTime uint64 `json:"updatedTime"` - - // List of VINS IDs - VINS []uint64 `json:"vins"` - - // List of compute IDs - Computes []uint64 `json:"vms"` - - // List of resource types - ResTypes []string `json:"resourceTypes"` - - // UniqPools - UniqPools []string `json:"uniqPools"` -} - -// List of resource groups -type ListResourceGroups []ItemResourceGroup - -// Main information about affinity rule -type ItemRule struct { - // GUID - GUID string `json:"guid"` - - // Key - Key string `json:"key"` - - // Mode - Mode string `json:"mode"` - - // Policy - Policy string `json:"policy"` - - // Topology - Topology string `json:"topology"` - - // Value - Value string `json:"value"` -} - -// List rules -type ListRules []ItemRule - -// Main information about compute -type ItemCompute struct { - // Account ID - AccountID uint64 `json:"accountId"` - - // Account name - AccountName string `json:"accountName"` - - // Affinity label - AffinityLabel string `json:"affinityLabel"` - - // List affinity rules - AffinityRules ListRules `json:"affinityRules"` - - // Affinity weight - AffinityWeight uint64 `json:"affinityWeight"` - - // Anti affinity rules - AntiAffinityRules ListRules `json:"antiAffinityRules"` - - // Number of CPU - CPUs uint64 `json:"cpus"` - - // Created by - CreatedBy string `json:"createdBy"` - - // Created time - CreatedTime uint64 `json:"createdTime"` - - // Deleted by - DeletedBy string `json:"deletedBy"` - - // Deleted time - DeletedTime uint64 `json:"deletedTime"` - - // ID - ID uint64 `json:"id"` - - // Name - Name string `json:"name"` - - // Number of RAM - RAM uint64 `json:"ram"` - - // Registered - Registered bool `json:"registered"` - - // Resource group ID - RGID uint64 `json:"rgId"` - - // Resource group name - RGName string `json:"rgName"` - - // Status - Status string `json:"status"` - - // Tech status - TechStatus string `json:"techStatus"` - - // Total disks size - TotalDisksSize uint64 `json:"totalDisksSize"` - - // Updated by - UpdatedBy string `json:"updatedBy"` - - // Updated time - UpdatedTime uint64 `json:"updatedTime"` - - // User managed - UserManaged bool `json:"userManaged"` - - // VINS connected - VINSConnected uint64 `json:"vinsConnected"` -} - -// List computes -type ListComputes []ItemCompute - -// Main information about port forward -type ItemPFW struct { - // Public port end - PublicPortEnd uint64 `json:"Public Port End"` - - // Public port start - PublicPortStart uint64 `json:"Public Port Start"` - - // Virtual machine ID - VMID uint64 `json:"VM ID"` - - // Virtual machine IP - VMIP string `json:"VM IP"` - - // Virtual machine name - VMName string `json:"VM Name"` - - // Virtual machine port - VMPort uint64 `json:"VM Port"` - - // VINS ID - VINSID uint64 `json:"ViNS ID"` - - // VINS name - VINSName string `json:"ViNS Name"` -} - -// List PFWs -type ListPFW []ItemPFW - -// Main information about VINS -type ItemVINS struct { - // Account ID - AccountID uint64 `json:"accountId"` - - // Account name - AccountName string `json:"accountName"` - - // Computes - Computes uint64 `json:"computes"` - - // Created by - CreatedBy string `json:"createdBy"` - - // Created time - CreatedTime uint64 `json:"createdTime"` - - // Deleted by - DeletedBy string `json:"deletedBy"` - - // Deleted time - DeletedTime uint64 `json:"deletedTime"` - - // External IP - ExternalIP string `json:"externalIP"` - - // ID - ID uint64 `json:"id"` - - // Name - Name string `json:"name"` - - // Network - Network string `json:"network"` - - // PriVNFDev ID - PriVNFDevID uint64 `json:"priVnfDevId"` - - // Resource group ID - RGID uint64 `json:"rgId"` - - // Resource group name - RGName string `json:"rgName"` - - // Status - Status string `json:"status"` - - // Updated by - UpdatedBy string `json:"updatedBy"` - - // Updated time - UpdatedTime uint64 `json:"updatedTime"` -} - -// List VINSes -type ListVINS []ItemVINS - -// Server settings -type ServerSettings struct { - // Inter - Inter uint64 `json:"inter"` - - // GUID - GUID string `json:"guid"` - - // Down inter - DownInter uint64 `json:"downinter"` - - // Rise - Rise uint64 `json:"rise"` - - // Fall - Fall uint64 `json:"fall"` - - // Slow start - SlowStart uint64 `json:"slowstart"` - - // Max connections - MaxConn uint64 `json:"maxconn"` - - // Max queue - MaxQueue uint64 `json:"maxqueue"` - - // Weight - Weight uint64 `json:"weight"` -} - -// Main information about server -type ItemServer struct { - // Address - Address string `json:"address"` - - // Check - Check string `json:"check"` - - // GUID - GUID string `json:"guid"` - - // Name - Name string `json:"name"` - - // Port - Port uint64 `json:"port"` - - // Server settings - ServerSettings ServerSettings `json:"serverSettings"` -} - -// List of servers -type ListServers []ItemServer - -// Main information about backend -type ItemBackend struct { - // Algorithm - Algorithm string `json:"algorithm"` - - // GUID - GUID string `json:"guid"` - - // Name - Name string `json:"name"` - - // Server settings - ServerDefaultSettings ServerSettings `json:"serverDefaultSettings"` - - // List of servers - Servers ListServers `json:"servers"` -} - -// List of backends -type ListBackends []ItemBackend - -// Main information of binding -type ItemBinding struct { - // Address - Address string `json:"address"` - - // GUID - GUID string `json:"guid"` - - // Name - Name string `json:"name"` - - // Port - Port uint64 `json:"port"` -} - -// List of bindings -type ListBindings []ItemBinding - -// Main information about frontend -type ItemFrontend struct { - // Backend - Backend string `json:"backend"` - - // List of bindings - Bindings ListBindings `json:"bindings"` - - // GUID - GUID string `json:"guid"` - - // Name - Name string `json:"name"` -} - -// List of frontends -type ListFrontends []ItemFrontend - -// Main information about node -type RecordNode struct { - // Backend IP - BackendIP string `json:"backendIp"` - - // Compute ID - ComputeID uint64 `json:"computeId"` - - // Frontend IP - FrontendIP string `json:"frontendIp"` - - // GUID - GUID string `json:"guid"` - - // MGMT IP - MGMTIP string `json:"mgmtIp"` - - // Network ID - NetworkID uint64 `json:"networkId"` -} - -// Main information about load balancer -type ItemLB struct { - // HAMode - HAMode bool `json:"HAmode"` - - // List ACL - ACL ListACL `json:"acl"` - - // List backends - Backends ListBackends `json:"backends"` - - // Created by - CreatedBy string `json:"createdBy"` - - // Created time - CreatedTime uint64 `json:"createdTime"` - - // Deleted by - DeletedBy string `json:"deletedBy"` - - // Deleted time - DeletedTime uint64 `json:"deletedTime"` - - // Description - Description string `json:"desc"` - - // DPAPI user - DPAPIUser string `json:"dpApiUser"` - - // External network ID - ExtNetID uint64 `json:"extnetId"` - - // List of frontends - Frontends ListFrontends `json:"frontends"` - - // Grid ID - GID uint64 `json:"gid"` - - // GUID - GUID uint64 `json:"guid"` - - // ID - ID uint64 `json:"id"` - - // Image ID - ImageID uint64 `json:"imageId"` - - // Milestones - Milestones uint64 `json:"milestones"` - - // Name - Name string `json:"name"` - - // Primary node - PrimaryNode RecordNode `json:"primaryNode"` - - // Resource group ID - RGID uint64 `json:"rgId"` - - // Resource group name - RGName string `json:"rgName"` - - // Secondary node - SecondaryNode RecordNode `json:"secondaryNode"` - - // Status - Status string `json:"status"` - - // Tech status - TechStatus string `json:"techStatus"` - - // Updated by - UpdatedBy string `json:"updatedBy"` - - // Updated time - UpdatedTime uint64 `json:"updatedTime"` - - // VINS ID - VINSID uint64 `json:"vinsId"` -} - -// List load balancers -type ListLB []ItemLB - -// Main information about affinity group -type ItemAffinityGroupCompute struct { - // Compute ID - ComputeID uint64 `json:"computeId"` - - // Other node - OtherNode []uint64 `json:"otherNode"` - - // Other node indirect - OtherNodeIndirect []uint64 `json:"otherNodeIndirect"` - - // Other node indirect soft - OtherNodeIndirectSoft []uint64 `json:"otherNodeIndirectSoft"` - - // Other node soft - OtherNodeSoft []uint64 `json:"otherNodeSoft"` - - // Same node - SameNode []uint64 `json:"sameNode"` - - // Same node soft - SameNodeSoft []uint64 `json:"sameNodeSoft"` -} - -// List of affinity groups -type ListAffinityGroupCompute []ItemAffinityGroupCompute +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Kasim Baybikov, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package rg + +type ResourceLimits struct { + CUC float64 `json:"CU_C"` + CUD float64 `json:"CU_D"` + CUI float64 `json:"CU_I"` + CUM float64 `json:"CU_M"` + CUNP float64 `json:"CU_NP"` + GpuUnits float64 `json:"gpu_units"` +} + +type QuotaRecord struct { // this is how quota is reported by /api/.../rg/get + Cpu int `json:"CU_C"` // CPU count in pcs + Ram int `json:"CU_M"` // RAM volume in MB + Disk int `json:"CU_D"` // Disk capacity in GB + ExtIPs int `json:"CU_I"` // Ext IPs count + ExtTraffic int `json:"CU_NP"` // Ext network traffic + GpuUnits int `json:"gpu_units"` // GPU count +} + +// Main information about audit +type ItemAudit struct { + // Call + Call string `json:"call"` + + // Response time + ResponseTime float64 `json:"responsetime"` + + // Status code + StatusCode uint64 `json:"statuscode"` + + // Timestamp + Timestamp float64 `json:"timestamp"` + + // User + User string `json:"user"` +} + +// List of audits +type ListAudits []ItemAudit + +// Resources used +type Resource struct { + // Number of cores + CPU int64 `json:"cpu"` + + // Disk size + DiskSize float64 `json:"disksize"` + + // Max disk size + DiskSizeMax uint64 `json:"disksizemax"` + + // Number of External IPs + ExtIPs int64 `json:"extips"` + + // External traffic + ExtTraffic int64 `json:"exttraffic"` + + // Number of grafic cores + GPU int64 `json:"gpu"` + + // Number of RAM + RAM int64 `json:"ram"` + + // SEPs + SEPs map[string]map[string]DiskUsage `json:"seps"` +} + +// Disk usage +type DiskUsage struct { + // Disk size + DiskSize float64 `json:"disksize"` + + // Disk size max + DiskSizeMax float64 `json:"disksizemax"` +} + +// Information about resources +type Resources struct { + // Current information about resources + Current Resource `json:"Current"` + + // Reserved information about resources + Reserved Resource `json:"Reserved"` +} + +// Detailed information about resource group +type RecordResourceGroup struct { + // Resources + Resources Resources `json:"Resources"` + + // Account ID + AccountID uint64 `json:"accountId"` + + // Account name + AccountName string `json:"accountName"` + + // Access Control List + ACL ListACL `json:"acl"` + + // Created by + CreatedBy string `json:"createdBy"` + + // Created time + CreatedTime uint64 `json:"createdTime"` + + // DefNetID + DefNetID int64 `json:"def_net_id"` + + // DefNetType + DefNetType string `json:"def_net_type"` + + // Deleted by + DeletedBy string `json:"deletedBy"` + + // Deleted time + DeletedTime uint64 `json:"deletedTime"` + + // Description + Description string `json:"desc"` + + // Dirty + Dirty bool `json:"dirty"` + + // Grid ID + GID uint64 `json:"gid"` + + // GUID + GUID uint64 `json:"guid"` + + // ID + ID uint64 `json:"id"` + + // Lock status + LockStatus string `json:"lockStatus"` + + // Milestones + Milestones uint64 `json:"milestones"` + + // Name + Name string `json:"name"` + + // Resource limits + ResourceLimits ResourceLimits `json:"resourceLimits"` + + // Secret + Secret string `json:"secret"` + + // Status + Status string `json:"status"` + + // Updated by + UpdatedBy string `json:"updatedBy"` + + // Updated time + UpdatedTime uint64 `json:"updatedTime"` + + // List of VINS IDs + VINS []uint64 `json:"vins"` + + // List of compute IDs + Computes []uint64 `json:"vms"` + + // List of resource types + ResTypes []string `json:"resourceTypes"` + + // UniqPools + UniqPools []string `json:"uniqPools"` +} + +// Main information about Access Control List +type ItemACL struct { + // Explicit + Explicit bool `json:"explicit"` + + // GUID + GUID string `json:"guid"` + + // Right + Right string `json:"right"` + + // Status + Status string `json:"status"` + + // Type + Type string `json:"type"` + + // User group ID + UserGroupID string `json:"userGroupId"` +} + +// List ACL +type ListACL []ItemACL + +type ItemResourceGroup struct { + // + AccountACL ItemACL `json:"accountAcl"` + + // Account ID + AccountID uint64 `json:"accountId"` + + // Account name + AccountName string `json:"accountName"` + + // Access Control List + ACL ListACL `json:"acl"` + + // Created by + CreatedBy string `json:"createdBy"` + + // Created time + CreatedTime uint64 `json:"createdTime"` + + // DefNetID + DefNetID int64 `json:"def_net_id"` + + // DefNetType + DefNetType string `json:"def_net_type"` + + // Deleted by + DeletedBy string `json:"deletedBy"` + + // Deleted time + DeletedTime uint64 `json:"deletedTime"` + + // Description + Description string `json:"desc"` + + // Dirty + Dirty bool `json:"dirty"` + + // Grid ID + GID uint64 `json:"gid"` + + // GUID + GUID uint64 `json:"guid"` + + // ID + ID uint64 `json:"id"` + + // Lock status + LockStatus string `json:"lockStatus"` + + // Milestones + Milestones uint64 `json:"milestones"` + + // Name + Name string `json:"name"` + + // Resource limits + ResourceLimits ResourceLimits `json:"resourceLimits"` + + // Secret + Secret string `json:"secret"` + + // Status + Status string `json:"status"` + + // Updated by + UpdatedBy string `json:"updatedBy"` + + // Updated time + UpdatedTime uint64 `json:"updatedTime"` + + // List of VINS IDs + VINS []uint64 `json:"vins"` + + // List of compute IDs + Computes []uint64 `json:"vms"` + + // List of resource types + ResTypes []string `json:"resourceTypes"` + + // UniqPools + UniqPools []string `json:"uniqPools"` +} + +// List of resource groups +type ListResourceGroups []ItemResourceGroup + +// Main information about affinity rule +type ItemRule struct { + // GUID + GUID string `json:"guid"` + + // Key + Key string `json:"key"` + + // Mode + Mode string `json:"mode"` + + // Policy + Policy string `json:"policy"` + + // Topology + Topology string `json:"topology"` + + // Value + Value string `json:"value"` +} + +// List rules +type ListRules []ItemRule + +// Main information about compute +type ItemCompute struct { + // Account ID + AccountID uint64 `json:"accountId"` + + // Account name + AccountName string `json:"accountName"` + + // Affinity label + AffinityLabel string `json:"affinityLabel"` + + // List affinity rules + AffinityRules ListRules `json:"affinityRules"` + + // Affinity weight + AffinityWeight uint64 `json:"affinityWeight"` + + // Anti affinity rules + AntiAffinityRules ListRules `json:"antiAffinityRules"` + + // Number of CPU + CPUs uint64 `json:"cpus"` + + // Created by + CreatedBy string `json:"createdBy"` + + // Created time + CreatedTime uint64 `json:"createdTime"` + + // Deleted by + DeletedBy string `json:"deletedBy"` + + // Deleted time + DeletedTime uint64 `json:"deletedTime"` + + // ID + ID uint64 `json:"id"` + + // Name + Name string `json:"name"` + + // Number of RAM + RAM uint64 `json:"ram"` + + // Registered + Registered bool `json:"registered"` + + // Resource group ID + RGID uint64 `json:"rgId"` + + // Resource group name + RGName string `json:"rgName"` + + // Status + Status string `json:"status"` + + // Tech status + TechStatus string `json:"techStatus"` + + // Total disks size + TotalDisksSize uint64 `json:"totalDisksSize"` + + // Updated by + UpdatedBy string `json:"updatedBy"` + + // Updated time + UpdatedTime uint64 `json:"updatedTime"` + + // User managed + UserManaged bool `json:"userManaged"` + + // VINS connected + VINSConnected uint64 `json:"vinsConnected"` +} + +// List computes +type ListComputes []ItemCompute + +// Main information about port forward +type ItemPFW struct { + // Public port end + PublicPortEnd uint64 `json:"Public Port End"` + + // Public port start + PublicPortStart uint64 `json:"Public Port Start"` + + // Virtual machine ID + VMID uint64 `json:"VM ID"` + + // Virtual machine IP + VMIP string `json:"VM IP"` + + // Virtual machine name + VMName string `json:"VM Name"` + + // Virtual machine port + VMPort uint64 `json:"VM Port"` + + // VINS ID + VINSID uint64 `json:"ViNS ID"` + + // VINS name + VINSName string `json:"ViNS Name"` +} + +// List PFWs +type ListPFW []ItemPFW + +// Main information about VINS +type ItemVINS struct { + // Account ID + AccountID uint64 `json:"accountId"` + + // Account name + AccountName string `json:"accountName"` + + // Computes + Computes uint64 `json:"computes"` + + // Created by + CreatedBy string `json:"createdBy"` + + // Created time + CreatedTime uint64 `json:"createdTime"` + + // Deleted by + DeletedBy string `json:"deletedBy"` + + // Deleted time + DeletedTime uint64 `json:"deletedTime"` + + // External IP + ExternalIP string `json:"externalIP"` + + // ID + ID uint64 `json:"id"` + + // Name + Name string `json:"name"` + + // Network + Network string `json:"network"` + + // PriVNFDev ID + PriVNFDevID uint64 `json:"priVnfDevId"` + + // Resource group ID + RGID uint64 `json:"rgId"` + + // Resource group name + RGName string `json:"rgName"` + + // Status + Status string `json:"status"` + + // Updated by + UpdatedBy string `json:"updatedBy"` + + // Updated time + UpdatedTime uint64 `json:"updatedTime"` +} + +// List VINSes +type ListVINS []ItemVINS + +// Server settings +type ServerSettings struct { + // Inter + Inter uint64 `json:"inter"` + + // GUID + GUID string `json:"guid"` + + // Down inter + DownInter uint64 `json:"downinter"` + + // Rise + Rise uint64 `json:"rise"` + + // Fall + Fall uint64 `json:"fall"` + + // Slow start + SlowStart uint64 `json:"slowstart"` + + // Max connections + MaxConn uint64 `json:"maxconn"` + + // Max queue + MaxQueue uint64 `json:"maxqueue"` + + // Weight + Weight uint64 `json:"weight"` +} + +// Main information about server +type ItemServer struct { + // Address + Address string `json:"address"` + + // Check + Check string `json:"check"` + + // GUID + GUID string `json:"guid"` + + // Name + Name string `json:"name"` + + // Port + Port uint64 `json:"port"` + + // Server settings + ServerSettings ServerSettings `json:"serverSettings"` +} + +// List of servers +type ListServers []ItemServer + +// Main information about backend +type ItemBackend struct { + // Algorithm + Algorithm string `json:"algorithm"` + + // GUID + GUID string `json:"guid"` + + // Name + Name string `json:"name"` + + // Server settings + ServerDefaultSettings ServerSettings `json:"serverDefaultSettings"` + + // List of servers + Servers ListServers `json:"servers"` +} + +// List of backends +type ListBackends []ItemBackend + +// Main information of binding +type ItemBinding struct { + // Address + Address string `json:"address"` + + // GUID + GUID string `json:"guid"` + + // Name + Name string `json:"name"` + + // Port + Port uint64 `json:"port"` +} + +// List of bindings +type ListBindings []ItemBinding + +// Main information about frontend +type ItemFrontend struct { + // Backend + Backend string `json:"backend"` + + // List of bindings + Bindings ListBindings `json:"bindings"` + + // GUID + GUID string `json:"guid"` + + // Name + Name string `json:"name"` +} + +// List of frontends +type ListFrontends []ItemFrontend + +// Main information about node +type RecordNode struct { + // Backend IP + BackendIP string `json:"backendIp"` + + // Compute ID + ComputeID uint64 `json:"computeId"` + + // Frontend IP + FrontendIP string `json:"frontendIp"` + + // GUID + GUID string `json:"guid"` + + // MGMT IP + MGMTIP string `json:"mgmtIp"` + + // Network ID + NetworkID uint64 `json:"networkId"` +} + +// Main information about load balancer +type ItemLB struct { + // HAMode + HAMode bool `json:"HAmode"` + + // List ACL + ACL ListACL `json:"acl"` + + // List backends + Backends ListBackends `json:"backends"` + + // Created by + CreatedBy string `json:"createdBy"` + + // Created time + CreatedTime uint64 `json:"createdTime"` + + // Deleted by + DeletedBy string `json:"deletedBy"` + + // Deleted time + DeletedTime uint64 `json:"deletedTime"` + + // Description + Description string `json:"desc"` + + // DPAPI user + DPAPIUser string `json:"dpApiUser"` + + // External network ID + ExtNetID uint64 `json:"extnetId"` + + // List of frontends + Frontends ListFrontends `json:"frontends"` + + // Grid ID + GID uint64 `json:"gid"` + + // GUID + GUID uint64 `json:"guid"` + + // ID + ID uint64 `json:"id"` + + // Image ID + ImageID uint64 `json:"imageId"` + + // Milestones + Milestones uint64 `json:"milestones"` + + // Name + Name string `json:"name"` + + // Primary node + PrimaryNode RecordNode `json:"primaryNode"` + + // Resource group ID + RGID uint64 `json:"rgId"` + + // Resource group name + RGName string `json:"rgName"` + + // Secondary node + SecondaryNode RecordNode `json:"secondaryNode"` + + // Status + Status string `json:"status"` + + // Tech status + TechStatus string `json:"techStatus"` + + // Updated by + UpdatedBy string `json:"updatedBy"` + + // Updated time + UpdatedTime uint64 `json:"updatedTime"` + + // VINS ID + VINSID uint64 `json:"vinsId"` +} + +// List load balancers +type ListLB []ItemLB + +// Main information about affinity group +type ItemAffinityGroupCompute struct { + // Compute ID + ComputeID uint64 `json:"computeId"` + + // Other node + OtherNode []uint64 `json:"otherNode"` + + // Other node indirect + OtherNodeIndirect []uint64 `json:"otherNodeIndirect"` + + // Other node indirect soft + OtherNodeIndirectSoft []uint64 `json:"otherNodeIndirectSoft"` + + // Other node soft + OtherNodeSoft []uint64 `json:"otherNodeSoft"` + + // Same node + SameNode []uint64 `json:"sameNode"` + + // Same node soft + SameNodeSoft []uint64 `json:"sameNodeSoft"` +} + +// List of affinity groups +type ListAffinityGroupCompute []ItemAffinityGroupCompute diff --git a/internal/service/cloudapi/rg/resource_rg.go b/internal/service/cloudapi/rg/resource_rg.go index 4f78481..d379e9a 100644 --- a/internal/service/cloudapi/rg/resource_rg.go +++ b/internal/service/cloudapi/rg/resource_rg.go @@ -160,10 +160,6 @@ func resourceResgroupCreate(ctx context.Context, d *schema.ResourceData, m inter req.ExtIP = extIp.(string) } - if regComputes, ok := d.GetOk("register_computes"); ok { - req.RegisterComputes = regComputes.(bool) - } - apiResp, err := c.CloudAPI().RG().Create(ctx, req) if err != nil { return diag.FromErr(err) @@ -404,7 +400,7 @@ func resourceResgroupUpdate(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("resourceResgroupUpdate: RG ID %s: changing ext_net_id for existing RG is not allowed", d.Id())) } - if d.HasChanges("name", "quota", "description", "register_computes", "uniq_pools") { + if d.HasChanges("name", "quota", "description", "uniq_pools") { if err := utilityUpdateRG(ctx, d, m, rgData.ID); err != nil { return diag.FromErr(err) } @@ -696,12 +692,6 @@ func ResourceRgSchemaMake() map[string]*schema.Schema { Default: false, Description: "Set to True if you want force delete non-empty RG", }, - "register_computes": { - Type: schema.TypeBool, - Optional: true, - Default: false, - Description: "Register computes in registration system", - }, "restore": { Type: schema.TypeBool, Optional: true, diff --git a/internal/service/cloudapi/rg/utility_rg.go b/internal/service/cloudapi/rg/utility_rg.go index ed31dd6..d47dde1 100644 --- a/internal/service/cloudapi/rg/utility_rg.go +++ b/internal/service/cloudapi/rg/utility_rg.go @@ -129,11 +129,6 @@ func utilityUpdateRG(ctx context.Context, d *schema.ResourceData, m interface{}, req.Description = d.Get("description").(string) } - if d.HasChange("register_computes") { - log.Debugf("resourceResgroupUpdate: register_computes specified - looking for deltas from the old settings.") - req.RegisterComputes = d.Get("register_computes").(bool) - } - if d.HasChange("uniq_pools") { uniqPools := d.Get("uniq_pools").([]interface{}) if len(uniqPools) == 0 { diff --git a/internal/service/cloudapi/sep/available_sep_and_pools_list.go b/internal/service/cloudapi/sep/available_sep_and_pools_list.go new file mode 100644 index 0000000..8203816 --- /dev/null +++ b/internal/service/cloudapi/sep/available_sep_and_pools_list.go @@ -0,0 +1,143 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Sergey Kisil, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "context" + + "github.com/google/uuid" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" +) + +func DataSourceAvailableSEPAndPoolsListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + sepList, err := utilityAvailableSEPAndPoolsListCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + id := uuid.New() + d.SetId(id.String()) + + flattenAvailableSEPList(d, sepList) + + return nil +} + +func dataSourceAvailableSEPListSchemaMake() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "account_id": { + Type: schema.TypeInt, + Required: true, + Description: "Account ID", + }, + "rg_id": { + Type: schema.TypeInt, + Optional: true, + Description: "Resource group ID", + }, + "entry_count": { + Type: schema.TypeInt, + Computed: true, + Description: "Number of available SEP entries", + }, + "items": { + Type: schema.TypeList, + Computed: true, + Description: "List of available SEPs", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "sep_id": { + Type: schema.TypeInt, + Computed: true, + Description: "SEP ID", + }, + "sep_name": { + Type: schema.TypeString, + Computed: true, + Description: "SEP name", + }, + "sep_type": { + Type: schema.TypeString, + Computed: true, + Description: "SEP type", + }, + "pools": { + Type: schema.TypeList, + Computed: true, + Description: "List of pools in the SEP", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Computed: true, + Description: "Pool name", + }, + "types": { + Type: schema.TypeList, + Computed: true, + Description: "List of pool types", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "system": { + Type: schema.TypeBool, + Computed: true, + Description: "Is system pool", + }, + }, + }, + }, + }, + }, + }, + } +} + +func DataSourceAvailableSEPAndPoolsList() *schema.Resource { + return &schema.Resource{ + SchemaVersion: 1, + + ReadContext: DataSourceAvailableSEPAndPoolsListRead, + + Timeouts: &schema.ResourceTimeout{ + Read: &constants.Timeout30s, + Default: &constants.Timeout60s, + }, + + Schema: dataSourceAvailableSEPListSchemaMake(), + } +} diff --git a/internal/service/cloudapi/sep/flattens.go b/internal/service/cloudapi/sep/flattens.go new file mode 100644 index 0000000..60ff19f --- /dev/null +++ b/internal/service/cloudapi/sep/flattens.go @@ -0,0 +1,74 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Sergey Kisil, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/sep" +) + +func flattenAvailableSEPList(d *schema.ResourceData, sepList *sep.ListAvailableSEP) { + d.Set("items", flattenSEPDataList(sepList.Data)) + d.Set("entry_count", sepList.EntryCount) +} + +func flattenSEPDataList(sepDataList []sep.SEPData) []map[string]interface{} { + sh := make([]map[string]interface{}, 0) + + for _, sepData := range sepDataList { + temp := map[string]interface{}{ + "sep_id": sepData.SEPID, + "sep_name": sepData.SEPName, + "sep_type": sepData.SEPType, + "pools": flattenPoolList(sepData.Pools), + } + sh = append(sh, temp) + } + + return sh +} + +func flattenPoolList(pools []sep.Pool) []map[string]interface{} { + sh := make([]map[string]interface{}, 0) + + for _, pool := range pools { + temp := map[string]interface{}{ + "name": pool.Name, + "types": pool.Types, + "system": pool.System, + } + sh = append(sh, temp) + } + + return sh +} diff --git a/internal/service/cloudapi/sep/utility_available_sep_and_pools_list.go b/internal/service/cloudapi/sep/utility_available_sep_and_pools_list.go new file mode 100644 index 0000000..b732644 --- /dev/null +++ b/internal/service/cloudapi/sep/utility_available_sep_and_pools_list.go @@ -0,0 +1,63 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Sergey Kisil, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "context" + + log "github.com/sirupsen/logrus" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/sep" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func utilityAvailableSEPAndPoolsListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*sep.ListAvailableSEP, error) { + c := m.(*controller.ControllerCfg) + req := sep.ListAvailableSEPAndPoolsRequest{} + + if AccountID, ok := d.GetOk("account_id"); ok { + req.AccountID = uint64(AccountID.(int)) + } + if RGID, ok := d.GetOk("rg_id"); ok { + req.RGID = RGID.(uint64) + } + + log.Debugf("utilityAvailableSEPAndPoolsListCheckPresence: load sep and pools list") + sepList, err := c.CloudAPI().SEP().ListAvailableSEPAndPools(ctx, req) + if err != nil { + return nil, err + } + + return sepList, nil +} diff --git a/internal/service/cloudapi/vins/data_source_vins_list.go b/internal/service/cloudapi/vins/data_source_vins_list.go index 5fb8f33..4f51c7e 100644 --- a/internal/service/cloudapi/vins/data_source_vins_list.go +++ b/internal/service/cloudapi/vins/data_source_vins_list.go @@ -99,6 +99,11 @@ func dataSourceVinsListSchemaMake() map[string]*schema.Schema { Optional: true, Description: "sort by one of supported fields, format +|-(field)", }, + "status": { + Type: schema.TypeString, + Optional: true, + Description: "sort by status", + }, "page": { Type: schema.TypeInt, Optional: true, diff --git a/internal/service/cloudapi/vins/utility_vins_list.go b/internal/service/cloudapi/vins/utility_vins_list.go index 8b682b9..ab91974 100644 --- a/internal/service/cloudapi/vins/utility_vins_list.go +++ b/internal/service/cloudapi/vins/utility_vins_list.go @@ -78,6 +78,10 @@ func utilityVinsListCheckPresence(ctx context.Context, d *schema.ResourceData, m req.SortBy = sortBy.(string) } + if status, ok := d.GetOk("status"); ok { + req.Status = status.(string) + } + if page, ok := d.GetOk("page"); ok { req.Page = uint64(page.(int)) } diff --git a/internal/service/cloudbroker/account/flattens.go b/internal/service/cloudbroker/account/flattens.go index bd5eb99..4b6c1ef 100644 --- a/internal/service/cloudbroker/account/flattens.go +++ b/internal/service/cloudbroker/account/flattens.go @@ -18,6 +18,7 @@ func flattenResourceAccount(d *schema.ResourceData, acc *account.RecordAccount) d.Set("created_by", acc.CreatedBy) d.Set("created_time", acc.CreatedTime) d.Set("deactivation_time", acc.DeactivationTime) + d.Set("desc", acc.Description) d.Set("deleted_by", acc.DeletedBy) d.Set("deleted_time", acc.DeletedTime) d.Set("displayname", acc.DisplayName) @@ -46,6 +47,7 @@ func flattenDataAccount(d *schema.ResourceData, acc *account.RecordAccount) { d.Set("created_by", acc.CreatedBy) d.Set("created_time", acc.CreatedTime) d.Set("deactivation_time", acc.DeactivationTime) + d.Set("desc", acc.Description) d.Set("deleted_by", acc.DeletedBy) d.Set("deleted_time", acc.DeletedTime) d.Set("displayname", acc.DisplayName) @@ -71,6 +73,7 @@ func flattenAccountRGList(argl *account.ListRG) []map[string]interface{} { "resources": flattenAccRGResources(arg.Resources), "created_by": arg.CreatedBy, "created_time": arg.CreatedTime, + "desc": arg.Description, "deleted_by": arg.DeletedBy, "deleted_time": arg.DeletedTime, "rg_id": arg.ID, @@ -204,6 +207,7 @@ func flattenListDeleted(al *account.ListAccounts) []map[string]interface{} { "created_by": acc.CreatedBy, "created_time": acc.CreatedTime, "deactivation_time": acc.DeactivationTime, + "desc": acc.Description, "deleted_by": acc.DeletedBy, "deleted_time": acc.DeletedTime, "displayname": acc.DisplayName, @@ -240,6 +244,7 @@ func flattenAccountList(al *account.ListAccounts) []map[string]interface{} { "created_by": acc.CreatedBy, "created_time": acc.CreatedTime, "deactivation_time": acc.DeactivationTime, + "desc": acc.Description, "deleted_by": acc.DeletedBy, "deleted_time": acc.DeletedTime, "displayname": acc.DisplayName, diff --git a/internal/service/cloudbroker/account/resource_account.go b/internal/service/cloudbroker/account/resource_account.go index 50ee97a..1c662fa 100644 --- a/internal/service/cloudbroker/account/resource_account.go +++ b/internal/service/cloudbroker/account/resource_account.go @@ -55,6 +55,10 @@ func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, m interf Username: d.Get("username").(string), } + if desc, ok := d.GetOk("desc"); ok { + req.Description = desc.(string) + } + if emailaddress, ok := d.GetOk("emailaddress"); ok { req.EmailAddress = emailaddress.(string) } @@ -196,6 +200,7 @@ func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, m interf if !d.Get("enable").(bool) { _, err := c.CloudBroker().Account().Disable(ctx, account.DisableRequest{ AccountID: accountId, + Reason: d.Get("reason").(string), }) if err != nil { @@ -239,6 +244,8 @@ func resourceAccountDelete(ctx context.Context, d *schema.ResourceData, m interf req := account.DeleteRequest{ AccountID: accountData.ID, Permanently: d.Get("permanently").(bool), + Name: d.Get("account_name").(string), + Reason: d.Get("reason").(string), } _, err = c.CloudBroker().Account().Delete(ctx, req) @@ -277,6 +284,7 @@ func resourceAccountUpdate(ctx context.Context, d *schema.ResourceData, m interf if d.Get("restore").(bool) { _, err := c.CloudBroker().Account().Restore(ctx, account.RestoreRequest{ AccountID: accountId, + Reason: d.Get("reason").(string), }) if err != nil { @@ -308,7 +316,7 @@ func resourceAccountUpdate(ctx context.Context, d *schema.ResourceData, m interf } } - if d.HasChanges("account_name", "send_access_emails", "uniq_pools", "resource_limits") { + if d.HasChanges("account_name", "send_access_emails", "uniq_pools", "resource_limits", "desc") { if err := utilityAccountUpdate(ctx, d, m); err != nil { return diag.FromErr(err) } diff --git a/internal/service/cloudbroker/account/schema.go b/internal/service/cloudbroker/account/schema.go index b2e9cbf..3e6b762 100644 --- a/internal/service/cloudbroker/account/schema.go +++ b/internal/service/cloudbroker/account/schema.go @@ -17,6 +17,11 @@ func resourceAccountSchemaMake() map[string]*schema.Schema { Required: true, Description: "username of owner the account", }, + "desc": { + Type: schema.TypeString, + Optional: true, + Description: "description", + }, "emailaddress": { Type: schema.TypeString, Optional: true, @@ -72,6 +77,11 @@ func resourceAccountSchemaMake() map[string]*schema.Schema { }, Description: "Share images with account", }, + "reason": { + Type: schema.TypeBool, + Optional: true, + Description: "reason for restore or deactivation", + }, "restore": { Type: schema.TypeBool, Optional: true, @@ -138,7 +148,7 @@ func resourceAccountSchemaMake() map[string]*schema.Schema { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{"hugepages", "numa", "cpupin", "vfnic"}, true), + ValidateFunc: validation.StringInSlice([]string{"hugepages", "numa", "cpupin", "vfnic", "dpdk", "changemac"}, true), }, }, "account_id": { @@ -576,6 +586,10 @@ func dataSourceAccountListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeFloat, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, @@ -1214,6 +1228,10 @@ func dataSourceAccountListSchemaMake() map[string]*schema.Schema { Type: schema.TypeFloat, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, @@ -1710,6 +1728,10 @@ func dataSourceAccountRGListSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, @@ -1973,6 +1995,10 @@ func dataSourceAccountSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, "deleted_by": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudbroker/account/utility_account.go b/internal/service/cloudbroker/account/utility_account.go index e108b25..4010684 100644 --- a/internal/service/cloudbroker/account/utility_account.go +++ b/internal/service/cloudbroker/account/utility_account.go @@ -218,6 +218,10 @@ func utilityAccountUpdate(ctx context.Context, d *schema.ResourceData, m interfa req.Name = d.Get("account_name").(string) } + if d.HasChange("desc") { + req.Description = d.Get("desc").(string) + } + if d.HasChange("send_access_emails") { req.SendAccessEmails = d.Get("send_access_emails").(bool) } diff --git a/internal/service/cloudbroker/audit/flattens.go b/internal/service/cloudbroker/audit/flattens.go index 493de04..f014cca 100644 --- a/internal/service/cloudbroker/audit/flattens.go +++ b/internal/service/cloudbroker/audit/flattens.go @@ -52,6 +52,7 @@ func flattenAudit(d *schema.ResourceData, au *audit.RecordAudit) { d.Set("tags", au.Tags) d.Set("timestamp", au.Timestamp) d.Set("timestamp_end", au.TimestampEnd) + d.Set("ttl", au.TTL) d.Set("user", au.User) } @@ -59,12 +60,19 @@ func flattenAuditList(au *audit.ListAudits) []map[string]interface{} { res := make([]map[string]interface{}, 0, len(au.Data)) for _, item := range au.Data { temp := map[string]interface{}{ - "call": item.Call, - "guid": item.GUID, - "responsetime": item.ResponseTime, - "status_code": item.StatusCode, - "timestamp": item.Timestamp, - "user": item.User, + "args": item.Args, + "call": item.Call, + "guid": item.GUID, + "kwargs": item.Kwargs, + "remote_addr": item.RemoteAddr, + "result": item.Result, + "responsetime": item.ResponseTime, + "status_code": item.StatusCode, + "tags": item.Tags, + "timestamp": item.Timestamp, + "timestamp_end": item.TimestampEnd, + "ttl": item.TTL, + "user": item.User, } res = append(res, temp) } @@ -76,14 +84,15 @@ func flattenLinkedJobs(ljl *audit.ListLinkedJobs) []map[string]interface{} { linkedJobs := *ljl for _, item := range linkedJobs { temp := map[string]interface{}{ - "cmd": item.CMD, - "guid": item.GUID, - "nid": item.NID, - "state": item.State, - "time_create": item.TimeCreate, - "time_start": item.TimeStart, - "time_stop": item.TimeStop, - "timeout": item.Timeout, + "cmd": item.CMD, + "guid": item.GUID, + "nid": item.NID, + "physical_node": item.PhysicalNode, + "state": item.State, + "time_create": item.TimeCreate, + "time_start": item.TimeStart, + "time_stop": item.TimeStop, + "timeout": item.Timeout, } res = append(res, temp) } diff --git a/internal/service/cloudbroker/audit/schema.go b/internal/service/cloudbroker/audit/schema.go index 229b4fb..f2f672f 100644 --- a/internal/service/cloudbroker/audit/schema.go +++ b/internal/service/cloudbroker/audit/schema.go @@ -54,6 +54,10 @@ func dataSourceAuditSchemaMake() map[string]*schema.Schema { Type: schema.TypeFloat, Computed: true, }, + "ttl": { + Type: schema.TypeString, + Computed: true, + }, "user": { Type: schema.TypeString, Computed: true, @@ -103,12 +107,16 @@ func dataSourceAuditListSchemaMake() map[string]*schema.Schema { Optional: true, Description: "page number", }, + "request_id": { + Type: schema.TypeString, + Optional: true, + Description: "request id", + }, "size": { Type: schema.TypeInt, Optional: true, Description: "page size", }, - "items": { Type: schema.TypeList, Computed: true, @@ -138,6 +146,34 @@ func dataSourceAuditListSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "ttl": { + Type: schema.TypeString, + Computed: true, + }, + "args": { + Type: schema.TypeString, + Computed: true, + }, + "kwargs": { + Type: schema.TypeString, + Computed: true, + }, + "result": { + Type: schema.TypeString, + Computed: true, + }, + "timestamp_end": { + Type: schema.TypeFloat, + Computed: true, + }, + "remote_addr": { + Type: schema.TypeString, + Computed: true, + }, + "tags": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, @@ -177,6 +213,10 @@ func dataSourceLinkedJobsSchemaMake() map[string]*schema.Schema { Computed: true, Description: "nid", }, + "physical_node": { + Type: schema.TypeBool, + Computed: true, + }, "state": { Type: schema.TypeString, Computed: true, diff --git a/internal/service/cloudbroker/audit/utility_audit_list.go b/internal/service/cloudbroker/audit/utility_audit_list.go index 6170b37..83e4d52 100644 --- a/internal/service/cloudbroker/audit/utility_audit_list.go +++ b/internal/service/cloudbroker/audit/utility_audit_list.go @@ -70,6 +70,9 @@ func utilityAuditListCheckPresence(ctx context.Context, d *schema.ResourceData, if Page, ok := d.GetOk("page"); ok { req.Page = uint64(Page.(int)) } + if RequestID, ok := d.GetOk("request_id"); ok { + req.RequestID = RequestID.(string) + } if Size, ok := d.GetOk("size"); ok { req.Size = uint64(Size.(int)) } diff --git a/internal/service/cloudbroker/disks/flattens.go b/internal/service/cloudbroker/disks/flattens.go index 8b62231..9540bbc 100644 --- a/internal/service/cloudbroker/disks/flattens.go +++ b/internal/service/cloudbroker/disks/flattens.go @@ -15,7 +15,9 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("acl", string(diskAcl)) d.Set("boot_partition", disk.BootPartition) d.Set("computes", flattenDiskComputes(disk.Computes)) + d.Set("created_by", disk.CreatedBy) d.Set("created_time", disk.CreatedTime) + d.Set("deleted_by", disk.DeletedBy) d.Set("deleted_time", disk.DeletedTime) d.Set("desc", disk.Description) d.Set("destruction_time", disk.DestructionTime) @@ -29,6 +31,8 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("iotune", flattenIOTune(disk.IOTune)) d.Set("iqn", disk.IQN) d.Set("login", disk.Login) + d.Set("machine_id", disk.MachineID) + d.Set("machine_name", disk.MachineName) d.Set("milestones", disk.Milestones) d.Set("disk_name", disk.Name) d.Set("order", disk.Order) @@ -49,6 +53,7 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("sep_id", disk.SEPID) d.Set("sep_type", disk.SEPType) d.Set("shareable", disk.Shareable) + d.Set("size_available", disk.SizeAvailable) d.Set("size_max", disk.SizeMax) d.Set("size_used", disk.SizeUsed) d.Set("snapshots", flattendDiskSnapshotList(disk.Snapshots)) @@ -56,6 +61,8 @@ func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { d.Set("tech_status", disk.TechStatus) d.Set("type", disk.Type) d.Set("vmid", disk.VMID) + d.Set("updated_by", disk.UpdatedBy) + d.Set("updated_time", disk.UpdatedTime) } func flattenDiskReplica(d *schema.ResourceData, disk *disks.RecordDisk, statusReplication string) { @@ -176,7 +183,9 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "acl": string(diskAcl), "boot_partition": disk.BootPartition, "computes": flattenDiskComputes(disk.Computes), + "created_by": disk.CreatedBy, "created_time": disk.CreatedTime, + "deleted_by": disk.DeletedBy, "deleted_time": disk.DeletedTime, "desc": disk.Description, "destruction_time": disk.DestructionTime, @@ -210,6 +219,7 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "role": disk.Role, "sep_id": disk.SEPID, "sep_type": disk.SEPType, + "size_available": disk.SizeAvailable, "size_max": disk.SizeMax, "size_used": disk.SizeUsed, "snapshots": flattendDiskSnapshotList(disk.Snapshots), @@ -217,6 +227,8 @@ func flattenDiskList(dl *disks.ListDisks) []map[string]interface{} { "tech_status": disk.TechStatus, "type": disk.Type, "vmid": disk.VMID, + "updated_by": disk.UpdatedBy, + "updated_time": disk.UpdatedTime, } res = append(res, temp) } diff --git a/internal/service/cloudbroker/disks/resource_check_input_values.go b/internal/service/cloudbroker/disks/resource_check_input_values.go index fe57df4..c392f6c 100644 --- a/internal/service/cloudbroker/disks/resource_check_input_values.go +++ b/internal/service/cloudbroker/disks/resource_check_input_values.go @@ -2,6 +2,7 @@ package disks import ( "context" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/dc" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/ic" @@ -14,15 +15,10 @@ func checkParamsExistence(ctx context.Context, d *schema.ResourceData, c *contro var errs []error accountID := uint64(d.Get("account_id").(int)) - gid := uint64(d.Get("gid").(int)) if err := ic.ExistAccount(ctx, accountID, c); err != nil { errs = append(errs, err) } - if err := ic.ExistGID(ctx, gid, c); err != nil { - errs = append(errs, err) - } - return dc.ErrorsToDiagnostics(errs) } diff --git a/internal/service/cloudbroker/disks/resource_disk.go b/internal/service/cloudbroker/disks/resource_disk.go index 3d6ac94..6eac205 100644 --- a/internal/service/cloudbroker/disks/resource_disk.go +++ b/internal/service/cloudbroker/disks/resource_disk.go @@ -58,20 +58,14 @@ func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, m interface req := disks.CreateRequest{ AccountID: uint64(d.Get("account_id").(int)), - GID: uint64(d.Get("gid").(int)), Name: d.Get("disk_name").(string), Size: uint64(d.Get("size_max").(int)), - Type: d.Get("type").(string), } if desc, ok := d.GetOk("desc"); ok { req.Description = desc.(string) } - if ssdSize, ok := d.GetOk("ssd_size"); ok { - req.SSDSize = uint64(ssdSize.(int)) - } - if iops, ok := d.GetOk("iops"); ok { req.IOPS = uint64(iops.(int)) } diff --git a/internal/service/cloudbroker/disks/schema.go b/internal/service/cloudbroker/disks/schema.go index c73eaf8..2d89cfd 100644 --- a/internal/service/cloudbroker/disks/schema.go +++ b/internal/service/cloudbroker/disks/schema.go @@ -2,7 +2,6 @@ package disks import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) func dataSourceDiskSchemaMake() map[string]*schema.Schema { @@ -43,10 +42,18 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { }, }, }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, "created_time": { Type: schema.TypeInt, Computed: true, }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, "deleted_time": { Type: schema.TypeInt, Computed: true, @@ -154,6 +161,14 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "machine_id": { + Type: schema.TypeInt, + Computed: true, + }, + "machine_name": { + Type: schema.TypeString, + Computed: true, + }, "milestones": { Type: schema.TypeInt, Computed: true, @@ -187,7 +202,7 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -266,6 +281,10 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -326,6 +345,14 @@ func dataSourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, } return rets @@ -435,10 +462,18 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { }, }, }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, "created_time": { Type: schema.TypeInt, Computed: true, }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, "deleted_time": { Type: schema.TypeInt, Computed: true, @@ -591,7 +626,7 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -670,6 +705,10 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -730,6 +769,14 @@ func dataSourceDiskListSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, }, }, }, @@ -830,10 +877,18 @@ func dataSourceDiskListDeletedSchemaMake() map[string]*schema.Schema { }, }, }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, "created_time": { Type: schema.TypeInt, Computed: true, }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, "deleted_time": { Type: schema.TypeInt, Computed: true, @@ -986,7 +1041,7 @@ func dataSourceDiskListDeletedSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -1065,6 +1120,10 @@ func dataSourceDiskListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -1125,6 +1184,14 @@ func dataSourceDiskListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, }, }, }, @@ -1505,7 +1572,7 @@ func dataSourceDiskListUnattachedSchemaMake() map[string]*schema.Schema { Description: "Pool for disk location", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -1796,22 +1863,18 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Required: true, //ForceNew: true, }, - "gid": { - Type: schema.TypeInt, - Required: true, - //ForceNew: true, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, }, "disk_name": { Type: schema.TypeString, Required: true, }, - "type": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringInSlice([]string{"D", "B", "T"}, false), - Description: "The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp'", - }, - "desc": { Type: schema.TypeString, Optional: true, @@ -1821,9 +1884,10 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Required: true, }, - "ssd_size": { - Type: schema.TypeInt, - Optional: true, + "type": { + Type: schema.TypeString, + Computed: true, + Description: "The type of disk in terms of its role in compute: 'B=Boot, D=Data, T=Temp'", }, "iops": { Type: schema.TypeInt, @@ -1922,6 +1986,10 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, "disk_id": { Type: schema.TypeInt, Computed: true, @@ -2020,11 +2088,18 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "machine_id": { + Type: schema.TypeInt, + Computed: true, + }, + "machine_name": { + Type: schema.TypeString, + Computed: true, + }, "milestones": { Type: schema.TypeInt, Computed: true, }, - "order": { Type: schema.TypeInt, Computed: true, @@ -2046,7 +2121,7 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -2169,6 +2244,14 @@ func resourceDiskSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, } return rets @@ -2367,7 +2450,7 @@ func dataSourceDiskReplicationSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -2741,7 +2824,7 @@ func resourceDiskReplicationSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, diff --git a/internal/service/cloudbroker/extnet/flattens.go b/internal/service/cloudbroker/extnet/flattens.go index bfa7309..1683454 100644 --- a/internal/service/cloudbroker/extnet/flattens.go +++ b/internal/service/cloudbroker/extnet/flattens.go @@ -85,6 +85,7 @@ func flattenRecordExtnet(d *schema.ResourceData, recNet *extnet.RecordExtNet) { d.Set("milestones", recNet.Milestones) d.Set("name", recNet.Name) d.Set("network_id", recNet.NetworkID) + d.Set("ntp", recNet.NTP) d.Set("ovs_bridge", recNet.OVSBridge) d.Set("pre_reservations_num", recNet.PreReservationsNum) d.Set("pri_vnfdev_id", recNet.PriVNFDevID) diff --git a/internal/service/cloudbroker/extnet/schema.go b/internal/service/cloudbroker/extnet/schema.go index 7e91bf8..0b2d97f 100644 --- a/internal/service/cloudbroker/extnet/schema.go +++ b/internal/service/cloudbroker/extnet/schema.go @@ -516,6 +516,13 @@ func dataSourceExtnetSchemaMake() map[string]*schema.Schema { }, }, }, + "ntp": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, } } diff --git a/internal/service/cloudbroker/image/resource_cdrom_image.go b/internal/service/cloudbroker/image/resource_cdrom_image.go index f265e77..817a17d 100644 --- a/internal/service/cloudbroker/image/resource_cdrom_image.go +++ b/internal/service/cloudbroker/image/resource_cdrom_image.go @@ -41,7 +41,6 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/image" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" - "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/ic" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/status" ) @@ -53,12 +52,6 @@ func resourceCDROMImageCreate(ctx context.Context, d *schema.ResourceData, m int URL: d.Get("url").(string), } - if err := ic.ExistGID(ctx, uint64(d.Get("gid").(int)), c); err != nil { - return diag.FromErr(err) - } - - req.GID = uint64(d.Get("gid").(int)) - drivers := []string{} for _, driver := range d.Get("drivers").([]interface{}) { drivers = append(drivers, driver.(string)) diff --git a/internal/service/cloudbroker/image/resource_image.go b/internal/service/cloudbroker/image/resource_image.go index aca6c55..cfe7c0c 100644 --- a/internal/service/cloudbroker/image/resource_image.go +++ b/internal/service/cloudbroker/image/resource_image.go @@ -354,41 +354,47 @@ func resourceImageChangeAccess(ctx context.Context, d *schema.ResourceData, m in oldSet, newSet := d.GetChange("accounts") revokeAccess := (oldSet.(*schema.Set).Difference(newSet.(*schema.Set))).List() - if len(revokeAccess) > 0 { - revokeAccounts := make([]uint64, 0, len(revokeAccess)) + revokeAccounts := make([]int64, 0, len(revokeAccess)) + if newSet.(*schema.Set).Len() == 0 { + revokeAccounts = append(revokeAccounts, -1) + } else if len(revokeAccess) > 0 { for _, accountId := range revokeAccess { - revokeAccounts = append(revokeAccounts, uint64(accountId.(int))) + revokeAccounts = append(revokeAccounts, accountId.(int64)) } - req := image.RevokeAccessRequest{ - ImageID: imageId, - AccountIDs: revokeAccounts, - } + } - _, err := c.CloudBroker().Image().RevokeAccess(ctx, req) - if err != nil { - return err - } + req := image.RevokeAccessRequest{ + ImageID: imageId, + AccountIDs: revokeAccounts, + } + + _, err := c.CloudBroker().Image().RevokeAccess(ctx, req) + if err != nil { + return err } addedAccess := (newSet.(*schema.Set).Difference(oldSet.(*schema.Set))).List() - if len(addedAccess) > 0 { - grantAccounts := make([]uint64, 0, len(addedAccess)) + grantAccounts := make([]int64, 0, len(addedAccess)) + if newSet.(*schema.Set).Len() == 0 { + grantAccounts = append(grantAccounts, -1) + } else if len(addedAccess) > 0 { for _, accountId := range addedAccess { - grantAccounts = append(grantAccounts, uint64(accountId.(int))) - } - - req := image.GrantAccessRequest{ - ImageID: imageId, - AccountIDs: grantAccounts, + grantAccounts = append(grantAccounts, accountId.(int64)) } - _, err := c.CloudBroker().Image().GrantAccess(ctx, req) - if err != nil { - return err - } } + // req := image.GrantAccessRequest{ + // ImageID: imageId, + // AccountIDs: grantAccounts, + // } + + // _, err := c.CloudBroker().Image().GrantAccess(ctx, req) + // if err != nil { + // return err + // } + return nil } @@ -399,9 +405,9 @@ func resourceImageSetAccess(ctx context.Context, d *schema.ResourceData, m inter imageId, _ := strconv.ParseUint(d.Id(), 10, 64) accounts := d.Get("accounts").([]interface{}) - accountIDs := make([]uint64, 0, len(accounts)) + accountIDs := make([]int64, 0, len(accounts)) for _, accountId := range accounts { - accountIDs = append(accountIDs, uint64(accountId.(int))) + accountIDs = append(accountIDs, accountId.(int64)) } req := image.GrantAccessRequest{ diff --git a/internal/service/cloudbroker/image/resource_image_from_blank_compute.go b/internal/service/cloudbroker/image/resource_image_from_blank_compute.go index 61afb9a..5915151 100644 --- a/internal/service/cloudbroker/image/resource_image_from_blank_compute.go +++ b/internal/service/cloudbroker/image/resource_image_from_blank_compute.go @@ -74,9 +74,6 @@ func resourceImageFromBlankComputeCreate(ctx context.Context, d *schema.Resource if accountId, ok := d.GetOk("account_id"); ok { req.AccountID = uint64(accountId.(int)) } - if sepId, ok := d.GetOk("sep_id"); ok { - req.SepID = uint64(sepId.(int)) - } if poolName, ok := d.GetOk("pool_name"); ok { req.PoolName = poolName.(string) } diff --git a/internal/service/cloudbroker/image/resource_image_from_platform_disk.go b/internal/service/cloudbroker/image/resource_image_from_platform_disk.go index 6bbb038..7db1b4f 100644 --- a/internal/service/cloudbroker/image/resource_image_from_platform_disk.go +++ b/internal/service/cloudbroker/image/resource_image_from_platform_disk.go @@ -76,9 +76,6 @@ func resourceImageFromPlatformDiskCreate(ctx context.Context, d *schema.Resource if accountId, ok := d.GetOk("account_id"); ok { req.AccountID = uint64(accountId.(int)) } - if sepId, ok := d.GetOk("sep_id"); ok { - req.SepID = uint64(sepId.(int)) - } if poolName, ok := d.GetOk("pool_name"); ok { req.PoolName = poolName.(string) } diff --git a/internal/service/cloudbroker/image/schema.go b/internal/service/cloudbroker/image/schema.go index 3dc731f..56f226b 100644 --- a/internal/service/cloudbroker/image/schema.go +++ b/internal/service/cloudbroker/image/schema.go @@ -574,7 +574,7 @@ func dataSourceImageListSchemaMake() map[string]*schema.Schema { Description: "pool for image create", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -832,7 +832,7 @@ func dataSourceImageSchemaMake() map[string]*schema.Schema { Description: "pool for image create", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -930,11 +930,6 @@ func resourceCDROMImageSchemaMake() map[string]*schema.Schema { Required: true, Description: "URL where to download ISO from", }, - "gid": { - Type: schema.TypeInt, - Required: true, - Description: "grid (platform) ID where this template should be create in", - }, "drivers": { Type: schema.TypeList, Optional: true, @@ -1068,6 +1063,10 @@ func resourceCDROMImageSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Boot type of image bios or uefi", }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, "guid": { Type: schema.TypeInt, Computed: true, @@ -1128,7 +1127,7 @@ func resourceCDROMImageSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -1200,11 +1199,6 @@ func resourceImageSchemaMake() map[string]*schema.Schema { Optional: true, Description: "path to image file", }, - "gid": { - Type: schema.TypeInt, - Required: true, - Description: "grid (platform) ID where this template should be create in", - }, "boot_type": { Type: schema.TypeString, Required: true, @@ -1365,6 +1359,10 @@ func resourceImageSchemaMake() map[string]*schema.Schema { }, }, }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, "guid": { Type: schema.TypeInt, Computed: true, @@ -1424,7 +1422,7 @@ func resourceImageSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -1669,7 +1667,7 @@ func resourceVirtualImageSchemaMake() map[string]*schema.Schema { Description: "pool for image create", }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -1763,8 +1761,8 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { "image_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "other"}, true), - Description: "Image type linux, windows or other", + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, true), + Description: "Image type linux, windows or unknown", }, "username": { @@ -1787,7 +1785,6 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { }, "sep_id": { Type: schema.TypeInt, - Optional: true, Computed: true, Description: "storage endpoint provider ID", }, @@ -1966,7 +1963,7 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -2037,8 +2034,8 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { "image_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "other"}, true), - Description: "Image type linux, windows or other", + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, true), + Description: "Image type linux, windows or unknown", }, "architecture": { Type: schema.TypeString, @@ -2067,7 +2064,6 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { }, "sep_id": { Type: schema.TypeInt, - Optional: true, Computed: true, Description: "storage endpoint provider ID", }, @@ -2245,7 +2241,7 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, diff --git a/internal/service/cloudbroker/image/utility_resource_create.go b/internal/service/cloudbroker/image/utility_resource_create.go index 9c229e1..2c8cbbe 100644 --- a/internal/service/cloudbroker/image/utility_resource_create.go +++ b/internal/service/cloudbroker/image/utility_resource_create.go @@ -36,8 +36,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/image" - "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" - "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudbroker/ic" ) func SyncCreateRequest(ctx context.Context, d *schema.ResourceData, m interface{}, url string) (image.SyncCreateRequest, error) { @@ -100,14 +98,6 @@ func CreateRequest(ctx context.Context, d *schema.ResourceData, m interface{}, u ImageType: d.Get("image_type").(string), } - c := m.(*controller.ControllerCfg) - - if err := ic.ExistGID(ctx, uint64(d.Get("gid").(int)), c); err != nil { - return req, err - } - - req.GID = uint64(d.Get("gid").(int)) - if _, ok := d.GetOk("drivers"); ok { drivers := []string{} for _, driver := range d.Get("drivers").([]interface{}) { diff --git a/internal/service/cloudbroker/k8s/flattens.go b/internal/service/cloudbroker/k8s/flattens.go index 64fc176..17e10bc 100644 --- a/internal/service/cloudbroker/k8s/flattens.go +++ b/internal/service/cloudbroker/k8s/flattens.go @@ -50,6 +50,7 @@ func flattenResourceK8sCP(d *schema.ResourceData, k8s k8s.RecordK8S, masters []c d.Set("bservice_id", k8s.BServiceID) d.Set("created_by", k8s.CreatedBy) d.Set("created_time", k8s.CreatedTime) + d.Set("desc", k8s.Description) d.Set("deleted_by", k8s.DeletedBy) d.Set("deleted_time", k8s.DeletedTime) d.Set("k8s_ci_name", k8s.K8CIName) @@ -91,6 +92,7 @@ func flattenK8sData(d *schema.ResourceData, cluster *k8s.RecordK8S, masters []co d.Set("created_time", cluster.CreatedTime) d.Set("deleted_by", cluster.DeletedBy) d.Set("deleted_time", cluster.DeletedTime) + d.Set("desc", cluster.Description) d.Set("k8s_id", cluster.ID) d.Set("k8s_ci_name", cluster.K8CIName) d.Set("k8s_groups", flattenK8sGroups(cluster.K8SGroups, masters, workers)) diff --git a/internal/service/cloudbroker/kvmvm/data_source_compute_list_deleted.go b/internal/service/cloudbroker/kvmvm/data_source_compute_list_deleted.go index 19ba391..12c9942 100644 --- a/internal/service/cloudbroker/kvmvm/data_source_compute_list_deleted.go +++ b/internal/service/cloudbroker/kvmvm/data_source_compute_list_deleted.go @@ -51,12 +51,12 @@ func dataSourceComputeListDeletedRead(ctx context.Context, d *schema.ResourceDat result := computeList if d.Get("ignore_k8s").(bool) { // matches automatically generated names like "s234-g2134-c1" etc - result = matchComputes(computeList) + result = matchDeletedComputes(computeList) } id := uuid.New() d.SetId(id.String()) - d.Set("items", flattenComputeList(result)) + d.Set("items", flattenDeletedComputeList(result)) d.Set("entry_count", computeList.EntryCount) return nil diff --git a/internal/service/cloudbroker/kvmvm/flattens.go b/internal/service/cloudbroker/kvmvm/flattens.go index 36b0f41..519a7cd 100644 --- a/internal/service/cloudbroker/kvmvm/flattens.go +++ b/internal/service/cloudbroker/kvmvm/flattens.go @@ -75,7 +75,7 @@ func flattenCompute(d *schema.ResourceData, computeRec *compute.RecordCompute, p d.Set("need_reboot", computeRec.NeedReboot) d.Set("numa_node_id", computeRec.NumaNodeId) d.Set("os_users", flattenOSUsers(computeRec.OSUsers)) - d.Set("pinned", computeRec.Pinned) + d.Set("pinned", computeRec.PinnedToStack) d.Set("preferred_cpu", computeRec.PreferredCPU) d.Set("reference_id", computeRec.ReferenceID) d.Set("registered", computeRec.Registered) @@ -95,10 +95,14 @@ func flattenCompute(d *schema.ResourceData, computeRec *compute.RecordCompute, p d.Set("user_data", string(userData)) d.Set("user_managed", computeRec.UserManaged) d.Set("vnc_password", computeRec.VNCPassword) - d.Set("vgpus", computeRec.VGPUs) + d.Set("vgpus", flattenVGPUs(computeRec.VGPUs)) d.Set("virtual_image_id", computeRec.VirtualImageID) d.Set("virtual_image_name", computeRec.VirtualImageName) d.Set("pci_devices", flattenPCI(*pciList)) + d.Set("loader_type", computeRec.LoaderType) + d.Set("boot_type", computeRec.BootType) + d.Set("hot_resize", computeRec.HotResize) + d.Set("network_interface_naming", computeRec.NetworkInterfaceNaming) return nil } @@ -249,6 +253,7 @@ func flattenComputeDisks(disksList compute.ListDisks, disksBlocks, extraDisks [] "size_used": disk.SizeUsed, "size_max": disk.SizeMax, "permanently": pernamentlyValue, + "present_to": disk.PresentTo, } res = append(res, temp) indexDataDisks++ @@ -289,73 +294,164 @@ func flattenComputeList(computes *compute.ListComputes) []map[string]interface{} devices, _ := json.Marshal(computeItem.Devices) userData, _ := json.Marshal(computeItem.Userdata) temp := map[string]interface{}{ - "acl": flattenListACLInterface(computeItem.ACL), - "account_id": computeItem.AccountID, - "account_name": computeItem.AccountName, - "affinity_label": computeItem.AffinityLabel, - "affinity_rules": flattenListRules(computeItem.AffinityRules), - "affinity_weight": computeItem.AffinityWeight, - "anti_affinity_rules": flattenListRules(computeItem.AntiAffinityRules), - "arch": computeItem.Arch, - "auto_start_w_node": computeItem.AutoStart, - "chipset": computeItem.Chipset, - "cd_image_id": computeItem.CdImageId, - "boot_order": computeItem.BootOrder, - "bootdisk_size": computeItem.BootDiskSize, - "clone_reference": computeItem.CloneReference, - "clones": computeItem.Clones, - "computeci_id": computeItem.ComputeCIID, - "cpus": computeItem.CPUs, - "created_by": computeItem.CreatedBy, - "created_time": computeItem.CreatedTime, - "custom_fields": string(customFields), - "deleted_by": computeItem.DeletedBy, - "deleted_time": computeItem.DeletedTime, - "desc": computeItem.Description, - "devices": string(devices), - "disks": flattenDisks(computeItem.Disks), - "driver": computeItem.Driver, - "gid": computeItem.GID, - "guid": computeItem.GUID, - "hp_backed": computeItem.HPBacked, - "compute_id": computeItem.ID, - "cpu_pin": computeItem.CPUPin, - "image_id": computeItem.ImageID, - "interfaces": flattenInterfaces(computeItem.Interfaces), - "lock_status": computeItem.LockStatus, - "manager_id": computeItem.ManagerID, - "manager_type": computeItem.ManagerType, - "migrationjob": computeItem.MigrationJob, - "milestones": computeItem.Milestones, - "name": computeItem.Name, - "need_reboot": computeItem.NeedReboot, - "numa_affinity": computeItem.NumaAffinity, - "numa_node_id": computeItem.NumaNodeId, - "os_users": flattenOSUsers(computeItem.OSUsers), - "pinned": computeItem.Pinned, - "preferred_cpu": computeItem.PreferredCPU, - "ram": computeItem.RAM, - "reference_id": computeItem.ReferenceID, - "registered": computeItem.Registered, - "res_name": computeItem.ResName, - "reserved_node_cpus": computeItem.ReservedNodeCpus, - "rg_id": computeItem.RGID, - "rg_name": computeItem.RGName, - "snap_sets": flattenSnapSets(computeItem.SnapSets), - "stack_id": computeItem.StackID, - "stateless_sep_id": computeItem.StatelessSEPID, - "stateless_sep_type": computeItem.StatelessSEPType, - "status": computeItem.Status, - "tags": flattenTags(computeItem.Tags), - "tech_status": computeItem.TechStatus, - "total_disk_size": computeItem.TotalDiskSize, - "updated_by": computeItem.UpdatedBy, - "updated_time": computeItem.UpdatedTime, - "user_data": string(userData), - "user_managed": computeItem.UserManaged, - "vgpus": computeItem.VGPUs, - "vins_connected": computeItem.VINSConnected, - "virtual_image_id": computeItem.VirtualImageID, + "acl": flattenListACLInterface(computeItem.ACL), + "account_id": computeItem.AccountID, + "account_name": computeItem.AccountName, + "affinity_label": computeItem.AffinityLabel, + "affinity_rules": flattenListRules(computeItem.AffinityRules), + "affinity_weight": computeItem.AffinityWeight, + "anti_affinity_rules": flattenListRules(computeItem.AntiAffinityRules), + "arch": computeItem.Arch, + "auto_start_w_node": computeItem.AutoStart, + "chipset": computeItem.Chipset, + "cd_image_id": computeItem.CdImageId, + "boot_order": computeItem.BootOrder, + "bootdisk_size": computeItem.BootDiskSize, + "clone_reference": computeItem.CloneReference, + "clones": computeItem.Clones, + "computeci_id": computeItem.ComputeCIID, + "cpus": computeItem.CPUs, + "created_by": computeItem.CreatedBy, + "created_time": computeItem.CreatedTime, + "custom_fields": string(customFields), + "deleted_by": computeItem.DeletedBy, + "deleted_time": computeItem.DeletedTime, + "desc": computeItem.Description, + "devices": string(devices), + "disks": flattenDisks(computeItem.Disks), + "driver": computeItem.Driver, + "gid": computeItem.GID, + "guid": computeItem.GUID, + "hp_backed": computeItem.HPBacked, + "compute_id": computeItem.ID, + "cpu_pin": computeItem.CPUPin, + "image_id": computeItem.ImageID, + "interfaces": flattenInterfaces(computeItem.Interfaces), + "lock_status": computeItem.LockStatus, + "manager_id": computeItem.ManagerID, + "manager_type": computeItem.ManagerType, + "migrationjob": computeItem.MigrationJob, + "milestones": computeItem.Milestones, + "nid": computeItem.NID, + "name": computeItem.Name, + "need_reboot": computeItem.NeedReboot, + "numa_affinity": computeItem.NumaAffinity, + "numa_node_id": computeItem.NumaNodeId, + "os_users": flattenOSUsers(computeItem.OSUsers), + "pinned": computeItem.PinnedToStack, + "preferred_cpu": computeItem.PreferredCPU, + "ram": computeItem.RAM, + "reference_id": computeItem.ReferenceID, + "registered": computeItem.Registered, + "res_name": computeItem.ResName, + "reserved_node_cpus": computeItem.ReservedNodeCpus, + "rg_id": computeItem.RGID, + "rg_name": computeItem.RGName, + "snap_sets": flattenSnapSets(computeItem.SnapSets), + "stack_id": computeItem.StackID, + "stack_name": computeItem.StackName, + "stateless_sep_id": computeItem.StatelessSEPID, + "stateless_sep_type": computeItem.StatelessSEPType, + "status": computeItem.Status, + "tags": flattenTags(computeItem.Tags), + "tech_status": computeItem.TechStatus, + "total_disk_size": computeItem.TotalDiskSize, + "updated_by": computeItem.UpdatedBy, + "updated_time": computeItem.UpdatedTime, + "user_data": string(userData), + "user_managed": computeItem.UserManaged, + "vgpus": computeItem.VGPUs, + "vins_connected": computeItem.VINSConnected, + "virtual_image_id": computeItem.VirtualImageID, + "loader_type": computeItem.LoaderType, + "boot_type": computeItem.BootType, + "hot_resize": computeItem.HotResize, + "network_interface_naming": computeItem.NetworkInterfaceNaming, + } + res = append(res, temp) + } + return res +} + +func flattenDeletedComputeList(computes *compute.ListDeletedComputes) []map[string]interface{} { + res := make([]map[string]interface{}, 0, len(computes.Data)) + for _, computeItem := range computes.Data { + customFields, _ := json.Marshal(computeItem.CustomFields) + devices, _ := json.Marshal(computeItem.Devices) + userData, _ := json.Marshal(computeItem.Userdata) + temp := map[string]interface{}{ + "acl": flattenListACLInterface(computeItem.ACL), + "account_id": computeItem.AccountID, + "account_name": computeItem.AccountName, + "affinity_label": computeItem.AffinityLabel, + "affinity_rules": flattenListRules(computeItem.AffinityRules), + "affinity_weight": computeItem.AffinityWeight, + "anti_affinity_rules": flattenListRules(computeItem.AntiAffinityRules), + "arch": computeItem.Arch, + "auto_start_w_node": computeItem.AutoStart, + "chipset": computeItem.Chipset, + "cd_image_id": computeItem.CdImageId, + "boot_order": computeItem.BootOrder, + "bootdisk_size": computeItem.BootDiskSize, + "clone_reference": computeItem.CloneReference, + "clones": computeItem.Clones, + "computeci_id": computeItem.ComputeCIID, + "cpus": computeItem.CPUs, + "created_by": computeItem.CreatedBy, + "created_time": computeItem.CreatedTime, + "custom_fields": string(customFields), + "deleted_by": computeItem.DeletedBy, + "deleted_time": computeItem.DeletedTime, + "desc": computeItem.Description, + "devices": string(devices), + "disks": flattenDisks(computeItem.Disks), + "driver": computeItem.Driver, + "gid": computeItem.GID, + "guid": computeItem.GUID, + "hp_backed": computeItem.HPBacked, + "compute_id": computeItem.ID, + "cpu_pin": computeItem.CPUPin, + "image_id": computeItem.ImageID, + "interfaces": flattenInterfaces(computeItem.Interfaces), + "lock_status": computeItem.LockStatus, + "manager_id": computeItem.ManagerID, + "manager_type": computeItem.ManagerType, + "migrationjob": computeItem.MigrationJob, + "milestones": computeItem.Milestones, + "name": computeItem.Name, + "need_reboot": computeItem.NeedReboot, + "numa_affinity": computeItem.NumaAffinity, + "numa_node_id": computeItem.NumaNodeId, + "os_users": flattenOSUsers(computeItem.OSUsers), + "pinned": computeItem.PinnedToStack, + "preferred_cpu": computeItem.PreferredCPU, + "ram": computeItem.RAM, + "reference_id": computeItem.ReferenceID, + "registered": computeItem.Registered, + "res_name": computeItem.ResName, + "reserved_node_cpus": computeItem.ReservedNodeCpus, + "rg_id": computeItem.RGID, + "rg_name": computeItem.RGName, + "snap_sets": flattenSnapSets(computeItem.SnapSets), + "stack_id": computeItem.StackID, + "stack_name": computeItem.StackName, + "stateless_sep_id": computeItem.StatelessSEPID, + "stateless_sep_type": computeItem.StatelessSEPType, + "status": computeItem.Status, + "tags": flattenTags(computeItem.Tags), + "tech_status": computeItem.TechStatus, + "total_disk_size": computeItem.TotalDiskSize, + "updated_by": computeItem.UpdatedBy, + "updated_time": computeItem.UpdatedTime, + "user_data": string(userData), + "user_managed": computeItem.UserManaged, + "vgpus": computeItem.VGPUs, + "vins_connected": computeItem.VINSConnected, + "virtual_image_id": computeItem.VirtualImageID, + "loader_type": computeItem.LoaderType, + "boot_type": computeItem.BootType, + "hot_resize": computeItem.HotResize, + "network_interface_naming": computeItem.NetworkInterfaceNaming, } res = append(res, temp) } @@ -431,9 +527,9 @@ func flattenDisks(disks []compute.InfoDisk) []map[string]interface{} { res := make([]map[string]interface{}, 0) for _, disk := range disks { temp := map[string]interface{}{ - "bus_number": disk.BusNumber, - "disk_id": disk.ID, - "pci_slot": disk.PCISlot, + // "bus_number": disk.BusNumber, + "disk_id": disk.ID, + // "pci_slot": disk.PCISlot, } res = append(res, temp) } @@ -657,7 +753,7 @@ func flattenDataCompute(d *schema.ResourceData, compFacts *compute.RecordCompute d.Set("numa_affinity", compFacts.NumaAffinity) d.Set("numa_node_id", compFacts.NumaNodeId) d.Set("os_users", flattenOSUsers(compFacts.OSUsers)) - d.Set("pinned", compFacts.Pinned) + d.Set("pinned", compFacts.PinnedToStack) d.Set("preferred_cpu", compFacts.PreferredCPU) d.Set("ram", compFacts.RAM) d.Set("reference_id", compFacts.ReferenceID) @@ -679,10 +775,14 @@ func flattenDataCompute(d *schema.ResourceData, compFacts *compute.RecordCompute d.Set("user_data", string(userData)) d.Set("user_managed", compFacts.UserManaged) d.Set("vnc_password", compFacts.VNCPassword) - d.Set("vgpus", compFacts.VGPUs) + d.Set("vgpus", flattenVGPUs(compFacts.VGPUs)) d.Set("virtual_image_id", compFacts.VirtualImageID) d.Set("virtual_image_name", compFacts.VirtualImageName) d.Set("pci_devices", flattenPCI(*pciList)) + d.Set("loader_type", compFacts.LoaderType) + d.Set("boot_type", compFacts.BootType) + d.Set("hot_resize", compFacts.HotResize) + d.Set("network_interface_naming", compFacts.NetworkInterfaceNaming) //extra fields setting bootDisk := findBootDisk(compFacts.Disks) if bootDisk != nil { @@ -771,6 +871,7 @@ func flattenDisk(diskList compute.ListDisks) []map[string]interface{} { "role": disk.Role, "sep_id": disk.SEPID, "shareable": disk.Shareable, + "size_available": disk.SizeAvailable, "size_max": disk.SizeMax, "size_used": disk.SizeUsed, "snapshots": flattendDiskSnapshotList(disk.Snapshots), @@ -837,3 +938,34 @@ func flattendDiskSnapshotList(sl compute.ListDetailedSnapshots) []interface{} { return res } + +func flattenVGPUs(vgpus []compute.VGPUItem) []map[string]interface{} { + res := make([]map[string]interface{}, len(vgpus)) + + for i, vgpu := range vgpus { + + res[i] = map[string]interface{}{ + "id": int(vgpu.ID), + "gid": int(vgpu.GID), + "type": vgpu.Type, + "mode": vgpu.Mode, + "status": vgpu.Status, + "profile_id": vgpu.ProfileID, + "ram": int(vgpu.RAM), + "last_update_time": int(vgpu.LastUpdateTime), + "created_time": int(vgpu.CreatedTime), + "deleted_time": int(vgpu.DeletedTime), + "vmid": int(vgpu.VMID), + "pgpuid": int(vgpu.PGPuid), + "reference_id": vgpu.ReferenceID, + "account_id": int(vgpu.AccountID), + "rg_id": int(vgpu.RgID), + "last_claimed_by": int(vgpu.LastClaimedBy), + "pci_slot": int(vgpu.PCISlot), + "bus_number": int(vgpu.BusNumber), + "guid": int(vgpu.GUID), + } + } + + return res +} diff --git a/internal/service/cloudbroker/kvmvm/old_schemas.go b/internal/service/cloudbroker/kvmvm/old_schemas.go new file mode 100644 index 0000000..183a95c --- /dev/null +++ b/internal/service/cloudbroker/kvmvm/old_schemas.go @@ -0,0 +1,1060 @@ +package kvmvm + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/statefuncs" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/validators" +) + +func resourceComputeResourceV1() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + Description: "Name of this compute. Compute names are case sensitive and must be unique in the resource group.", + }, + "rg_id": { + Type: schema.TypeInt, + Required: true, + ValidateFunc: validation.IntAtLeast(1), + Description: "ID of the resource group where this compute should be deployed.", + }, + "driver": { + Type: schema.TypeString, + Required: true, + StateFunc: statefuncs.StateFuncToUpper, + ValidateFunc: validation.StringInSlice([]string{"SVA_KVM_X86", "KVM_X86"}, false), // observe case while validating + Description: "Hardware architecture of this compute instance.", + }, + "cpu": { + Type: schema.TypeInt, + Required: true, + ValidateFunc: validation.IntBetween(1, constants.MAX_CPUS_PER_COMPUTE), + Description: "Number of CPUs to allocate to this compute instance.", + }, + "ram": { + Type: schema.TypeInt, + Required: true, + ValidateFunc: validation.All( + validation.IntAtLeast(constants.MIN_RAM_PER_COMPUTE), + validators.DivisibleBy(constants.RAM_DIVISIBILITY), + ), + Description: "Amount of RAM in MB to allocate to this compute instance.", + }, + "image_id": { + Type: schema.TypeInt, + Optional: true, + Description: "ID of the OS image to base this compute instance on.", + }, + "chipset": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"Q35", "i440fx"}, false), // observe case while validating + Description: "Type of the emulated system.", + }, + "without_boot_disk": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "If True, the imageId, bootDisk, sepId, pool parameters are ignored and the compute is created without a boot disk in the stopped state.", + }, + "boot_disk_size": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image.", + }, + "sep_id": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "ID of SEP to create bootDisk on. Uses image's sepId if not set.", + }, + "pool": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Pool to use if sepId is set, can be also empty if needed to be chosen by system.", + }, + "cloud_init": { + Type: schema.TypeString, + Optional: true, + Description: "Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases.", + }, + "description": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Optional text description of this compute instance.", + }, + "started": { + Type: schema.TypeBool, + Optional: true, + Default: true, + Description: "Is compute started.", + }, + "alt_boot_id": { + Type: schema.TypeInt, + Optional: true, + Default: 0, + Description: "ID of CD-ROM live image to boot", + }, + "stack_id": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "ID of stack to start compute", + }, + "is": { + Type: schema.TypeString, + Optional: true, + Description: "system name", + }, + "ipa_type": { + Type: schema.TypeString, + Optional: true, + Description: "compute purpose", + }, + "custom_fields": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "network": { + Type: schema.TypeSet, + Optional: true, + MinItems: 1, + MaxItems: constants.MAX_NETWORKS_PER_COMPUTE, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "net_type": { + Type: schema.TypeString, + Required: true, + StateFunc: statefuncs.StateFuncToUpper, + ValidateFunc: validation.StringInSlice([]string{"EXTNET", "VINS", "VFNIC", "DPDK"}, false), // observe case while validating + Description: "Type of the network for this connection, either EXTNET or VINS.", + }, + "net_id": { + Type: schema.TypeInt, + Required: true, + Description: "ID of the network for this connection.", + }, + "ip_address": { + Type: schema.TypeString, + Optional: true, + Computed: true, + DiffSuppressFunc: networkSubresIPAddreDiffSupperss, + Description: "Optional IP address to assign to this connection. This IP should belong to the selected network and free for use.", + }, + "mac": { + Type: schema.TypeString, + Computed: true, + Description: "MAC address associated with this connection. MAC address is assigned automatically.", + }, + "weight": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "weight the network if you need to sort network list, the smallest attach first. zero or null weight attach last", + }, + "mtu": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + //Default: 1500, + ValidateFunc: validation.IntBetween(1, 9216), + Description: "Maximum transmission unit, used only for DPDK type, must be 1-9216", + }, + }, + }, + Description: "Optional network connection(s) for this compute. You may specify several network blocks, one for each connection.", + }, + + "libvirt_settings": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "net_type": { + Type: schema.TypeString, + Required: true, + StateFunc: statefuncs.StateFuncToUpper, + ValidateFunc: validation.StringInSlice([]string{"VINS", "VFNIC", "DPDK"}, false), // observe case while validating + Description: "Type of the network", + }, + "net_id": { + Type: schema.TypeInt, + Required: true, + Description: "ID of the network", + }, + "txmode": { + Type: schema.TypeString, + Default: "", + Optional: true, + }, + "ioeventfd": { + Type: schema.TypeString, + Default: "", + Optional: true, + }, + "event_idx": { + Type: schema.TypeString, + Default: "", + Optional: true, + }, + "queues": { + Type: schema.TypeInt, + Default: 0, + Optional: true, + }, + "rx_queue_size": { + Type: schema.TypeInt, + Default: 0, + Optional: true, + }, + "tx_queue_size": { + Type: schema.TypeInt, + Default: 0, + Optional: true, + }, + }, + }, + Description: "Configure libvirt virtio interface parameters. You can only delete values locally. Data on the platform cannot be deleted.", + }, + + "affinity_label": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Set affinity label for compute", + }, + "affinity_rules": { + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "topology": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"node", "compute"}, false), + Description: "compute or node, for whom rule applies", + }, + "policy": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"RECOMMENDED", "REQUIRED"}, false), + Description: "RECOMMENDED or REQUIRED, the degree of 'strictness' of this rule", + }, + "mode": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"EQ", "NE", "ANY"}, false), + Description: "EQ or NE or ANY - the comparison mode is 'value', recorded by the specified 'key'", + }, + "key": { + Type: schema.TypeString, + Required: true, + Description: "key that are taken into account when analyzing this rule will be identified", + }, + "value": { + Type: schema.TypeString, + Optional: true, + Description: "value that must match the key to be taken into account when analyzing this rule", + }, + }, + }, + }, + "delete_async_mode": { + Type: schema.TypeBool, + Computed: true, + Description: "async mode", + }, + "anti_affinity_rules": { + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "topology": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"node", "compute"}, false), + Description: "compute or node, for whom rule applies", + }, + "policy": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"RECOMMENDED", "REQUIRED"}, false), + Description: "RECOMMENDED or REQUIRED, the degree of 'strictness' of this rule", + }, + "mode": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"EQ", "NE", "ANY"}, false), + Description: "EQ or NE or ANY - the comparison mode is 'value', recorded by the specified 'key'", + }, + "key": { + Type: schema.TypeString, + Required: true, + Description: "key that are taken into account when analyzing this rule will be identified", + }, + "value": { + Type: schema.TypeString, + Optional: true, + Description: "value that must match the key to be taken into account when analyzing this rule", + }, + }, + }, + }, + "disks": { + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "disk_name": { + Type: schema.TypeString, + Required: true, + Description: "Name for disk", + }, + "size": { + Type: schema.TypeInt, + Required: true, + Description: "Disk size in GiB", + }, + "sep_id": { + Type: schema.TypeInt, + Computed: true, + Optional: true, + Description: "Storage endpoint provider ID; by default the same with boot disk", + }, + "disk_type": { + Type: schema.TypeString, + Computed: true, + Optional: true, + ValidateFunc: validation.StringInSlice([]string{"B", "D"}, false), + Description: "The type of disk in terms of its role in compute: 'B=Boot, D=Data'", + }, + "pool": { + Type: schema.TypeString, + Computed: true, + Optional: true, + Description: "Pool name; by default will be chosen automatically", + }, + "node_ids": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "desc": { + Type: schema.TypeString, + Computed: true, + Optional: true, + Description: "Optional description", + }, + "image_id": { + Type: schema.TypeInt, + Computed: true, + Optional: true, + Description: "Specify image id for create disk from template", + }, + "permanently": { + Type: schema.TypeBool, + Optional: true, + Description: "Disk deletion status", + }, + "disk_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Disk ID", + }, + "present_to": { + Type: schema.TypeMap, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "shareable": { + Type: schema.TypeBool, + Computed: true, + }, + "size_max": { + Type: schema.TypeInt, + Computed: true, + }, + "size_used": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, + "extra_disks": { + Type: schema.TypeSet, + Optional: true, + MaxItems: constants.MAX_EXTRA_DISKS_PER_COMPUTE, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + Description: "Optional list of IDs of extra disks to attach to this compute. You may specify several extra disks.", + }, + "tags": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "key": { + Type: schema.TypeString, + Required: true, + }, + "value": { + Type: schema.TypeString, + Required: true, + }, + }, + }, + }, + "port_forwarding": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "public_port_start": { + Type: schema.TypeInt, + Required: true, + }, + "public_port_end": { + Type: schema.TypeInt, + Optional: true, + Default: -1, + }, + "local_port": { + Type: schema.TypeInt, + Optional: true, + }, + "proto": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"tcp", "udp"}, false), + }, + "rule_id": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, + "user_access": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "username": { + Type: schema.TypeString, + Required: true, + }, + "access_type": { + Type: schema.TypeString, + Required: true, + }, + }, + }, + }, + "snapshot": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "label": { + Type: schema.TypeString, + Required: true, + }, + }, + }, + }, + "rollback": { + Type: schema.TypeSet, + MaxItems: 1, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "label": { + Type: schema.TypeString, + Required: true, + }, + }, + }, + }, + "cd": { + Type: schema.TypeSet, + Optional: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "cdrom_id": { + Type: schema.TypeInt, + Required: true, + }, + }, + }, + }, + "pin_to_stack": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "auto_start_w_node": { + Type: schema.TypeBool, + Optional: true, + Computed: true, + }, + "force_pin": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "enabled": { + Type: schema.TypeBool, + Optional: true, + Computed: true, + Description: "If true - enable compute, else - disable", + }, + "pause": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "reset": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "restore": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "force_stop": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Flag for redeploy compute", + }, + "force_resize": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Flag for resize compute", + }, + "detach_disks": { + Type: schema.TypeBool, + Optional: true, + Default: true, + }, + "permanently": { + Type: schema.TypeBool, + Optional: true, + Default: true, + }, + "numa_affinity": { + Type: schema.TypeString, + Optional: true, + Default: "none", + ValidateFunc: validation.StringInSlice([]string{"none", "strict", "loose"}, false), // observe case while validating + Description: "Rule for VM placement with NUMA affinity.", + }, + "cpu_pin": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Run VM on dedicated CPUs. To use this feature, the system must be pre-configured by allocating CPUs on the physical node.", + }, + "hp_backed": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Use Huge Pages to allocate RAM of the virtual machine. The system must be pre-configured by allocating Huge Pages on the physical node.", + }, + "preferred_cpu": { + Type: schema.TypeList, + Optional: true, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + Description: "Recommended isolated CPUs. Field is ignored if compute.cpupin=False or compute.pinned=False", + }, + "pci_devices": { + Type: schema.TypeSet, + Optional: true, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + Description: "ID of the connected pci devices", + }, + // Computed properties + "account_id": { + Type: schema.TypeInt, + Computed: true, + Description: "ID of the account this compute instance belongs to.", + }, + "account_name": { + Type: schema.TypeString, + Computed: true, + Description: "Name of the account this compute instance belongs to.", + }, + "acl": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "explicit": { + Type: schema.TypeString, + Computed: true, + }, + "guid": { + Type: schema.TypeString, + Computed: true, + }, + "right": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + "user_group_id": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + "affinity_weight": { + Type: schema.TypeInt, + Computed: true, + }, + "arch": { + Type: schema.TypeString, + Computed: true, + }, + "boot_order": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "boot_disk_id": { + Type: schema.TypeInt, + Computed: true, + Description: "This compute instance boot disk ID.", + }, + "cd_image_id": { + Type: schema.TypeInt, + Computed: true, + }, + "clone_reference": { + Type: schema.TypeInt, + Computed: true, + }, + "clones": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "computeci_id": { + Type: schema.TypeInt, + Computed: true, + }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "devices": { + Type: schema.TypeString, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + "compute_id": { + Type: schema.TypeInt, + Computed: true, + }, + "interfaces": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "bus_number": { + Type: schema.TypeInt, + Computed: true, + }, + "conn_id": { + Type: schema.TypeInt, + Computed: true, + }, + "conn_type": { + Type: schema.TypeString, + Computed: true, + }, + "def_gw": { + Type: schema.TypeString, + Computed: true, + }, + "enabled": { + Type: schema.TypeBool, + Computed: true, + }, + "flip_group_id": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeString, + Computed: true, + }, + "ip_address": { + Type: schema.TypeString, + Computed: true, + }, + "listen_ssh": { + Type: schema.TypeBool, + Computed: true, + }, + "mac": { + Type: schema.TypeString, + Computed: true, + }, + "mtu": { + Type: schema.TypeInt, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "net_id": { + Type: schema.TypeInt, + Computed: true, + }, + "netmask": { + Type: schema.TypeInt, + Computed: true, + }, + "net_type": { + Type: schema.TypeString, + Computed: true, + }, + "node_id": { + Type: schema.TypeInt, + Computed: true, + }, + "pci_slot": { + Type: schema.TypeInt, + Computed: true, + }, + "qos": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "e_rate": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeString, + Computed: true, + }, + "in_brust": { + Type: schema.TypeInt, + Computed: true, + }, + "in_rate": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, + "libvirt_settings": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "guid": { + Type: schema.TypeString, + Computed: true, + }, + "txmode": { + Type: schema.TypeString, + Computed: true, + }, + "ioeventfd": { + Type: schema.TypeString, + Computed: true, + }, + "event_idx": { + Type: schema.TypeString, + Computed: true, + }, + "queues": { + Type: schema.TypeInt, + Computed: true, + }, + "rx_queue_size": { + Type: schema.TypeInt, + Computed: true, + }, + "tx_queue_size": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, + "target": { + Type: schema.TypeString, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + "vnfs": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + }, + }, + }, + "image_name": { + Type: schema.TypeString, + Computed: true, + }, + "lock_status": { + Type: schema.TypeString, + Computed: true, + }, + "manager_id": { + Type: schema.TypeInt, + Computed: true, + }, + "manager_type": { + Type: schema.TypeString, + Computed: true, + }, + "migrationjob": { + Type: schema.TypeInt, + Computed: true, + }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + }, + "natable_vins_id": { + Type: schema.TypeInt, + Computed: true, + }, + "natable_vins_ip": { + Type: schema.TypeString, + Computed: true, + }, + "natable_vins_name": { + Type: schema.TypeString, + Computed: true, + }, + "natable_vins_network": { + Type: schema.TypeString, + Computed: true, + }, + "natable_vins_network_name": { + Type: schema.TypeString, + Computed: true, + }, + "need_reboot": { + Type: schema.TypeBool, + Computed: true, + }, + "numa_node_id": { + Type: schema.TypeInt, + Computed: true, + }, + "os_users": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "guid": { + Type: schema.TypeString, + Computed: true, + Description: "GUID of this guest OS user.", + }, + + "login": { + Type: schema.TypeString, + Computed: true, + Description: "Login name of this guest OS user.", + }, + + "password": { + Type: schema.TypeString, + Computed: true, + //Sensitive: true, + Description: "Password of this guest OS user.", + }, + + "public_key": { + Type: schema.TypeString, + Computed: true, + Description: "SSH public key of this guest OS user.", + }, + }, + }, + Description: "Guest OS users provisioned on this compute instance.", + }, + "pinned": { + Type: schema.TypeInt, + Computed: true, + }, + "reference_id": { + Type: schema.TypeString, + Computed: true, + }, + "registered": { + Type: schema.TypeBool, + Computed: true, + }, + "res_name": { + Type: schema.TypeString, + Computed: true, + }, + "reserved_node_cpus": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "rg_name": { + Type: schema.TypeString, + Computed: true, + Description: "Name of the resource group where this compute instance is located.", + }, + "snap_sets": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "disks": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "guid": { + Type: schema.TypeString, + Computed: true, + }, + "label": { + Type: schema.TypeString, + Computed: true, + }, + "timestamp": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, + "stack_name": { + Type: schema.TypeString, + Computed: true, + Description: "Name of the stack, on which VM started", + }, + "stateless_sep_id": { + Type: schema.TypeInt, + Computed: true, + }, + "stateless_sep_type": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "tech_status": { + Type: schema.TypeString, + Computed: true, + }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, + "user_managed": { + Type: schema.TypeBool, + Computed: true, + }, + "vnc_password": { + Type: schema.TypeString, + Computed: true, + }, + "vgpus": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "virtual_image_id": { + Type: schema.TypeInt, + Computed: true, + }, + "virtual_image_name": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} diff --git a/internal/service/cloudbroker/kvmvm/resource_compute.go b/internal/service/cloudbroker/kvmvm/resource_compute.go index cc212d8..9f163d9 100644 --- a/internal/service/cloudbroker/kvmvm/resource_compute.go +++ b/internal/service/cloudbroker/kvmvm/resource_compute.go @@ -121,6 +121,11 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf reqInterface.IPAddr = ipaddr.(string) } + macaddr, macSet := netInterfaceVal["mac"] + if macSet { + reqInterface.MAC = macaddr.(string) + } + interfacesX86 = append(interfacesX86, reqInterface) } createReqX86.Interfaces = interfacesX86 @@ -242,6 +247,38 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf log.Debugf("resourceComputeCreate: new simple Compute ID %d, name %s created", computeId, d.Get("name").(string)) + updateReq := compute.UpdateRequest{} + + loaderType, loaderTypeOk := d.GetOk("loader_type") + bootType, bootTypeOk := d.GetOk("boot_type") + hotResize, hotResizeOk := d.GetOk("hot_resize") + networkInterfaceNaming, networkInterfaceNamingOk := d.GetOk("network_interface_naming") + + if loaderTypeOk { + updateReq.LoaderType = loaderType.(string) + } + + if bootTypeOk { + updateReq.BootType = bootType.(string) + } + + if hotResizeOk { + updateReq.HotResize = hotResize.(bool) + } + + if networkInterfaceNamingOk { + updateReq.NetworkInterfaceNaming = networkInterfaceNaming.(string) + } + + if loaderTypeOk || bootTypeOk || hotResizeOk || networkInterfaceNamingOk { + log.Debugf("resourceComputeCreate: change loaderType or bootType or hotResize or networkInterfaceNaming on ComputeID: %d", computeId) + updateReq.ComputeID = computeId + _, err := c.CloudBroker().Compute().Update(ctx, updateReq) + if err != nil { + warnings.Add(err) + } + } + if ars, ok := d.GetOk("pci_devices"); ok { log.Debugf("resourceComputeCreate: add pci devices on ComputeID: %d", computeId) addedPciDevices := ars.(*schema.Set).List() @@ -352,9 +389,6 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf } } else if ok && !start.(bool) { req := compute.StopRequest{ComputeID: computeId} - if depresent, ok := d.Get("depresent").(bool); ok { - req.Depresent = depresent - } log.Debugf("resourceComputeCreate: stoping Compute ID %d after completing its resource configuration", computeId) if _, err := c.CloudBroker().Compute().Stop(ctx, req); err != nil { warnings.Add(err) @@ -713,7 +747,18 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf } } - if d.HasChanges("description", "name", "numa_affinity", "cpu_pin", "hp_backed", "chipset", "auto_start_w_node", "preferred_cpu") { + if d.HasChanges("description", + "name", + "numa_affinity", + "cpu_pin", + "hp_backed", + "chipset", + "auto_start_w_node", + "preferred_cpu", + "loader_type", + "boot_type", + "hot_resize", + "network_interface_naming") { if err := utilityComputeUpdate(ctx, d, m); err != nil { return diag.FromErr(err) } @@ -874,7 +919,7 @@ func resourceComputeDelete(ctx context.Context, d *schema.ResourceData, m interf func ResourceCompute() *schema.Resource { return &schema.Resource{ - SchemaVersion: 1, + SchemaVersion: 2, CustomizeDiff: func(ctx context.Context, diff *schema.ResourceDiff, i interface{}) error { if diff.HasChanges() || diff.HasChanges("chipset", "pin_to_stack", "auto_start_w_node", "libvirt_settings", "network", "affinity_rules", "anti_affinity_rules", @@ -911,5 +956,12 @@ func ResourceCompute() *schema.Resource { }, Schema: resourceComputeSchemaMake(), + StateUpgraders: []schema.StateUpgrader{ + { + Type: resourceComputeResourceV1().CoreConfigSchema().ImpliedType(), + Upgrade: resourceCompueteStateUpgradeV1, + Version: 1, + }, + }, } } diff --git a/internal/service/cloudbroker/kvmvm/schema.go b/internal/service/cloudbroker/kvmvm/schema.go index a21fcc8..22ec4a0 100644 --- a/internal/service/cloudbroker/kvmvm/schema.go +++ b/internal/service/cloudbroker/kvmvm/schema.go @@ -391,7 +391,7 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "present_to": { - Type: schema.TypeList, + Type: schema.TypeMap, Computed: true, Elem: &schema.Schema{ Type: schema.TypeInt, @@ -466,6 +466,10 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "size_available": { + Type: schema.TypeFloat, + Computed: true, + }, "size_max": { Type: schema.TypeInt, Computed: true, @@ -789,7 +793,7 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { }, }, "pinned": { - Type: schema.TypeBool, + Type: schema.TypeInt, Computed: true, }, "preferred_cpu": { @@ -918,10 +922,88 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "vgpus": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{ - Type: schema.TypeInt, + Type: schema.TypeList, + Computed: true, + Description: "List of virtual GPUs", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeInt, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + "mode": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "profile_id": { + Type: schema.TypeInt, + Computed: true, + }, + "ram": { + Type: schema.TypeInt, + Computed: true, + }, + "last_update_time": { + Type: schema.TypeInt, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "vmid": { + Type: schema.TypeInt, + Computed: true, + }, + "pgpuid": { + Type: schema.TypeInt, + Computed: true, + }, + "reference_id": { + Type: schema.TypeString, + Computed: true, + }, + "account_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "last_claimed_by": { + Type: schema.TypeInt, + Computed: true, + }, + "pci_slot": { + Type: schema.TypeInt, + Computed: true, + }, + "bus_number": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + }, }, }, "virtual_image_id": { @@ -949,6 +1031,22 @@ func dataSourceComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "loader_type": { + Type: schema.TypeString, + Computed: true, + }, + "boot_type": { + Type: schema.TypeString, + Computed: true, + }, + "hot_resize": { + Type: schema.TypeBool, + Computed: true, + }, + "network_interface_naming": { + Type: schema.TypeString, + Computed: true, + }, } return res } @@ -985,6 +1083,11 @@ func dataSourceComputeListSchemaMake() map[string]*schema.Schema { Optional: true, Description: "Find by tech status", }, + "stack_name": { + Type: schema.TypeString, + Optional: true, + Description: "Find by node name.", + }, "status": { Type: schema.TypeString, Optional: true, @@ -1462,6 +1565,10 @@ func dataSourceComputeListSchemaMake() map[string]*schema.Schema { Type: schema.TypeBool, Computed: true, }, + "nid": { + Type: schema.TypeInt, + Computed: true, + }, "numa_affinity": { Type: schema.TypeString, Computed: true, @@ -1495,7 +1602,7 @@ func dataSourceComputeListSchemaMake() map[string]*schema.Schema { }, }, "pinned": { - Type: schema.TypeBool, + Type: schema.TypeInt, Computed: true, }, "preferred_cpu": { @@ -1567,6 +1674,11 @@ func dataSourceComputeListSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "stack_name": { + Type: schema.TypeString, + Computed: true, + Description: "Find by node name.", + }, "stateless_sep_id": { Type: schema.TypeInt, Computed: true, @@ -1634,6 +1746,22 @@ func dataSourceComputeListSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "loader_type": { + Type: schema.TypeString, + Computed: true, + }, + "boot_type": { + Type: schema.TypeString, + Computed: true, + }, + "hot_resize": { + Type: schema.TypeBool, + Computed: true, + }, + "network_interface_naming": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, @@ -1848,6 +1976,10 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "chipset": { + Type: schema.TypeString, + Computed: true, + }, "cd_image_id": { Type: schema.TypeInt, Computed: true, @@ -1948,6 +2080,10 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "bus_number": { + Type: schema.TypeInt, + Computed: true, + }, "conn_id": { Type: schema.TypeInt, Computed: true, @@ -1984,6 +2120,10 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "mtu": { + Type: schema.TypeInt, + Computed: true, + }, "name": { Type: schema.TypeString, Computed: true, @@ -2032,6 +2172,42 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { }, }, }, + "libvirt_settings": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "guid": { + Type: schema.TypeString, + Computed: true, + }, + "txmode": { + Type: schema.TypeString, + Computed: true, + }, + "ioeventfd": { + Type: schema.TypeString, + Computed: true, + }, + "event_idx": { + Type: schema.TypeString, + Computed: true, + }, + "queues": { + Type: schema.TypeInt, + Computed: true, + }, + "rx_queue_size": { + Type: schema.TypeInt, + Computed: true, + }, + "tx_queue_size": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, "target": { Type: schema.TypeString, Computed: true, @@ -2111,10 +2287,6 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { }, }, "pinned": { - Type: schema.TypeBool, - Computed: true, - }, - "ram": { Type: schema.TypeInt, Computed: true, }, @@ -2125,6 +2297,10 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, }, }, + "ram": { + Type: schema.TypeInt, + Computed: true, + }, "reference_id": { Type: schema.TypeString, Computed: true, @@ -2183,6 +2359,11 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "stack_name": { + Type: schema.TypeString, + Computed: true, + Description: "Find by node name.", + }, "stateless_sep_id": { Type: schema.TypeInt, Computed: true, @@ -2250,6 +2431,22 @@ func dataSourceComputeListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeInt, Computed: true, }, + "loader_type": { + Type: schema.TypeString, + Computed: true, + }, + "boot_type": { + Type: schema.TypeString, + Computed: true, + }, + "hot_resize": { + Type: schema.TypeBool, + Computed: true, + }, + "network_interface_naming": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, @@ -3001,12 +3198,6 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Optional text description of this compute instance.", }, - "depresent": { - Type: schema.TypeBool, - Optional: true, - Default: true, - Description: "whether to depresent compute disks from node or not", - }, "started": { Type: schema.TypeBool, Optional: true, @@ -3044,7 +3235,6 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { Type: schema.TypeSet, Optional: true, MinItems: 1, - MaxItems: constants.MAX_NETWORKS_PER_COMPUTE, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "net_type": { @@ -3067,9 +3257,11 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { Description: "Optional IP address to assign to this connection. This IP should belong to the selected network and free for use.", }, "mac": { - Type: schema.TypeString, - Computed: true, - Description: "MAC address associated with this connection. MAC address is assigned automatically.", + Type: schema.TypeString, + Optional: true, + Computed: true, + DiffSuppressFunc: networkSubresIPAddreDiffSupperss, + Description: "MAC address associated with this connection. MAC address is assigned automatically.", }, "weight": { Type: schema.TypeInt, @@ -3288,6 +3480,13 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, Description: "Disk ID", }, + "present_to": { + Type: schema.TypeMap, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, "shareable": { Type: schema.TypeBool, Computed: true, @@ -3306,7 +3505,6 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { "extra_disks": { Type: schema.TypeSet, Optional: true, - MaxItems: constants.MAX_EXTRA_DISKS_PER_COMPUTE, Elem: &schema.Schema{ Type: schema.TypeInt, }, @@ -3507,6 +3705,33 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { }, Description: "ID of the connected pci devices", }, + "loader_type": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"linux", "windows", "unknown"}, false), + Description: "Type of image vm.", + }, + "boot_type": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"bios", "uefi"}, false), + Description: "Type of image upload.", + }, + "hot_resize": { + Type: schema.TypeBool, + Optional: true, + Computed: true, + Description: "Type of image vm.", + }, + "network_interface_naming": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringInSlice([]string{"eth", "ens"}, false), + Description: "Name of netfowrk interface.", + }, // Computed properties "account_id": { Type: schema.TypeInt, @@ -3858,7 +4083,7 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { Description: "Guest OS users provisioned on this compute instance.", }, "pinned": { - Type: schema.TypeBool, + Type: schema.TypeInt, Computed: true, }, "reference_id": { @@ -3950,10 +4175,88 @@ func resourceComputeSchemaMake() map[string]*schema.Schema { Computed: true, }, "vgpus": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{ - Type: schema.TypeInt, + Type: schema.TypeList, + Computed: true, + Description: "List of virtual GPUs", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeInt, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + "mode": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "profile_id": { + Type: schema.TypeInt, + Computed: true, + }, + "ram": { + Type: schema.TypeInt, + Computed: true, + }, + "last_update_time": { + Type: schema.TypeInt, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "vmid": { + Type: schema.TypeInt, + Computed: true, + }, + "pgpuid": { + Type: schema.TypeInt, + Computed: true, + }, + "reference_id": { + Type: schema.TypeString, + Computed: true, + }, + "account_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "last_claimed_by": { + Type: schema.TypeInt, + Computed: true, + }, + "pci_slot": { + Type: schema.TypeInt, + Computed: true, + }, + "bus_number": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + }, }, }, "virtual_image_id": { diff --git a/internal/service/cloudbroker/kvmvm/state_upgraders.go b/internal/service/cloudbroker/kvmvm/state_upgraders.go new file mode 100644 index 0000000..30a6a09 --- /dev/null +++ b/internal/service/cloudbroker/kvmvm/state_upgraders.go @@ -0,0 +1,20 @@ +package kvmvm + +import ( + "context" + + log "github.com/sirupsen/logrus" +) + +func resourceCompueteStateUpgradeV1(ctx context.Context, rawState map[string]interface{}, meta any) (map[string]interface{}, error) { + log.Debug("resourceCompueteStateUpgradeV1: upgrading state") + if oldVal, ok := rawState["pinned"].(bool); ok { + if !oldVal { + rawState["pinned"] = -1 + } else { + rawState["pinned"] = 0 + } + } + + return rawState, nil +} diff --git a/internal/service/cloudbroker/kvmvm/utility_compute.go b/internal/service/cloudbroker/kvmvm/utility_compute.go index f627bfe..8e3b3ac 100644 --- a/internal/service/cloudbroker/kvmvm/utility_compute.go +++ b/internal/service/cloudbroker/kvmvm/utility_compute.go @@ -100,9 +100,6 @@ func utilityComputeStarted(ctx context.Context, d *schema.ResourceData, m interf if force, ok := d.Get("force_stop").(bool); ok { req.Force = force } - if depresent, ok := d.Get("depresent").(bool); ok { - req.Depresent = depresent - } if _, err := c.CloudBroker().Compute().Stop(ctx, req); err != nil { return err } @@ -267,10 +264,6 @@ func utilityComputeUpdateDisks(ctx context.Context, d *schema.ResourceData, m in Force: false, } - if depresent, ok := d.Get("depresent").(bool); ok { - stopReq.Depresent = depresent - } - _, err := c.CloudBroker().Compute().Stop(ctx, stopReq) if err != nil { return err @@ -474,19 +467,6 @@ func utilityComputeExtraDisksConfigure(ctx context.Context, d *schema.ResourceDa if detach_set.Len() > 0 { computeId, _ := strconv.ParseUint(d.Id(), 10, 64) - stopReq := compute.StopRequest{ - ComputeID: computeId, - Force: false, - } - - if depresent, ok := d.Get("depresent").(bool); ok { - stopReq.Depresent = depresent - } - - _, err := c.CloudBroker().Compute().Stop(ctx, stopReq) - if err != nil { - return err - } for _, diskId := range detach_set.List() { req := compute.DiskDetachRequest{ @@ -501,14 +481,6 @@ func utilityComputeExtraDisksConfigure(ctx context.Context, d *schema.ResourceDa } } - req := compute.StartRequest{ - ComputeID: computeId, - AltBootID: 0, - } - _, err = c.CloudBroker().Compute().Start(ctx, req) - if err != nil { - return err - } } attach_set := new_set.(*schema.Set).Difference(old_set.(*schema.Set)) @@ -601,7 +573,7 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData oldList := oldSet.(*schema.Set).List() newList := newSet.(*schema.Set).List() - detachMap, changeIpMap, attachMap := differenceNetwork(oldList, newList) + detachMap, changeIpMap, changeMacMap, attachMap := differenceNetwork(oldList, newList) apiErrCount := 0 var lastSavedError error @@ -649,7 +621,7 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData addedLibvirtSettings := (newLibvirtSet.(*schema.Set).Difference(oldLibvirtSet.(*schema.Set))).List() libvirtSettingsMap := addAttachedNetwork(addedLibvirtSettings, newLibvirtSet.(*schema.Set).List(), attachMap) - if oldSet.(*schema.Set).Len() == len(detachMap) || oldSet.(*schema.Set).Len() == 0 || len(libvirtSettingsMap) > 0 || hasDPDKnetwork(attachMap) { + if oldSet.(*schema.Set).Len() == len(detachMap) || oldSet.(*schema.Set).Len() == 0 || len(libvirtSettingsMap) > 0 || hasDPDKnetwork(attachMap) || len(changeMacMap) > 0 { if err := utilityComputeStop(ctx, d, m); err != nil { apiErrCount++ lastSavedError = err @@ -659,6 +631,24 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData } } + log.Debugf("utilityComputeNetworksConfigure: changeMac set has %d items for Compute ID %s", len(changeMacMap), d.Id()) + for _, netData := range changeMacMap { + computeId, _ := strconv.ParseUint(d.Id(), 10, 64) + req := compute.ChangeMACRequest{ + ComputeID: computeId, + NewMAC: netData["mac"].(string), + СurrentMAC: netData["old_mac"].(string), + } + + _, err := c.CloudBroker().Compute().ChangeMAC(ctx, req) + if err != nil { + log.Errorf("utilityComputeNetworksConfigure: failed to change mac %s to %s from Compute ID %s: %s", + req.СurrentMAC, req.NewMAC, d.Id(), err) + apiErrCount++ + lastSavedError = err + } + } + sort.Slice(attachMap, func(i, j int) bool { weightI := attachMap[i]["weight"].(int) weightJ := attachMap[j]["weight"].(int) @@ -687,6 +677,10 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData req.IPAddr = netData["ip_address"].(string) } + if netData["mac"].(string) != "" { + req.MACAddr = netData["mac"].(string) + } + _, err := c.CloudBroker().Compute().NetAttach(ctx, req) if err != nil { log.Errorf("utilityComputeNetworksConfigure: failed to attach net ID %d of type %s to Compute ID %s: %s", @@ -758,9 +752,10 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData return nil } -func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, attachMap []map[string]interface{}) { +func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, changeMacMap, attachMap []map[string]interface{}) { attachMap = make([]map[string]interface{}, 0) changeIpMap = make([]map[string]interface{}, 0) + changeMacMap = make([]map[string]interface{}, 0) detachMap = make([]map[string]interface{}, 0) for _, oldNetwork := range oldList { oldMap := oldNetwork.(map[string]interface{}) @@ -768,15 +763,21 @@ func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, for _, newNetwork := range newList { newMap := newNetwork.(map[string]interface{}) if newMap["net_type"] == oldMap["net_type"] && newMap["net_id"] == oldMap["net_id"] && newMap["weight"] == oldMap["weight"] && (newMap["mtu"] == oldMap["mtu"] || newMap["mtu"].(int) == 0) { - if (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != "") { + found = true + switch { + case (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != ""): changeIpMap = append(changeIpMap, newMap) found = true - break - } else if newMap["ip_address"] == oldMap["ip_address"] || newMap["ip_address"].(string) == "" { + fallthrough + case newMap["mac"] != oldMap["mac"] && newMap["mac"].(string) != "": + newMap["old_mac"] = oldMap["mac"] + changeMacMap = append(changeMacMap, newMap) found = true - break } } + if found { + break + } } if found { continue @@ -790,12 +791,8 @@ func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap, for _, oldNetwork := range oldList { oldMap := oldNetwork.(map[string]interface{}) if newMap["net_type"] == oldMap["net_type"] && newMap["net_id"] == oldMap["net_id"] && newMap["weight"] == oldMap["weight"] && (newMap["mtu"] == oldMap["mtu"] || newMap["mtu"].(int) == 0) { - if newMap["ip_address"] == oldMap["ip_address"] || newMap["ip_address"].(string) == "" || - ((newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && - newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != "") { - found = true - break - } + found = true + break } } if found { @@ -871,6 +868,23 @@ func utilityComputeUpdate(ctx context.Context, d *schema.ResourceData, m interfa if d.HasChange("chipset") { req.Chipset = d.Get("chipset").(string) } + + if d.HasChange("loader_type") { + req.LoaderType = d.Get("loader_type").(string) + } + + if d.HasChange("boot_type") { + req.BootType = d.Get("boot_type").(string) + } + + if d.HasChange("hot_resize") { + req.HotResize = d.Get("hot_resize").(bool) + } + + if d.HasChange("network_interface_naming") { + req.NetworkInterfaceNaming = d.Get("network_interface_naming").(string) + } + req.CPUPin = d.Get("cpu_pin").(bool) req.HPBacked = d.Get("hp_backed").(bool) req.AutoStart = d.Get("auto_start_w_node").(bool) @@ -902,9 +916,7 @@ func utilityComputeUpdate(ctx context.Context, d *schema.ResourceData, m interfa ComputeID: computeId, Force: false, } - if depresent, ok := d.Get("depresent").(bool); ok { - stopReq.Depresent = depresent - } + if _, err := c.CloudBroker().Compute().Stop(ctx, stopReq); err != nil { return err } @@ -1368,9 +1380,6 @@ func utilityComputeRollback(ctx context.Context, d *schema.ResourceData, m inter ComputeID: computeId, Force: false, } - if depresent, ok := d.Get("depresent").(bool); ok { - req.Depresent = depresent - } _, err := c.CloudBroker().Compute().Stop(ctx, req) if err != nil { @@ -1531,9 +1540,6 @@ func utilityComputeUpdateImage(ctx context.Context, d *schema.ResourceData, m in ComputeID: computeId, Force: false, } - if depresent, ok := d.Get("depresent").(bool); ok { - stopReq.Depresent = depresent - } if forceStop, ok := d.GetOk("force_stop"); ok { stopReq.Force = forceStop.(bool) } @@ -1608,9 +1614,6 @@ func utilityComputeStop(ctx context.Context, d *schema.ResourceData, m interface Force: true, } req.ComputeID = uint64(d.Get("compute_id").(int)) - if depresent, ok := d.Get("depresent").(bool); ok { - req.Depresent = depresent - } log.Debugf("utilityComputeStop: stopping compute %d", req.ComputeID) _, err := c.CloudBroker().Compute().Stop(ctx, req) diff --git a/internal/service/cloudbroker/kvmvm/utility_compute_list.go b/internal/service/cloudbroker/kvmvm/utility_compute_list.go index 2ec634a..ac0af59 100644 --- a/internal/service/cloudbroker/kvmvm/utility_compute_list.go +++ b/internal/service/cloudbroker/kvmvm/utility_compute_list.go @@ -72,6 +72,9 @@ func utilityDataComputeListCheckPresence(ctx context.Context, d *schema.Resource if stackID, ok := d.GetOk("stack_id"); ok { req.StackID = stackID.(uint64) } + if stackName, ok := d.GetOk("stack_name"); ok { + req.StackName = stackName.(string) + } if imageID, ok := d.GetOk("image_id"); ok { req.ImageID = imageID.(uint64) } diff --git a/internal/service/cloudbroker/kvmvm/utility_compute_list_deleted.go b/internal/service/cloudbroker/kvmvm/utility_compute_list_deleted.go index acb6638..859dfac 100644 --- a/internal/service/cloudbroker/kvmvm/utility_compute_list_deleted.go +++ b/internal/service/cloudbroker/kvmvm/utility_compute_list_deleted.go @@ -34,13 +34,14 @@ package kvmvm import ( "context" + "regexp" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/compute" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" ) -func utilityDataComputeListDeletedCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*compute.ListComputes, error) { +func utilityDataComputeListDeletedCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*compute.ListDeletedComputes, error) { c := m.(*controller.ControllerCfg) req := compute.ListDeletedRequest{} @@ -88,3 +89,12 @@ func utilityDataComputeListDeletedCheckPresence(ctx context.Context, d *schema.R return listComputes, nil } +func matchDeletedComputes(computeList *compute.ListDeletedComputes) *compute.ListDeletedComputes { + matched, _ := regexp.Compile(`[a-zA-Z]+\\d+-[a-zA-Z]+\\d+-[a-zA-Z]+\\d+`) + result := computeList.FilterFunc(func(ic compute.ItemDeletedCompute) bool { + res := matched.Match([]byte(ic.Name)) + return !res + }) + + return &result +} diff --git a/internal/service/cloudbroker/rg/flattens.go b/internal/service/cloudbroker/rg/flattens.go index 0488764..0737f18 100644 --- a/internal/service/cloudbroker/rg/flattens.go +++ b/internal/service/cloudbroker/rg/flattens.go @@ -31,7 +31,6 @@ func flattenResgroup(d *schema.ResourceData, rgData *rg.RecordRG) { d.Set("lock_status", rgData.LockStatus) d.Set("milestones", rgData.Milestones) d.Set("name", rgData.Name) - d.Set("register_computes", rgData.RegisterComputes) d.Set("resource_limits", flattenRgResourceLimits(rgData.ResourceLimits)) d.Set("resource_types", rgData.ResTypes) d.Set("secret", rgData.Secret) @@ -405,7 +404,6 @@ func flattenRgList(rgl *rg.ListRG) []map[string]interface{} { "lock_status": rg.LockStatus, "milestones": rg.Milestones, "name": rg.Name, - "register_computes": rg.RegisterComputes, "resource_limits": flattenRgResourceLimits(rg.ResourceLimits), "secret": rg.Secret, "status": rg.Status, @@ -476,7 +474,6 @@ func flattenResourceRG(d *schema.ResourceData, rgData *rg.RecordRG) { d.Set("rg_name", rgData.Name) d.Set("resource_limits", flattenRgResourceLimits(rgData.ResourceLimits)) d.Set("description", rgData.Description) - d.Set("register_computes", rgData.RegisterComputes) d.Set("uniq_pools", rgData.UniqPools) d.Set("cpu_allocation_parameter", rgData.CPUAllocationParameter) d.Set("cpu_allocation_ratio", rgData.CPUAllocationRatio) diff --git a/internal/service/cloudbroker/rg/models.go b/internal/service/cloudbroker/rg/models.go index 33855ba..ea78cc2 100644 --- a/internal/service/cloudbroker/rg/models.go +++ b/internal/service/cloudbroker/rg/models.go @@ -1,148 +1,147 @@ -/* -Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. -Authors: -Petr Krutov, -Stanislav Solovev, - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* -Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud -Orchestration Technology) with Terraform by Hashicorp. - -Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort - -Please see README.md to learn where to place source code so that it -builds seamlessly. - -Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki -*/ - -package rg - -type ResourceLimits struct { - CUC float64 `json:"CU_C"` - CUD float64 `json:"CU_D"` - CUI float64 `json:"CU_I"` - CUM float64 `json:"CU_M"` - CUNP float64 `json:"CU_NP"` - GpuUnits float64 `json:"gpu_units"` -} - -type ResgroupRecord struct { - ACLs []AccountAclRecord `json:"acl"` - AccountID int `json:"accountId"` - AccountName string `json:"accountName"` - CreatedBy string `json:"createdBy"` - CreatedTime uint64 `json:"createdTime"` - DefaultNetID int `json:"def_net_id"` - DefaultNetType string `json:"def_net_type"` - DeletedBy string `json:"deletedBy"` - DeletedTime int `json:"deletedTime"` - Decsription string `json:"desc"` - GridID int `json:"gid"` - GUID int `json:"guid"` - ID uint `json:"id"` - LockStatus string `json:"lockStatus"` - Milestones int `json:"milestones"` - Name string `json:"name"` - RegisterComputes bool `json:"registerComputes"` - ResourceLimits ResourceLimits `json:"resourceLimits"` - Secret string `json:"secret"` - Status string `json:"status"` - UpdatedBy string `json:"updatedBy"` - UpdatedTime uint64 `json:"updatedTime"` - Vins []int `json:"vins"` - Computes []int `json:"vms"` -} - -type ResgroupListResp []ResgroupRecord - -type ResgroupUpdateParam struct { - RgId int `json:"rgId"` - Name string `json:"name"` - Desc string `json:"decs"` - Ram int `json:"maxMemoryCapacity"` - Disk int `json:"maxVDiskCapacity"` - Cpu int `json:"maxCPUCapacity"` - NetTraffic int `json:"maxNetworkPeerTransfer"` -} - -type AccountAclRecord struct { - IsExplicit bool `json:"explicit"` - Guid string `json:"guid"` - Rights string `json:"right"` - Status string `json:"status"` - Type string `json:"type"` - UgroupID string `json:"userGroupId"` - CanBeDeleted bool `json:"canBeDeleted"` -} - -type ResgroupGetResp struct { - ACLs []UserAclRecord `json:"ACLs"` - Usage UsageRecord `json:"Resources"` - AccountID int `json:"accountId"` - AccountName string `json:"accountName"` - GridID int `json:"gid"` - CreatedBy string `json:"createdBy"` - CreatedTime uint64 `json:"createdTime"` - DefaultNetID int `json:"def_net_id"` - DefaultNetType string `json:"def_net_type"` - DeletedBy string `json:"deletedBy"` - DeletedTime uint64 `json:"deletedTime"` - Desc string `json:"desc"` - ID uint `json:"id"` - LockStatus string `json:"lockStatus"` - Name string `json:"name"` - Quota QuotaRecord `json:"resourceLimits"` - Status string `json:"status"` - UpdatedBy string `json:"updatedBy"` - UpdatedTime uint64 `json:"updatedTime"` - Vins []int `json:"vins"` - Computes []int `json:"vms"` - - Ignored map[string]interface{} `json:"-"` -} - -type UserAclRecord struct { - IsExplicit bool `json:"explicit"` - Rights string `json:"right"` - Status string `json:"status"` - Type string `json:"type"` - UgroupID string `json:"userGroupId"` - // CanBeDeleted bool `json:"canBeDeleted"` -} - -type QuotaRecord struct { // this is how quota is reported by /api/.../rg/get - Cpu float64 `json:"CU_C"` // CPU count in pcs - Ram float64 `json:"CU_M"` // RAM volume in MB, it is STILL reported as FLOAT - Disk float64 `json:"CU_D"` // Disk capacity in GB - ExtIPs float64 `json:"CU_I"` // Ext IPs count - ExtTraffic float64 `json:"CU_NP"` // Ext network traffic - GpuUnits float64 `json:"gpu_units"` // GPU count -} - -type ResourceRecord struct { // this is how actual usage is reported by /api/.../rg/get - Cpu int `json:"cpu"` - Disk int `json:"disksize"` - ExtIPs int `json:"extips"` - ExtTraffic int `json:"exttraffic"` - Gpu int `json:"gpu"` - Ram int `json:"ram"` -} - -type UsageRecord struct { - Current ResourceRecord `json:"Current"` - Reserved ResourceRecord `json:"Reserved"` -} +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package rg + +type ResourceLimits struct { + CUC float64 `json:"CU_C"` + CUD float64 `json:"CU_D"` + CUI float64 `json:"CU_I"` + CUM float64 `json:"CU_M"` + CUNP float64 `json:"CU_NP"` + GpuUnits float64 `json:"gpu_units"` +} + +type ResgroupRecord struct { + ACLs []AccountAclRecord `json:"acl"` + AccountID int `json:"accountId"` + AccountName string `json:"accountName"` + CreatedBy string `json:"createdBy"` + CreatedTime uint64 `json:"createdTime"` + DefaultNetID int `json:"def_net_id"` + DefaultNetType string `json:"def_net_type"` + DeletedBy string `json:"deletedBy"` + DeletedTime int `json:"deletedTime"` + Decsription string `json:"desc"` + GridID int `json:"gid"` + GUID int `json:"guid"` + ID uint `json:"id"` + LockStatus string `json:"lockStatus"` + Milestones int `json:"milestones"` + Name string `json:"name"` + ResourceLimits ResourceLimits `json:"resourceLimits"` + Secret string `json:"secret"` + Status string `json:"status"` + UpdatedBy string `json:"updatedBy"` + UpdatedTime uint64 `json:"updatedTime"` + Vins []int `json:"vins"` + Computes []int `json:"vms"` +} + +type ResgroupListResp []ResgroupRecord + +type ResgroupUpdateParam struct { + RgId int `json:"rgId"` + Name string `json:"name"` + Desc string `json:"decs"` + Ram int `json:"maxMemoryCapacity"` + Disk int `json:"maxVDiskCapacity"` + Cpu int `json:"maxCPUCapacity"` + NetTraffic int `json:"maxNetworkPeerTransfer"` +} + +type AccountAclRecord struct { + IsExplicit bool `json:"explicit"` + Guid string `json:"guid"` + Rights string `json:"right"` + Status string `json:"status"` + Type string `json:"type"` + UgroupID string `json:"userGroupId"` + CanBeDeleted bool `json:"canBeDeleted"` +} + +type ResgroupGetResp struct { + ACLs []UserAclRecord `json:"ACLs"` + Usage UsageRecord `json:"Resources"` + AccountID int `json:"accountId"` + AccountName string `json:"accountName"` + GridID int `json:"gid"` + CreatedBy string `json:"createdBy"` + CreatedTime uint64 `json:"createdTime"` + DefaultNetID int `json:"def_net_id"` + DefaultNetType string `json:"def_net_type"` + DeletedBy string `json:"deletedBy"` + DeletedTime uint64 `json:"deletedTime"` + Desc string `json:"desc"` + ID uint `json:"id"` + LockStatus string `json:"lockStatus"` + Name string `json:"name"` + Quota QuotaRecord `json:"resourceLimits"` + Status string `json:"status"` + UpdatedBy string `json:"updatedBy"` + UpdatedTime uint64 `json:"updatedTime"` + Vins []int `json:"vins"` + Computes []int `json:"vms"` + + Ignored map[string]interface{} `json:"-"` +} + +type UserAclRecord struct { + IsExplicit bool `json:"explicit"` + Rights string `json:"right"` + Status string `json:"status"` + Type string `json:"type"` + UgroupID string `json:"userGroupId"` + // CanBeDeleted bool `json:"canBeDeleted"` +} + +type QuotaRecord struct { // this is how quota is reported by /api/.../rg/get + Cpu float64 `json:"CU_C"` // CPU count in pcs + Ram float64 `json:"CU_M"` // RAM volume in MB, it is STILL reported as FLOAT + Disk float64 `json:"CU_D"` // Disk capacity in GB + ExtIPs float64 `json:"CU_I"` // Ext IPs count + ExtTraffic float64 `json:"CU_NP"` // Ext network traffic + GpuUnits float64 `json:"gpu_units"` // GPU count +} + +type ResourceRecord struct { // this is how actual usage is reported by /api/.../rg/get + Cpu int `json:"cpu"` + Disk int `json:"disksize"` + ExtIPs int `json:"extips"` + ExtTraffic int `json:"exttraffic"` + Gpu int `json:"gpu"` + Ram int `json:"ram"` +} + +type UsageRecord struct { + Current ResourceRecord `json:"Current"` + Reserved ResourceRecord `json:"Reserved"` +} diff --git a/internal/service/cloudbroker/rg/resource_rg.go b/internal/service/cloudbroker/rg/resource_rg.go index 8acf2c5..eb5c55c 100644 --- a/internal/service/cloudbroker/rg/resource_rg.go +++ b/internal/service/cloudbroker/rg/resource_rg.go @@ -129,10 +129,6 @@ func resourceResgroupCreate(ctx context.Context, d *schema.ResourceData, m inter req.ExtIP = extIp.(string) } - if regComputes, ok := d.GetOk("register_computes"); ok { - req.RegisterComputes = regComputes.(bool) - } - if uniqPools, ok := d.GetOk("uniq_pools"); ok { uniqPools := uniqPools.([]interface{}) @@ -418,11 +414,6 @@ func resourceResgroupUpdate(ctx context.Context, d *schema.ResourceData, m inter doGeneralUpdate = true } - if d.HasChange("register_computes") { - req.RegisterComputes = d.Get("register_computes").(bool) - doGeneralUpdate = true - } - if d.HasChange("uniq_pools") { uniqPools := d.Get("uniq_pools").([]interface{}) if len(uniqPools) == 0 { diff --git a/internal/service/cloudbroker/rg/schema.go b/internal/service/cloudbroker/rg/schema.go index 757ff43..afab865 100644 --- a/internal/service/cloudbroker/rg/schema.go +++ b/internal/service/cloudbroker/rg/schema.go @@ -119,10 +119,6 @@ func dataSourceRgSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, - "register_computes": { - Type: schema.TypeBool, - Computed: true, - }, "resource_limits": { Type: schema.TypeList, Computed: true, @@ -1621,10 +1617,6 @@ func dataSourceRgListDeletedSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, - "register_computes": { - Type: schema.TypeBool, - Computed: true, - }, "resource_limits": { Type: schema.TypeList, Computed: true, @@ -1895,10 +1887,6 @@ func dataSourceRgListSchemaMake() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, - "register_computes": { - Type: schema.TypeBool, - Computed: true, - }, "resource_limits": { Type: schema.TypeList, Computed: true, @@ -2292,14 +2280,6 @@ func resourceRgSchemaMake() map[string]*schema.Schema { Description: "IP address on the external netowrk to request when def_net_type=PRIVATE and ext_net_id is not 0", }, - "register_computes": { - Type: schema.TypeBool, - Optional: true, - Computed: true, - // Default: false, - Description: "Register computes in registration system", - }, - "uniq_pools": { Type: schema.TypeList, Computed: true, @@ -2395,7 +2375,7 @@ func resourceRgSchemaMake() map[string]*schema.Schema { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{"hugepages", "numa", "cpupin", "vfnic"}, true), + ValidateFunc: validation.StringInSlice([]string{"hugepages", "numa", "cpupin", "vfnic", "dpdk", "changemac"}, true), }, }, diff --git a/internal/service/cloudbroker/sep/data_available_sep_and_pools_list.go b/internal/service/cloudbroker/sep/data_available_sep_and_pools_list.go new file mode 100644 index 0000000..f67355d --- /dev/null +++ b/internal/service/cloudbroker/sep/data_available_sep_and_pools_list.go @@ -0,0 +1,72 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Sergey Kisil, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "context" + + "github.com/google/uuid" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" +) + +func DataSourceAvailableSEPAndPoolsListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + sepList, err := utilityAvailableSEPAndPoolsListCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + id := uuid.New() + d.SetId(id.String()) + + flattenAvailableSEPList(d, sepList) + + return nil +} + +func DataSourceAvailableSEPAndPoolsList() *schema.Resource { + return &schema.Resource{ + SchemaVersion: 1, + + ReadContext: DataSourceAvailableSEPAndPoolsListRead, + + Timeouts: &schema.ResourceTimeout{ + Read: &constants.Timeout30s, + Default: &constants.Timeout60s, + }, + + Schema: dataSourceAvailableSEPListSchemaMake(), + } +} diff --git a/internal/service/cloudbroker/sep/data_source_sep_template.go b/internal/service/cloudbroker/sep/data_source_sep_template.go new file mode 100644 index 0000000..375a152 --- /dev/null +++ b/internal/service/cloudbroker/sep/data_source_sep_template.go @@ -0,0 +1,71 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "context" + + "github.com/google/uuid" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" +) + +func dataSourceSepTemplateRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + sepTemplate, err := utilitySepTemplateCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + id := uuid.New() + d.SetId(id.String()) + + d.Set("sep_template", sepTemplate) + + return nil +} + +func DataSourceSepTemplate() *schema.Resource { + return &schema.Resource{ + SchemaVersion: 1, + + ReadContext: dataSourceSepTemplateRead, + + Timeouts: &schema.ResourceTimeout{ + Read: &constants.Timeout30s, + Default: &constants.Timeout60s, + }, + + Schema: dataSourceSepTemplateSchemaMake(), + } +} diff --git a/internal/service/cloudbroker/sep/flattens.go b/internal/service/cloudbroker/sep/flattens.go index dc8231c..9eb4478 100644 --- a/internal/service/cloudbroker/sep/flattens.go +++ b/internal/service/cloudbroker/sep/flattens.go @@ -147,3 +147,39 @@ func flattenSepConsumptionPools(bp *sep.RecordConsumption) []map[string]interfac } return sh } + +func flattenAvailableSEPList(d *schema.ResourceData, sepList *sep.ListAvailableSEP) { + d.Set("items", flattenSEPDataList(sepList.Data)) + d.Set("entry_count", sepList.EntryCount) +} + +func flattenSEPDataList(sepDataList []sep.SEPData) []map[string]interface{} { + sh := make([]map[string]interface{}, 0) + + for _, sepData := range sepDataList { + temp := map[string]interface{}{ + "sep_id": sepData.SEPID, + "sep_name": sepData.SEPName, + "sep_type": sepData.SEPType, + "pools": flattenPoolList(sepData.Pools), + } + sh = append(sh, temp) + } + + return sh +} + +func flattenPoolList(pools []sep.Pool) []map[string]interface{} { + sh := make([]map[string]interface{}, 0) + + for _, pool := range pools { + temp := map[string]interface{}{ + "name": pool.Name, + "types": pool.Types, + "system": pool.System, + } + sh = append(sh, temp) + } + + return sh +} diff --git a/internal/service/cloudbroker/sep/schema.go b/internal/service/cloudbroker/sep/schema.go index 2778de4..9dbc8bf 100644 --- a/internal/service/cloudbroker/sep/schema.go +++ b/internal/service/cloudbroker/sep/schema.go @@ -1,6 +1,9 @@ package sep -import "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) func dataSourceSepCSchemaMake() map[string]*schema.Schema { return map[string]*schema.Schema{ @@ -101,6 +104,27 @@ func dataSourceSepConfigSchemaMake() map[string]*schema.Schema { } } +func dataSourceSepTemplateSchemaMake() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "sep_type": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"hitachi", "dorado", "tatlin", "shared", "local", "des"}, false), + Description: "type of sep", + }, + "lang": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"ru", "en"}, false), + Description: "language", + }, + "sep_template": { + Type: schema.TypeString, + Computed: true, + }, + } +} + func dataSourceSepConsumptionSchemaMake() map[string]*schema.Schema { return map[string]*schema.Schema{ "sep_id": { @@ -698,3 +722,74 @@ func resourceSepConfigSchemaMake() map[string]*schema.Schema { }, } } + +func dataSourceAvailableSEPListSchemaMake() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "account_id": { + Type: schema.TypeInt, + Required: true, + Description: "Account ID", + }, + "rg_id": { + Type: schema.TypeInt, + Optional: true, + Description: "Resource group ID", + }, + "entry_count": { + Type: schema.TypeInt, + Computed: true, + Description: "Number of available SEP entries", + }, + "items": { + Type: schema.TypeList, + Computed: true, + Description: "List of available SEPs", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "sep_id": { + Type: schema.TypeInt, + Computed: true, + Description: "SEP ID", + }, + "sep_name": { + Type: schema.TypeString, + Computed: true, + Description: "SEP name", + }, + "sep_type": { + Type: schema.TypeString, + Computed: true, + Description: "SEP type", + }, + "pools": { + Type: schema.TypeList, + Computed: true, + Description: "List of pools in the SEP", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Computed: true, + Description: "Pool name", + }, + "types": { + Type: schema.TypeList, + Computed: true, + Description: "List of pool types", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "system": { + Type: schema.TypeBool, + Computed: true, + Description: "Is system pool", + }, + }, + }, + }, + }, + }, + }, + } +} diff --git a/internal/service/cloudbroker/sep/utility_available_sep_and_pools_list.go b/internal/service/cloudbroker/sep/utility_available_sep_and_pools_list.go new file mode 100644 index 0000000..dfba782 --- /dev/null +++ b/internal/service/cloudbroker/sep/utility_available_sep_and_pools_list.go @@ -0,0 +1,63 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Sergey Kisil, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "context" + + log "github.com/sirupsen/logrus" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func utilityAvailableSEPAndPoolsListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*sep.ListAvailableSEP, error) { + c := m.(*controller.ControllerCfg) + req := sep.ListAvailableSEPAndPoolsRequest{} + + if AccountID, ok := d.GetOk("account_id"); ok { + req.AccountID = uint64(AccountID.(int)) + } + if RGID, ok := d.GetOk("rg_id"); ok { + req.RGID = RGID.(uint64) + } + + log.Debugf("utilityAvailableSEPAndPoolsListCheckPresence: load sep and pools list") + sepList, err := c.CloudBroker().SEP().ListAvailableSEPAndPools(ctx, req) + if err != nil { + return nil, err + } + + return sepList, nil +} diff --git a/internal/service/cloudbroker/sep/utility_sep_template.go b/internal/service/cloudbroker/sep/utility_sep_template.go new file mode 100644 index 0000000..e8b3b2b --- /dev/null +++ b/internal/service/cloudbroker/sep/utility_sep_template.go @@ -0,0 +1,59 @@ +/* +Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package sep + +import ( + "context" + + log "github.com/sirupsen/logrus" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func utilitySepTemplateCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (string, error) { + c := m.(*controller.ControllerCfg) + req := sep.GetTemplateRequest{ + SepType: d.Get("sep_type").(string), + Language: d.Get("lang").(string), + } + + log.Debugf("utilitySepTemplateCheckPresence: load sep template") + sepTemplate, err := c.CloudBroker().SEP().GetTemplate(ctx, req) + + if err != nil { + return "", err + } + + return sepTemplate, nil +} diff --git a/internal/service/cloudbroker/vins/schema.go b/internal/service/cloudbroker/vins/schema.go index 4660520..27f55e5 100644 --- a/internal/service/cloudbroker/vins/schema.go +++ b/internal/service/cloudbroker/vins/schema.go @@ -1237,6 +1237,11 @@ func dataSourceVinsListSchemaMake() map[string]*schema.Schema { Optional: true, Description: "sort by one of supported fields, format +|-(field)", }, + "status": { + Type: schema.TypeString, + Optional: true, + Description: "sort by status", + }, "page": { Type: schema.TypeInt, Optional: true, diff --git a/internal/service/cloudbroker/vins/utility_vins_list.go b/internal/service/cloudbroker/vins/utility_vins_list.go index 1b9d2a4..dfeb964 100644 --- a/internal/service/cloudbroker/vins/utility_vins_list.go +++ b/internal/service/cloudbroker/vins/utility_vins_list.go @@ -66,6 +66,9 @@ func utilityVinsListCheckPresence(ctx context.Context, d *schema.ResourceData, m if sortBy, ok := d.GetOk("sort_by"); ok { req.SortBy = sortBy.(string) } + if status, ok := d.GetOk("status"); ok { + req.Status = status.(string) + } if page, ok := d.GetOk("page"); ok { req.Page = uint64(page.(int)) } diff --git a/samples/README.md b/samples/README.md index 19d8cac..0159123 100644 --- a/samples/README.md +++ b/samples/README.md @@ -87,6 +87,7 @@ - rg_resource_consumption_get - rg_resource_consumption_list - rg_usage + - sep_and_pools_available_list - snapshot_list - stack - stack_list @@ -223,6 +224,7 @@ - cb_rg_resource_consumption_list - cb_rg_usage - cb_sep + - cb_sep_and_pools_available_list - cb_sep_config - cb_sep_consumption - cb_sep_disk_list @@ -269,6 +271,7 @@ - cb_rg - cb_sep - cb_sep_config + - cb_sep_template - cb_user - cb_vfpool - cb_vins diff --git a/samples/cloudapi/account/data_account/main.tf b/samples/cloudapi/account/data_account/main.tf index 3f29cce..675c830 100644 --- a/samples/cloudapi/account/data_account/main.tf +++ b/samples/cloudapi/account/data_account/main.tf @@ -3,7 +3,7 @@ Получение информации об аккаунте */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_audits_list/main.tf b/samples/cloudapi/account/data_account_audits_list/main.tf index 786c5c7..b698a0e 100644 --- a/samples/cloudapi/account/data_account_audits_list/main.tf +++ b/samples/cloudapi/account/data_account_audits_list/main.tf @@ -3,7 +3,7 @@ Получение информации об использовании аккаунта */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_computes_list/main.tf b/samples/cloudapi/account/data_account_computes_list/main.tf index 21d8adb..12f4e3b 100644 --- a/samples/cloudapi/account/data_account_computes_list/main.tf +++ b/samples/cloudapi/account/data_account_computes_list/main.tf @@ -3,7 +3,7 @@ Получение списка computes, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_consumed_units/main.tf b/samples/cloudapi/account/data_account_consumed_units/main.tf index a599f9f..a0a93cf 100644 --- a/samples/cloudapi/account/data_account_consumed_units/main.tf +++ b/samples/cloudapi/account/data_account_consumed_units/main.tf @@ -3,7 +3,7 @@ Получение информации о расходуемых ресурсах аккаута */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_consumed_units_by_type/main.tf b/samples/cloudapi/account/data_account_consumed_units_by_type/main.tf index 3af3554..3868713 100644 --- a/samples/cloudapi/account/data_account_consumed_units_by_type/main.tf +++ b/samples/cloudapi/account/data_account_consumed_units_by_type/main.tf @@ -7,7 +7,7 @@ 3. Удалять образ */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -41,10 +41,12 @@ data "decort_account_consumed_units_by_type" "acubt" { #тип - строка #значения: #CU_C - кол-во виртуальных cpu ядер - #CU_M - кол-во RAM в МБ - #CU_D - кол-в используемой дисковой памяти, в ГБ + #CU_M - кол-во RAM, в МБ + #CU_D - кол-во используемой дисковой памяти, в ГБ #CU_I - кол-во публичных ip адресов #CU_NP - кол-во полученного/отданного трафика, в ГБ + #CU_DM - кол-во доступной дисковой памяти, в ГБ + #gpu_units - кол-во GPU cu_type = "CU_C" } diff --git a/samples/cloudapi/account/data_account_deleted_list/main.tf b/samples/cloudapi/account/data_account_deleted_list/main.tf index 5f0caec..e5b24fc 100644 --- a/samples/cloudapi/account/data_account_deleted_list/main.tf +++ b/samples/cloudapi/account/data_account_deleted_list/main.tf @@ -4,7 +4,7 @@ Информация предоставляется только по аккаунтам, удаленным без флага permanently */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_disks_list/main.tf b/samples/cloudapi/account/data_account_disks_list/main.tf index 5330826..fa01087 100644 --- a/samples/cloudapi/account/data_account_disks_list/main.tf +++ b/samples/cloudapi/account/data_account_disks_list/main.tf @@ -3,7 +3,7 @@ Получение информации о дисках, которые использует аккаунт */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -59,7 +59,7 @@ data "decort_account_disks_list" "adl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudapi/account/data_account_flipgroups_list/main.tf b/samples/cloudapi/account/data_account_flipgroups_list/main.tf index c1b00f4..16334d3 100644 --- a/samples/cloudapi/account/data_account_flipgroups_list/main.tf +++ b/samples/cloudapi/account/data_account_flipgroups_list/main.tf @@ -3,7 +3,7 @@ Получение информации о flipgroups, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -68,7 +68,7 @@ data "decort_account_flipgroups_list" "afgl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudapi/account/data_account_get_resource_consumption/main.tf b/samples/cloudapi/account/data_account_get_resource_consumption/main.tf index 09765a8..7d28dc7 100644 --- a/samples/cloudapi/account/data_account_get_resource_consumption/main.tf +++ b/samples/cloudapi/account/data_account_get_resource_consumption/main.tf @@ -2,7 +2,7 @@ Получение списка текущего потребления ресурсов аккаунта */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_list/main.tf b/samples/cloudapi/account/data_account_list/main.tf index d5900ea..ea6d65b 100644 --- a/samples/cloudapi/account/data_account_list/main.tf +++ b/samples/cloudapi/account/data_account_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных аккаунтов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_reserved_units/main.tf b/samples/cloudapi/account/data_account_reserved_units/main.tf index 1fa6640..3966bef 100644 --- a/samples/cloudapi/account/data_account_reserved_units/main.tf +++ b/samples/cloudapi/account/data_account_reserved_units/main.tf @@ -3,7 +3,7 @@ Получение информации о зарезервированных вычислительных мощностях */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_resource_consumption_list/main.tf b/samples/cloudapi/account/data_account_resource_consumption_list/main.tf index e68a75c..9f0e666 100644 --- a/samples/cloudapi/account/data_account_resource_consumption_list/main.tf +++ b/samples/cloudapi/account/data_account_resource_consumption_list/main.tf @@ -2,7 +2,7 @@ Получение списка текущего потребления ресурсов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -26,7 +26,7 @@ provider "decort" { } data "decort_account_resource_consumption_list" "rc_list" { - #Нет входных параметров + #нет входных параметров } output "test" { diff --git a/samples/cloudapi/account/data_account_rg_list/main.tf b/samples/cloudapi/account/data_account_rg_list/main.tf index 6443835..231fed4 100644 --- a/samples/cloudapi/account/data_account_rg_list/main.tf +++ b/samples/cloudapi/account/data_account_rg_list/main.tf @@ -3,7 +3,7 @@ Получение информации о ресурных группах, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_templates_list/main.tf b/samples/cloudapi/account/data_account_templates_list/main.tf index 364c463..286b221 100644 --- a/samples/cloudapi/account/data_account_templates_list/main.tf +++ b/samples/cloudapi/account/data_account_templates_list/main.tf @@ -3,7 +3,7 @@ Получение информации о шаблонах, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/data_account_vins_list/main.tf b/samples/cloudapi/account/data_account_vins_list/main.tf index a604aa2..2c0a6cc 100644 --- a/samples/cloudapi/account/data_account_vins_list/main.tf +++ b/samples/cloudapi/account/data_account_vins_list/main.tf @@ -3,7 +3,7 @@ Получение списка vins, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/account/resource_account/main.tf b/samples/cloudapi/account/resource_account/main.tf index 3e69a16..3a1a815 100644 --- a/samples/cloudapi/account/resource_account/main.tf +++ b/samples/cloudapi/account/resource_account/main.tf @@ -2,12 +2,11 @@ Пример использования Ресурса account Ресурс позволяет: -1. Создавать аккаунт -2. Редактировать аккаунт -3. Удалять аккаунт +1. Редактировать аккаунт +2. Удалять аккаунт */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -22,9 +21,9 @@ terraform { */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true @@ -34,39 +33,41 @@ resource "decort_account" "a" { #имя аккаунта #обязательный параметр #тип - строка - #используется при создании и редактировании аккаунта + #используется при обновлении account_name = "new_my_account" - #имя пользователя - создателя аккаунта - #обязательный параметр + #описание + #опциональный параметр #тип - строка - username = "username@decs3o" + #используется при обновлении + #desc = "description" #доступность аккаунта - #необязательный параметр + #опциональный параметр #тип - булев - #может применяться при редактировании аккаунта + #используется при обновлении #enable = true - #id аккаунта, позволяет сформировать .tfstate, если аккаунт имеет в платформе - #необязательный параметр + #id аккаунта, позволяет сформировать .tfstate, если аккаунт имеется на платформе + #опциональный параметр #тип - целое число - account_id = 11111 + #account_id = 11111 #отправлять ли на электронную почту письмо о доступе - #необязательный параметр + #опциональный параметр #тип - булев - #применяется при создании аккаунта и редактировании аккаунта + #используется при обновлении #send_access_emails = true #добавление/редактирование/удаление пользователей, к которым привязан аккаунт - #необязательный параметр + #опциональный параметр + #используется при обновлении #тип - объект, кол-во таких объектов не ограничено - /*users { + #users { #id пользователя #обязательный параметр #тип - строка - user_id = "username_2@decs3o" + #user_id = "username_2@decs3o" #тип доступа пользователя #обязательный параметр @@ -75,68 +76,74 @@ resource "decort_account" "a" { #R - чтение #RCX - запись #ARCXDU - админ - access_type = "R" + #access_type = "R" + #} - } - users { - user_id = "username_1@decs3o" - access_type = "R" - }*/ + #users { + #user_id = "username_1@decs3o" + #access_type = "R" + #} #ограничение используемых ресурсов - #необязательный параметр + #опциональный параметр #тип - объект - #используется при создании и редактировании - resource_limits { + #используется при обновлении + #resource_limits { #кол-во используемых ядер cpu - #необязательный параметр + #опциональный параметр #тип - целое число #если установлена -1 - кол-во неограничено - cu_c = 2 + #cu_c = 2 - #кол-во используемой RAM в МБ - #необязательный параметр + #кол-во используемой RAM, в МБ + #опциональный параметр #тип - целое число #если установлена -1 - кол-во неограничено - cu_m = 1024 + #cu_m = 1024 #размер дисков, в ГБ - #необязательный параметр + #опциональный параметр #тип - целое число #если установлена -1 - размер неограничено - cu_d = 23 + #cu_d = 23 #кол-во используемых публичных IP - #необязательный параметр + #опциональный параметр #тип - целое число #если установлена -1 - кол-во неограничено - cu_i = 2 + #cu_i = 2 #ограничения на кол-во передачи данных, в ГБ - #необязательный параметр + #опциональный параметр #тип - целое число #если установлена -1 - кол-во неограничено - cu_np = 2 + #cu_np = 2 #кол-во графических процессоров - #необязательный параметр + #опциональный параметр #тип - целое число #если установлена -1 - кол-во неограничено - gpu_units = 2 - } + #gpu_units = 2 + #} + + #причина отключения аккаунта + #опциональный параметр + #тип - строка + #используется при обновлении + #reason = "something_reason" #восстановление аккаунта - #необязательный параметр + #опциональный параметр #тип - булев #применяется к удаленным аккаунтам - #по-умолчанию - false + #по умолчанию - false #restore = false - #мгновеное удаление аккаунта, если да - то аккаунт невозможно будет восстановить - #необязательный параметр + #флаг для удаления аккаунта, без возможности восстановления + #опциональный параметр #тип - булев - #используется при удалении аккаунта - #по-умолчанию - false + #используется при удалении + #по умолчанию - false #permanently = true } diff --git a/samples/cloudapi/audit/data_audit/main.tf b/samples/cloudapi/audit/data_audit/main.tf index f2d590f..2885e67 100644 --- a/samples/cloudapi/audit/data_audit/main.tf +++ b/samples/cloudapi/audit/data_audit/main.tf @@ -3,7 +3,7 @@ Получение аудита по guid */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/bservice/data_bservice/main.tf b/samples/cloudapi/bservice/data_bservice/main.tf index 107a5b8..ffce499 100644 --- a/samples/cloudapi/bservice/data_bservice/main.tf +++ b/samples/cloudapi/bservice/data_bservice/main.tf @@ -3,7 +3,7 @@ Получение информации о basic service */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/bservice/data_bservice_deleted_list/main.tf b/samples/cloudapi/bservice/data_bservice_deleted_list/main.tf index 94f8344..5f195d2 100644 --- a/samples/cloudapi/bservice/data_bservice_deleted_list/main.tf +++ b/samples/cloudapi/bservice/data_bservice_deleted_list/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных basic service */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/bservice/data_bservice_group/main.tf b/samples/cloudapi/bservice/data_bservice_group/main.tf index cbd4aa0..eda6c89 100644 --- a/samples/cloudapi/bservice/data_bservice_group/main.tf +++ b/samples/cloudapi/bservice/data_bservice_group/main.tf @@ -3,7 +3,7 @@ Получение информации о вычислительной группе, принадлежащей basic service */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/bservice/data_bservice_list/main.tf b/samples/cloudapi/bservice/data_bservice_list/main.tf index c02d53b..6a0574a 100644 --- a/samples/cloudapi/bservice/data_bservice_list/main.tf +++ b/samples/cloudapi/bservice/data_bservice_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных базовых сервисов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/bservice/data_bservice_snapshot_list/main.tf b/samples/cloudapi/bservice/data_bservice_snapshot_list/main.tf index f9058f5..33b4ec6 100644 --- a/samples/cloudapi/bservice/data_bservice_snapshot_list/main.tf +++ b/samples/cloudapi/bservice/data_bservice_snapshot_list/main.tf @@ -3,7 +3,7 @@ Получение списка снимков состояний basic service */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/bservice/resource_bservice/main.tf b/samples/cloudapi/bservice/resource_bservice/main.tf index c90581f..7a95033 100644 --- a/samples/cloudapi/bservice/resource_bservice/main.tf +++ b/samples/cloudapi/bservice/resource_bservice/main.tf @@ -1,6 +1,6 @@ /* Пример использования -Ресурса cdrom image +Ресурса bservice Ресурс позволяет: 1. Создавать basic service 2. Редактировать basic service @@ -10,7 +10,7 @@ 6. Удалять снимки состояний */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -25,78 +25,78 @@ terraform { */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true } resource "decort_bservice" "b" { - #имя сервиса + #имя basic service #обязательный параметр #тип - строка + #используется при создании service_name = "my_test_bservice_sn" #id ресурсной группы #обязательный параметр #тип - целое число + #используется при создании rg_id = 11111 #доступность сервиса - #необязательный параметр + #опциональный параметр #тип - булев - #используется при редактировании ресурса - #по-умолачанию - false + #используется при создании и обновлении + #по умолчанию - false #enable = true #снимок состояния - #необязательный параметр + #опциональный параметр #тип - объект - #используется при редактировании ресурса + #используется при обновлении #может быть несколько в ресурсе - /* - snapshots { + #snapshots { #имя снимка состояния #обязательный параметр #тип - строка - label = "test_snapshot" + #label = "test_snapshot" #восстановление сервиса из снимка состояния - #необязательный параметр + #опциональный параметр #тип - булев - #по-умолчанию - false + #по умолчанию - false #восстановление происходит только при переключении с false на true - rollback = false - } - */ + #rollback = false + #} #старт сервиса - #необязательный параметр + #опциональный параметр #тип - булев - #используется при редактировании ресурса - #по-умолачанию - false + #используется при создании и обновлении + #по умолчанию - false #start = false #восстановление сервиса после удаления - #необязательный параметр + #опциональный параметр #тип - булев - #используется при редактировании ресурса - #по-умолачанию - false - #restore = true + #используется при обновлении + #по умолчанию - false + #restore = true #мгновенное удаление сервиса без права восстановления - #необязательный параметр + #опциональный параметр #тип - булев - #используется при удалении ресурса - #по-умолачанию - false + #используется при удалении + #по умолчанию - false #permanently = true #id сервиса, позволяет сформировать .tfstate, если сервис есть в платформе - #необязательный параметр + #опциональный параметр #тип - булев - #используется при создании ресурса + #используется при создании #service_id = 11111 } diff --git a/samples/cloudapi/bservice/resource_bservice_group/main.tf b/samples/cloudapi/bservice/resource_bservice_group/main.tf index 9945833..fa13e2e 100644 --- a/samples/cloudapi/bservice/resource_bservice_group/main.tf +++ b/samples/cloudapi/bservice/resource_bservice_group/main.tf @@ -7,7 +7,7 @@ 3. Удалять группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -22,9 +22,9 @@ terraform { */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true @@ -34,131 +34,148 @@ resource "decort_bservice_group" "bsg" { #id basic service #обязательный параметр #тип - целое число + #используется при создании service_id = 444444 #название группы #обязательный параметр #тип - строка + #используется при создании и обновлении compgroup_name = "tf_group_rename" #id группы - #необязательный параметр + #опциональный параметр #тип - целое число - #применяется при редактировании группы, либо при создании .tfstate - файла, если группа имеется в плафторме - compgroup_id = 33333 + #применяется при создании .tfstate - файла, если группа имеется в плафторме + #compgroup_id = 33333 #кол-во вычислительных ресурсов #обязательный параметр #тип - целое число - #используется так же для редактирования группы + #используется при создании и обновлении comp_count = 1 #кол-во ядер на выч. ресурс #обязательный параметр #тип - целое число - #используется так же для редактирования группы + #используется при создании и обновлении cpu = 2 #кол-во оперативной памяти на выч. ресурс, в МБ #обязательный параметр #тип - целое число - #используется так же для редактирования группы + #используется при создании и обновлении ram = 256 #размер диска для выч. ресурса, в ГБ #обязательный параметр #тип - целое число - #используется так же для редактирования группы + #используется при создании и обновлении disk = 11 #id образа диска #обязательный параметр - #тип - целое число + #используется при создании image_id = 2222 #драйвер #обязательный параметр #тип - строка - driver = "kvm_x86" + #используется при создании + driver = "KVM_X86" #id Storage endpoint provider - #необязательный параметр + #опциональный параметр #тип - целое число - sep_id = 3 + #используется при создании + #sep_id = 3 - #Наименование SEPPool используется если установлен sepId, также может быть пустым - #необязательный параметр + #наименование SEPPool, используется если установлен sepId, также может быть пустым + #опциональный параметр #тип - строка - sep_pool = "name" + #используется при создании + #sep_pool = "name" #тег группы - #необязательный параметр + #опциональный параметр #тип - строка - #используется при создании и редактировании ресурса - role = "tf_test_changed" + #используется при создании и обновлении + #role = "tf_test_changed" #id сетей extnet - #необязательный параметр + #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #должен быть использован vins или extnets - extnets = [1111, 2222] + #extnets = [1111, 2222] #id сетей vinses - #необязательный параметр + #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #должен быть использован vins или extnets - vinses = [1111, 2222] + #vinses = [1111, 2222] #время таймуата перед стартом - #необязательный параметр + #опциональный параметр #тип - целое число - #используется при создании ресурса - timeout_start = 0 + #используется при создании + #timeout_start = 0 - #Перечень аргументов для cloud-init создаваемым группам узлов Worker - #необязательный параметр + #перечень аргументов для cloud-init создаваемым группам узлов Worker + #опциональный параметр #тип - файл в формате YAML - cloud_init = file("initconfig.tftpl") + #используется при создании + #cloud_init = file("initconfig.tftpl") + + #чипсет для добавляемых виртуальных машин + #возможные значения - i440fx, Q35 + #по умолчанию - i440fx + #опциональный параметр + #тип - строка + #используется при создании + #chipset = "i440fx" #id групп родителей - #необязательный параметр + #опциональный параметр #тип - массив целых чисел - #используется при редактировании ресурса + #используется при создании и обновлении #parents = [2222] #принудительное обновление параметров выч. мощностей (ram,disk,cpu) и имени группы - #необязательный параметр + #опциональный параметр #тип - булев - #используется при редактировании ресурса - #по-умолчанию - false + #используется при обновлении + #по умолчанию - false #force_update = true #старт/стоп вычислительных мощностей - #необязательный параметр + #опциональный параметр #тип - булев - #используется при редактировании ресурса - #по-умолчанию - false + #используется при создании и обновлении + #по умолчанию - false #start = false #принудительная остановка вычислительных мощностей - #необязательный параметр + #опциональный параметр #тип - булев - #используется при редактировании и остановке группы - #по-умолчанию - false + #используется при обновлении + #по умолчанию - false #force_stop = false #удаление вычислительных мощностей - #необязательный параметр + #опциональный параметр #тип - массив целых чисел - #используется при редактировании + #используется при обновлении #remove_computes = [32287] #режим увеличения числа выч. мощностей - #необязательный параметр + #опциональный параметр #тип - строка #используется в связке с comp_count при редактировании группы #возможные варианты - RELATIVE и ABSOLUTE - #по-умолчанию - "RELATIVE" + #используется при обновлении + #по умолчанию - "RELATIVE" #mode = "RELATIVE" } diff --git a/samples/cloudapi/disk/data_disk/main.tf b/samples/cloudapi/disk/data_disk/main.tf index 25eb620..f314c16 100644 --- a/samples/cloudapi/disk/data_disk/main.tf +++ b/samples/cloudapi/disk/data_disk/main.tf @@ -3,7 +3,7 @@ Получение данных диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/disk/data_disk_list/main.tf b/samples/cloudapi/disk/data_disk_list/main.tf index 392db8b..4c9a128 100644 --- a/samples/cloudapi/disk/data_disk_list/main.tf +++ b/samples/cloudapi/disk/data_disk_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -84,7 +84,7 @@ data "decort_disk_list" "dl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudapi/disk/data_disk_list_deleted/main.tf b/samples/cloudapi/disk/data_disk_list_deleted/main.tf index 7ac5c9e..c70eafe 100644 --- a/samples/cloudapi/disk/data_disk_list_deleted/main.tf +++ b/samples/cloudapi/disk/data_disk_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка дисков со статусом DELETED */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -70,7 +70,7 @@ data "decort_disk_list_deleted" "dld" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudapi/disk/data_disk_list_types/main.tf b/samples/cloudapi/disk/data_disk_list_types/main.tf index 6882571..5134e1a 100644 --- a/samples/cloudapi/disk/data_disk_list_types/main.tf +++ b/samples/cloudapi/disk/data_disk_list_types/main.tf @@ -3,7 +3,7 @@ Получение списка типов дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/disk/data_disk_list_types_detailed/main.tf b/samples/cloudapi/disk/data_disk_list_types_detailed/main.tf index 4edb839..5b32509 100644 --- a/samples/cloudapi/disk/data_disk_list_types_detailed/main.tf +++ b/samples/cloudapi/disk/data_disk_list_types_detailed/main.tf @@ -3,7 +3,7 @@ Получение списка типов дисков, но детально */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/disk/data_disk_list_unattached/main.tf b/samples/cloudapi/disk/data_disk_list_unattached/main.tf index a0a36f5..901b2a0 100644 --- a/samples/cloudapi/disk/data_disk_list_unattached/main.tf +++ b/samples/cloudapi/disk/data_disk_list_unattached/main.tf @@ -3,7 +3,7 @@ Получение списка доступных неприсоединенных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/disk/data_disk_replication/main.tf b/samples/cloudapi/disk/data_disk_replication/main.tf index 15543e7..7093d38 100644 --- a/samples/cloudapi/disk/data_disk_replication/main.tf +++ b/samples/cloudapi/disk/data_disk_replication/main.tf @@ -3,7 +3,7 @@ Получение статуса репликации диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -29,12 +29,12 @@ provider "decort" { data "decort_disk_replication" "dr" { - #ID диска для которого подключена репликация + #id диска для которого подключена репликация #обязательный параметр #тип - целое число disk_id = 49304 - #ID реплики диска + #id реплики диска #обязательный параметр #тип - целое число replica_disk_id = 1213 diff --git a/samples/cloudapi/disk/data_disk_snapshot/main.tf b/samples/cloudapi/disk/data_disk_snapshot/main.tf index 880cd9a..d017764 100644 --- a/samples/cloudapi/disk/data_disk_snapshot/main.tf +++ b/samples/cloudapi/disk/data_disk_snapshot/main.tf @@ -3,7 +3,7 @@ Получение конкретного снапшота */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,12 +27,12 @@ provider "decort" { } data "decort_disk_snapshot" "ds" { - #Номер диска + #номер диска #обязательный параметр #тип - целое число disk_id = 20100 - #Ярлык диска + #ярлык диска #обязательный параметр #тип - строка label = "label" diff --git a/samples/cloudapi/disk/data_disk_snapshot_list/main.tf b/samples/cloudapi/disk/data_disk_snapshot_list/main.tf index fc05f81..7f47e43 100644 --- a/samples/cloudapi/disk/data_disk_snapshot_list/main.tf +++ b/samples/cloudapi/disk/data_disk_snapshot_list/main.tf @@ -3,7 +3,7 @@ Получение списка снапшотов диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,7 +27,7 @@ provider "decort" { } data "decort_disk_snapshot_list" "ds" { - #Номер диска + #номер диска #обязательный параметр #тип - целое число disk_id = 20100 diff --git a/samples/cloudapi/disk/resource_disk/main.tf b/samples/cloudapi/disk/resource_disk/main.tf index 0af19ce..00d3ef4 100644 --- a/samples/cloudapi/disk/resource_disk/main.tf +++ b/samples/cloudapi/disk/resource_disk/main.tf @@ -3,7 +3,7 @@ Получение информации об уже существующем диске. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,37 +30,38 @@ resource "decort_disk" "acl" { #id владельца диска #обязательный параметр #тип - целое число + #используется при создании account_id = 88366 #имя диска #обязательный параметр #тип - строка + #используется при создании и обновлении disk_name = "super-disk-re" - #размер диска в гигабайтах + #размер диска, в ГБ #обязательный параметр #тип - целое число + #используется при создании и обновлении size_max = 20 - #id платформы - #обязательный параметр - #тип - целое число - gid = 212 - #флаг для отключения диска от ВМ при удалении #опциональный параметр #тип - булев - detach = false + #используется при удалении + #detach = false - #флаг для удаления реплики диска безвозвратно + #флаг для удаления диска, без возможности восстановления #опциональный параметр #тип - булев - permanently = false + #используется при удалении + #permanently = false - #Флаг, отвечающий за доступность диска дургим ресурсам + #флаг, отвечающий за доступность диска другим ресурсам #опциональный параметр #тип - строка - shareable = false + #используется при создании и обновлении + #shareable = false } diff --git a/samples/cloudapi/disk/resource_disk_snapshot/main.tf b/samples/cloudapi/disk/resource_disk_snapshot/main.tf index ac8184c..890466f 100644 --- a/samples/cloudapi/disk/resource_disk_snapshot/main.tf +++ b/samples/cloudapi/disk/resource_disk_snapshot/main.tf @@ -3,7 +3,7 @@ Ресурс снапшота диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,17 +30,20 @@ resource "decort_disk_snapshot" "ds" { #номер диска #обязательный параметр #тип - целое число + #используется при создании disk_id = 20100 #ярлык диска #обязательный параметр #тип - строка + #используется при создании label = "label" #флаг rollback #опциональный параметр #тип - булев - rollback = false + #используется при создании и обновлении + #rollback = false } output "test" { diff --git a/samples/cloudapi/dpdknet/data_dpdknet/main.tf b/samples/cloudapi/dpdknet/data_dpdknet/main.tf index 59ec65c..095d964 100644 --- a/samples/cloudapi/dpdknet/data_dpdknet/main.tf +++ b/samples/cloudapi/dpdknet/data_dpdknet/main.tf @@ -3,7 +3,7 @@ Получение данных диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/dpdknet/data_dpdknet_list/main.tf b/samples/cloudapi/dpdknet/data_dpdknet_list/main.tf index 1ae79a3..bff81ae 100644 --- a/samples/cloudapi/dpdknet/data_dpdknet_list/main.tf +++ b/samples/cloudapi/dpdknet/data_dpdknet_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -63,7 +63,7 @@ data "decort_dpdknet_list" "dl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudapi/extnet/data_extnet/main.tf b/samples/cloudapi/extnet/data_extnet/main.tf index dec5e1d..d981de8 100644 --- a/samples/cloudapi/extnet/data_extnet/main.tf +++ b/samples/cloudapi/extnet/data_extnet/main.tf @@ -3,7 +3,7 @@ Получение информации о сети */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/extnet/data_extnet_computes_list/main.tf b/samples/cloudapi/extnet/data_extnet_computes_list/main.tf index 292160d..871bccb 100644 --- a/samples/cloudapi/extnet/data_extnet_computes_list/main.tf +++ b/samples/cloudapi/extnet/data_extnet_computes_list/main.tf @@ -3,7 +3,7 @@ Получение информации о вычислительных ресурсах, использующих сеть аккаунта */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -48,7 +48,7 @@ data "decort_extnet_computes_list" "ecl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudapi/extnet/data_extnet_default/main.tf b/samples/cloudapi/extnet/data_extnet_default/main.tf index 79b03a3..c983e3f 100644 --- a/samples/cloudapi/extnet/data_extnet_default/main.tf +++ b/samples/cloudapi/extnet/data_extnet_default/main.tf @@ -1,9 +1,9 @@ /* Пример использования -Получение информации о сети по-умолчанию +Получение информации о сети по умолчанию */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,7 +27,7 @@ provider "decort" { } data "decort_extnet_default" "ed" { - + #нет входных параметров } output "test" { diff --git a/samples/cloudapi/extnet/data_extnet_list/main.tf b/samples/cloudapi/extnet/data_extnet_list/main.tf index ad98a7c..9ea584a 100644 --- a/samples/cloudapi/extnet/data_extnet_list/main.tf +++ b/samples/cloudapi/extnet/data_extnet_list/main.tf @@ -3,7 +3,7 @@ Получение списка сетей */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -28,7 +28,7 @@ provider "decort" { data "decort_extnet_list" "el" { #id аккаунта для фильтрации результата - #необязательный параметр + #опциональный параметр #тип - целое число #account_id = 1111111 @@ -68,7 +68,7 @@ data "decort_extnet_list" "el" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 @@ -77,6 +77,11 @@ data "decort_extnet_list" "el" { #опциональный параметр #тип - целое число #size = 1 + + #имя моста openVswitch + #опциональный параметр + #тип - строка + #ovs_bridge = "key" } output "test" { diff --git a/samples/cloudapi/extnet/data_extnet_reserved_ip_list/main.tf b/samples/cloudapi/extnet/data_extnet_reserved_ip_list/main.tf index 25db22e..f0e1365 100644 --- a/samples/cloudapi/extnet/data_extnet_reserved_ip_list/main.tf +++ b/samples/cloudapi/extnet/data_extnet_reserved_ip_list/main.tf @@ -3,7 +3,7 @@ Получение информации о зарезервированных IP адресах или пуле адресов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/flipgroup/data_flipgroup/main.tf b/samples/cloudapi/flipgroup/data_flipgroup/main.tf index e32c31f..89dbf9f 100644 --- a/samples/cloudapi/flipgroup/data_flipgroup/main.tf +++ b/samples/cloudapi/flipgroup/data_flipgroup/main.tf @@ -3,7 +3,7 @@ Получение группы виртуальных машин по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/flipgroup/data_flipgroup_list/main.tf b/samples/cloudapi/flipgroup/data_flipgroup_list/main.tf index 0dc80f4..59c61b4 100644 --- a/samples/cloudapi/flipgroup/data_flipgroup_list/main.tf +++ b/samples/cloudapi/flipgroup/data_flipgroup_list/main.tf @@ -3,7 +3,7 @@ Получение группы виртуальных машин, доступных текущему пользователю */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -57,7 +57,7 @@ data "decort_flipgroup_list" "fg" { #тип - строка #by_ip = "1.1.1.1.1" - #id ресурсной группы, используется для фильтрации + #фильтр по id ресурсной группы #опциональный параметр #тип - целое число #если не задан - выводятся все доступные данные diff --git a/samples/cloudapi/flipgroup/resource_flipgroup/main.tf b/samples/cloudapi/flipgroup/resource_flipgroup/main.tf index 2740b09..627af6f 100644 --- a/samples/cloudapi/flipgroup/resource_flipgroup/main.tf +++ b/samples/cloudapi/flipgroup/resource_flipgroup/main.tf @@ -6,7 +6,7 @@ 3. Добавить/удалить клиентов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,42 +33,50 @@ resource "decort_flipgroup" "fg" { #id аккаунта #обязательный параметр #тип - целое число + #используется при создании account_id = 999 #наименование Flipgroup #обязательный параметр #тип - строка + #используется при создании и обновлении name = "flipgroup_name" #тип сети (EXTNET, ViNS) #обязательный параметр #тип - строка + #используется при создании net_type = "EXTNET" #id сети #обязательный параметр #тип - целое число + #используется при создании net_id = 13 #тип клиентов (в данный момент поддерживается только тип 'compute') #обязательный параметр #тип - строка + #используется при создании client_type = "compute" #ip-адрес #опциональный параметр #тип - строка - ip = "127.0.0.1" + #используется при создании + #ip = "127.0.0.1" #список клиентов, прикрепленных к флипгруппе #опциональный параметр #тип - массив целых чисел - client_ids = [11269] + #используется при создании и обновлении + #client_ids = [11269] #описание флипгруппы #опциональный параметр #тип - строка - desc = "CHANGED" + #используется при создании и обновлении + #desc = "CHANGED" } output "fg_out" { diff --git a/samples/cloudapi/image/data_image/main.tf b/samples/cloudapi/image/data_image/main.tf index a98e3df..f70f345 100644 --- a/samples/cloudapi/image/data_image/main.tf +++ b/samples/cloudapi/image/data_image/main.tf @@ -3,7 +3,7 @@ Получение информации об образе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,7 +34,7 @@ data "decort_image" "image" { #показывать ли информацию об удаленном образе #опциональный параметр - #тип - булево значение + #тип - булев #по умолчанию - false #show_all = false } diff --git a/samples/cloudapi/image/data_image_list/main.tf b/samples/cloudapi/image/data_image_list/main.tf index 6d6130e..5ba93e8 100644 --- a/samples/cloudapi/image/data_image_list/main.tf +++ b/samples/cloudapi/image/data_image_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных образов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/image/resource_image/main.tf b/samples/cloudapi/image/resource_image/main.tf index 7d71f19..78d5f89 100644 --- a/samples/cloudapi/image/resource_image/main.tf +++ b/samples/cloudapi/image/resource_image/main.tf @@ -5,7 +5,7 @@ 1. Управлять образом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -32,77 +32,93 @@ resource "decort_image" "img" { #наименование образа #обязательный параметр #тип - строка + #используется при создании и обновлении name = "image_name" #драйверы компьютов, подходящие для данного образа #обязательный параметр #тип - массив строк + #используется при создании drivers = ["KVM_X86"] #тип образа (linux, windows и др.) #обязательный параметр #тип - строка + #используется при создании type = "linux" #прямая ссылка на образ #обязательный параметр #тип - строка + #используется при создании url = "https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-virt-3.17.3-x86_64.iso" #тип загрузчика (bios/uefi) #обязательный параметр #тип - строка + #используется при создании boot_type = "bios" #id аккаунта #обязательный параметр #тип - целое число + #используется при создании account_id = 138 #поддержка hot resize #опциональный параметр #тип - булев - hot_resize = true + #используется при создании + #hot_resize = true #юзернейм для образа #опциональный параметр #тип - целое число - username = "userx" + #используется при создании + #username = "userx" #пароль для образа #опциональный параметр #тип - строка - password = "passx" + #используется при создании + #password = "passx" #юзернейм для загрузки binary media #опциональный параметр #тип - строка - username_dl = "userxdl" + #используется при создании + #username_dl = "userxdl" #пароль для загрузки binary media #опциональный параметр #тип - строка - password_dl = "passxdl" + #используется при создании + #password_dl = "passxdl" #storage endpoint provider ID #опциональный параметр #тип - целое число - sep_id = 1 + #используется при создании + #sep_id = 1 #pool для образа #опциональный параметр #тип - строка - pool_name = "pool" + #используется при создании + #pool_name = "pool" #архитектура образа (X86_64) #опциональный параметр #тип - строка - architecture = "X86_64" + #используется при создании + #architecture = "X86_64" - #наименование сетевого интерфейса для вашего компьютера с Linux, eth - встроенный, ens - pci слот + #наименование сетевого интерфейса для вашего компьютера с Linux + #eth - встроенный, ens - pci слот #опциональный параметр #тип - строка - network_interface_naming = "ens" + #используется при создании + #network_interface_naming = "ens" } output "img_out" { diff --git a/samples/cloudapi/image/resource_image_from_blank_compute/main.tf b/samples/cloudapi/image/resource_image_from_blank_compute/main.tf index 606ec7b..ac8083c 100644 --- a/samples/cloudapi/image/resource_image_from_blank_compute/main.tf +++ b/samples/cloudapi/image/resource_image_from_blank_compute/main.tf @@ -5,7 +5,7 @@ 3. Удалять ресурс */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,68 +31,63 @@ provider "decort" { resource "decort_image_from_blank_compute" "img" { #id виртуальной машины, созданной как blank #обязательный параметр - #используется для создания образа #тип - целое число + #используется при создании compute_id = 1234 #наименование образа #обязательный параметр - #используется для создания и обновления образа #тип - строка + #используется при создании и обновлении name = "image_name" #тип загрузчика (bios/uefi) #обязательный параметр - #используется для создания образа #тип - строка + #используется при создании boot_type = "bios" #тип образа (linux, windows и др.) #обязательный параметр - #используется для создания образа #тип - строка + #используется при создании type = "linux" #юзернейм для образа #опциональный параметр - #используется для создания образа #тип - строка + #используется при создании #username = "userx" #пароль для образа #опциональный параметр - #используется для создания образа #тип - строка + #используется при создании #password = "passx" #id аккаунта #опциональный параметр - #используется для создания образа #тип - целое число + #используется при создании #account_id = 138 - #storage endpoint provider ID - #опциональный параметр - #используется для создания образа - #тип - целое число - #sep_id = 1 - #pool для образа #опциональный параметр - #используется для создания образа #тип - строка + #используется при создании #pool_name = "pool" #поддержка hot resize #опциональный параметр - #используется для создания образа #тип - булев + #используется при создании #hot_resize = true #флаг для создания образа в асинхронном режиме #опциональный параметр - #дефолтное значение - false + #по умолчанию - false #тип - булев + #используется при создании #async_mode = true } diff --git a/samples/cloudapi/image/resource_image_from_platform_disk/main.tf b/samples/cloudapi/image/resource_image_from_platform_disk/main.tf index 5699ada..fab98eb 100644 --- a/samples/cloudapi/image/resource_image_from_platform_disk/main.tf +++ b/samples/cloudapi/image/resource_image_from_platform_disk/main.tf @@ -5,7 +5,7 @@ 3. Удалять ресурс */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,90 +30,85 @@ provider "decort" { resource "decort_image_from_platform_disk" "img" { #id диска - #используется для создания образа #обязательный параметр #тип - целое число + #используется при создании disk_id = 1234 #наименование образа - #используется для создания и обновления образа #обязательный параметр #тип - строка + #используется при создании и обновлении name = "image_name" #тип загрузчика - #используется для создания образа #обязательный параметр #возможные значения - bios, uefi #тип - строка + #используется при создании boot_type = "bios" #тип образа (linux, windows и др.) - #используется для создания образа #обязательный параметр #тип - строка + #используется при создании type = "linux" #архитектура образа - #используется для создания образа #обязательный параметр #возможные значения - X86_64 #тип - строка + #используется при создании architecture = "X86_64" #драйверы компьютов, подходящие для данного образа - #используется для создания образа #обязательный параметр #тип - массив строк + #используется при создании drivers = ["KVM_X86"] #имя пользователя для образа - #используется для создания образа #опциональный параметр #тип - строка + #используется при создании #username = "userx" #пароль для образа - #используется для создания образа #опциональный параметр #тип - строка + #используется при создании #password = "passx" #id аккаунта - #используется для создания образа #опциональный параметр #тип - целое число + #используется при создании #account_id = 138 - #id сепа для образа - #используется для создания образа - #опциональный параметр - #тип - целое число - #sep_id = 1 - #pool для образа - #используется для создания образа #опциональный параметр #тип - строка + #используется при создании #pool_name = "pool" #поддержка hot resize - #используется для создания образа #опциональный параметр #тип - булев + #используется при создании #hot_resize = true #флаг загрузочного образа - #используется для создания образа #опциональный параметр #по умолчанию - true #тип - булев + #используется при создании #bootable = true #флаг для создания образа в асинхронном режиме #опциональный параметр #по умолчанию - false #тип - булев + #используется при создании #async_mode = true } diff --git a/samples/cloudapi/image/resource_image_virtual/main.tf b/samples/cloudapi/image/resource_image_virtual/main.tf index e68e3f1..5df18d4 100644 --- a/samples/cloudapi/image/resource_image_virtual/main.tf +++ b/samples/cloudapi/image/resource_image_virtual/main.tf @@ -7,7 +7,7 @@ 2. Удалять image virtual */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,14 +33,14 @@ provider "decort" { resource "decort_image_virtual" "iv" { #имя виртуального образа #обязательный параметр - #при изменении - обновляет имя виртуального образа #тип - строка + #используется при создании и обновлении name = "iv-name" - #ID реального образа, на который будет ссылаться виртуальный + #id реального образа, на который будет ссылаться виртуальный #обязательный параметр - #при изменении - ссылается на другой реальный образ #тип - целое число + #используется при создании и обновлении link_to = 123 } diff --git a/samples/cloudapi/k8s/data_k8ci_list/main.tf b/samples/cloudapi/k8s/data_k8ci_list/main.tf index b692460..509d842 100644 --- a/samples/cloudapi/k8s/data_k8ci_list/main.tf +++ b/samples/cloudapi/k8s/data_k8ci_list/main.tf @@ -3,7 +3,7 @@ Получение информации о k8ci */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,56 +27,69 @@ provider "decort" { } data "decort_k8ci_list" "k8ci_list" { - #поиск по ID + #фильтр по id кластера #опциональный параметр #тип - целое число - by_id = 12 + #by_id = 100 - #поиск по наименованию + #фильтр по имени кластера #опциональный параметр #тип - строка - name = "name" + #name = "test" - #поиск по статус + #фильтр по ip #опциональный параметр #тип - строка - status = "status" + #ip_address = "test" - #поиск по worker драйверу + #фильтр по id ресурсной группы #опциональный параметр - #тип - строка - worker_driver = "wdriver" + #тип - целое число + #rg_id = 100 + + #фильтр по id балансировщика нагрузки + #опциональный параметр + #тип - целое число + #lb_id = 100 + + #фильтр по id ресурсной группы + #опциональный параметр + #тип - целое число + #bservice_id = 100 - #поиск по master драйверу + #фильтр по статусу #опциональный параметр #тип - строка - master_driver = "wdriver" + #status = "ENABLED" - #поиск по network плагину + #фильтр по техническому статусу #опциональный параметр #тип - строка - network_plugin = "flannel" + #tech_status = "STOPPED" - #показать выключенные K8CI + #включение удаленных k8s в результат #опциональный параметр #тип - булев - include_disabled = true + #если не задан - выводятся все неудаленные данные + #includedeleted = true #сортировка по одному из поддерживаемых полей #опциональный параметр #тип - строка #формат - "+поле" по возрастанию / "-поле" по убыванию - sort_by = "+name" + #sort_by = "+name" - #номер страницы + #номер страницы для отображения #опциональный параметр #тип - целое число - page = 1 + #если не задан - выводятся все доступные данные + #page = 1 #размер страницы #опциональный параметр #тип - целое число - size = 5 + #если не задан - выводятся все доступные данные + #size = 1 } output "output_k8ci" { diff --git a/samples/cloudapi/k8s/data_k8s/main.tf b/samples/cloudapi/k8s/data_k8s/main.tf index 370e8e9..8ea2b03 100644 --- a/samples/cloudapi/k8s/data_k8s/main.tf +++ b/samples/cloudapi/k8s/data_k8s/main.tf @@ -3,7 +3,7 @@ Получение информации о k8s кластере */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/data_k8s_computes/main.tf b/samples/cloudapi/k8s/data_k8s_computes/main.tf index 020f722..9daa4a5 100644 --- a/samples/cloudapi/k8s/data_k8s_computes/main.tf +++ b/samples/cloudapi/k8s/data_k8s_computes/main.tf @@ -3,7 +3,7 @@ Получения информации о виртуальных машинах кластера */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/data_k8s_list/main.tf b/samples/cloudapi/k8s/data_k8s_list/main.tf index c18c034..70f805b 100644 --- a/samples/cloudapi/k8s/data_k8s_list/main.tf +++ b/samples/cloudapi/k8s/data_k8s_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных кластеров */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/data_k8s_list_deleted/main.tf b/samples/cloudapi/k8s/data_k8s_list_deleted/main.tf index b5e3feb..b455c42 100644 --- a/samples/cloudapi/k8s/data_k8s_list_deleted/main.tf +++ b/samples/cloudapi/k8s/data_k8s_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных кластеров */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/data_k8s_wg/main.tf b/samples/cloudapi/k8s/data_k8s_wg/main.tf index 30d23fe..e666e48 100644 --- a/samples/cloudapi/k8s/data_k8s_wg/main.tf +++ b/samples/cloudapi/k8s/data_k8s_wg/main.tf @@ -3,7 +3,7 @@ Получение информации о k8s кластере */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/data_k8s_wg_cloud_init/main.tf b/samples/cloudapi/k8s/data_k8s_wg_cloud_init/main.tf index e0ceb59..da8b924 100644 --- a/samples/cloudapi/k8s/data_k8s_wg_cloud_init/main.tf +++ b/samples/cloudapi/k8s/data_k8s_wg_cloud_init/main.tf @@ -3,7 +3,7 @@ Получение информации о мета данных рабочей группы k8s кластера */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/data_k8s_wg_list/main.tf b/samples/cloudapi/k8s/data_k8s_wg_list/main.tf index b7e2480..bfb5985 100644 --- a/samples/cloudapi/k8s/data_k8s_wg_list/main.tf +++ b/samples/cloudapi/k8s/data_k8s_wg_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных групп воркеров в кластере */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/k8s/resource_k8s/main.tf b/samples/cloudapi/k8s/resource_k8s/main.tf index fec659c..af2f829 100644 --- a/samples/cloudapi/k8s/resource_k8s/main.tf +++ b/samples/cloudapi/k8s/resource_k8s/main.tf @@ -6,7 +6,7 @@ 2. Управлять кластером */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -32,284 +32,311 @@ provider "decort" { resource "decort_k8s" "cluster" { #имя кластера #обязательный параметр - #при изменении - обновляет имя кластера #тип - строка + #используется при создании и обновлении name = "tftest" #id resource group #обязательный параметр #тип - целое число + #используется при создании rg_id = 776 #id catalogue item #обязательный параметр #тип - целое число + #используется при создании k8sci_id = 9 #сетевой плагин #обязательный параметр #тип - строка + #используется при создании network_plugin = "flannel" #имя для первой worker group, созданной в кластере #обязательный параметр #тип - строка + #используется при создании wg_name = "workers" - # список labels для дефолтной worker группы - # опциональный параметр - # тип - массив строк - labels = ["key1=val1", "key2=val2"] + #список labels для дефолтной worker группы + #опциональный параметр + #тип - массив строк + #используется при создании + #labels = ["key1=val1", "key2=val2"] - # список annotations для дефолтной worker группы - # опциональный параметр - # В скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers - # тип - массив строк - annotations = ["key1=val1", "key2=val2"] + #список annotations для дефолтной worker группы + #опциональный параметр + #в скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers + #тип - массив строк + #используется при создании + #annotations = ["key1=val1", "key2=val2"] - # список taints для дефолтной worker группы - # опциональный параметр - # В скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers - # тип - массив строк - taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"] + #список taints для дефолтной worker группы + #опциональный параметр + #в скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers + #тип - массив строк + #используется при создании + #taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"] #настройка мастер node или nodes #опциональный параметр #максимальное кол-во элементов - 1 #тип - список нод - masters { + #используется при создании + #masters { #кол-во node (1, 3 или 5) #обязательный параметр #тип - целое число - num = 1 + #num = 1 #кол-во cpu #обязательный параметр #тип - целое число - cpu = 2 + #cpu = 2 - #кол-во RAM в Мбайтах + #кол-во RAM, в МБ #обязательный параметр #тип - целое число - ram = 2048 + #ram = 2048 - #размер диска в Гбайтах + #размер диска, в ГБ #обязательный параметр #тип - целое число - disk = 10 + #disk = 10 #идентификатор SEP для создания загрузочных дисков для master узлов #опциональный параметр #тип - целое число - sep_id = 3 + #sep_id = 3 - #наименование MasterSEPPool используется если установлен master sepId, также может быть пустым + #наименование MasterSEPPool, используется если установлен master sepId, также может быть пустым #опциональный параметр #тип - строка - sep_pool = "data_01" - } + #sep_pool = "data_01" + #} #настройка worker группы #опциональный параметр - #Первая указанная воркер-группа должна соответствовать изначально созданной вместе с кластером. + #первая указанная воркер-группа должна соответствовать изначально созданной вместе с кластером. + #используется при создании и обновлении #labels, annotations, taints для дефолтной worker группы указываются в корне ресурса при создании кластера. - workers { + #workers { #имя группы #обязательный параметр #тип - строка - name = "test" + #name = "test" #кол-во node #обязательный параметр #тип - целое число - num = 1 + #num = 1 #кол-во cpu #обязательный параметр #тип - целое число - cpu = 2 + #cpu = 2 - #кол-во RAM в Мбайтах + #кол-во RAM, в МБ #обязательный параметр #тип - целое число - ram = 2048 + #ram = 2048 - #размер диска в Гбайтах + #размер диска, в ГБ #обязательный параметр #тип - целое число - disk = 10 + #disk = 10 - #Идентификатор SEP + #идентификатор SEP #опциональный параметр #тип - целое число - sep_id = 1010 + #sep_id = 1010 - #Имя SEP pool'a + #имя SEP pool'a #опциональный параметр #тип - строка - sep_pool = "data01" + #sep_pool = "data01" #тип эмулируемой системы #опциональный параметр #тип - строка - chipset = "i440fx" - } + #chipset = "i440fx" + #} - #...Далее можно создавать произвольное кол-во дополнительных worker групп + #далее можно создавать произвольное кол-во дополнительных worker групп #labels, annotations и taints для последующих групп указываются непосредственно в блоке workers - workers { + #workers { #наименование worker группы #обязательный параметр #тип - строка - name = "additional_wg" + #name = "additional_wg" #кол-во node #обязательный параметр #тип - целое число - num = 2 + #num = 2 #кол-во cpu #обязательный параметр #тип - целое число - cpu = 2 + #cpu = 2 - #кол-во RAM в Мбайтах + #кол-во RAM, в МБ #обязательный параметр #тип - целое число - ram = 4096 + #ram = 4096 - #размер диска в Гбайтах + #размер диска, в ГБ #обязательный параметр #тип - целое число - disk = 10 + #disk = 10 #идентификатор SEP #опциональный параметр #тип - целое число - sep_id = 1010 + #sep_id = 1010 #имя SEP pool'a #опциональный параметр #тип - строка - sep_pool = "data01" + #sep_pool = "data01" #тип эмулируемой системы #опциональный параметр #тип - строка - chipset = "i440fx" + #chipset = "i440fx" #список лейблов #опциональный параметр #тип - массив строк - labels = ["label1=value1", "label2=value2"] + #labels = ["label1=value1", "label2=value2"] #список аннотаций #опциональный параметр #тип - массив строк - annotations = ["key1=value1", "key2=value2"] + #annotations = ["key1=value1", "key2=value2"] #список taints #опциональный параметр #тип - массив строк - taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"] - } + #taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"] + #} #id extnet #опциональный параметр #тип - целое число - extnet_id = 0 + #используется при создании + #extnet_id = 0 #id vins #опциональный параметр #тип - целое число - vins_id = 1234 + #используется при создании + #vins_id = 1234 #создать Kubernetes cluster с masters nodes с подключенным LB #опциональный параметр - #тип - булев - with_lb = true - - # пользовательские значения sysctl для LB - # опциональный параметр - # тип - список мап - lb_sysctl_params = [{ key1 = "value1", key2 = "value2" }] - - # позволяет создать схему отказоустройчивой LB - # опциональный параметр - # тип - булев - ha_mode = true - - # дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes; - # возможность взаимодействовать с кластером по FQDN - # параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard) - # опциональный параметр - # тип - массив строк - additional_sans = ["192.168.201.0", "192.168.201.1"] - - # используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере - # это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации - # опциональный параметр - # тип - строка - init_config = "{JSON string}" - - # используется для определения глобальных настроек и конфигураций для всего кластера - # он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера - # опциональный параметр - # тип - строка - cluster_config = "{JSON string}" - - # используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера - # он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet - # опциональный параметр - # тип - строка - kubelet_config = "{JSON string}" - - # используется для настройки поведения и параметров присоединения node к кластеру - # он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy - # опциональный параметр - # тип - строка - kube_proxy_config = "{JSON string}" - - # используется для настройки поведения и параметров присоединения node к кластеру - # он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата - # опциональный параметр - # тип - строка - join_config = "{JSON string}" - - # описание кластера - # опциональный параметр - # тип - строка - desc = "description" - - # перечень аргументов для cloud-init создаваемым группам узлов Worker - # необязательный параметр - # тип - файл с форматом в виде yaml - cloud_init = file("initconfig.tftpl") - - # при создании кластре использовать подключение только к сети ExtNet - # опциональный параметр - # тип - булев - extnet_only = true - - # добавить ssl-сертификат в формате x509 pem - # необязательный параметр - # тип - файл с форматом в виде x509 pem - oidc_cert = file("ca.crt") + #тип - булев + #используется при создании + #with_lb = true + + #пользовательские значения sysctl для LB + #опциональный параметр + #тип - список мап + #используется при создании и обновлении + #lb_sysctl_params = [{ key1 = "value1", key2 = "value2" }] + + #создать схему отказоустойчивой LB + #опциональный параметр + #тип - булев + #используется при создании + #ha_mode = true + + #дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes; + #возможность взаимодействовать с кластером по FQDN + #параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard) + #опциональный параметр + #тип - массив строк + #используется при создании + #additional_sans = ["192.168.201.0", "192.168.201.1"] + + #используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере + #это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации + #опциональный параметр + #тип - строка + #используется при создании + #init_config = "{JSON string}" + + #используется для определения глобальных настроек и конфигураций для всего кластера + #он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера + #опциональный параметр + #тип - строка + #используется при создании + #cluster_config = "{JSON string}" + + #используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера + #он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet + #опциональный параметр + #тип - строка + #используется при создании + #kubelet_config = "{JSON string}" + + #используется для настройки поведения и параметров присоединения node к кластеру + #он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy + #опциональный параметр + #тип - строка + #используется при создании + #kube_proxy_config = "{JSON string}" + + #используется для настройки поведения и параметров присоединения node к кластеру + #он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата + #опциональный параметр + #тип - строка + #используется при создании + #join_config = "{JSON string}" + + #описание кластера + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #desc = "description" + + #перечень аргументов для cloud-init создаваемым группам узлов Worker + #опциональный параметр + #тип - файл с форматом в виде yaml + #используется при создании + #cloud_init = file("initconfig.tftpl") + + #при создании кластера использовать подключение только к сети ExtNet + #опциональный параметр + #тип - булев + #используется при создании + #extnet_only = true + + #добавить ssl-сертификат в формате x509 pem + #опциональный параметр + #тип - файл с форматом в виде x509 pem + #используется при создании + #oidc_cert = file("ca.crt") #тип эмулируемой системы #опциональный параметр #тип - строка - chipset = "i440fx" + #используется при создании + #chipset = "i440fx" - # запуск,остановка кластера - # опциональный параметр - # тип - булев - start = true + #запуск,остановка кластера + #опциональный параметр + #тип - булев + #используется при создании и обновлении + #start = true - # команда destroy удаляет кластер без возможности восстановления - # опциональный параметр - # тип - булев - permanently = true + #флаг для удаления кластера, без возможности восстановления + #опциональный параметр + #тип - булев + #используется при удалении + #permanently = true } diff --git a/samples/cloudapi/k8s/resource_k8s_cp/main.tf b/samples/cloudapi/k8s/resource_k8s_cp/main.tf index 172ee9a..a291a11 100644 --- a/samples/cloudapi/k8s/resource_k8s_cp/main.tf +++ b/samples/cloudapi/k8s/resource_k8s_cp/main.tf @@ -8,7 +8,7 @@ 4. Изменить кол-во ВМ в мастер-узле */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -35,139 +35,165 @@ resource "decort_k8s_cp" "cp" { #название кластера #обязательный параметр #тип - строка + #используется при создании и обновлении name = "k8s-cp" - #K8sCI ID + #k8sCI ID #обязательный параметр #тип - целое число + #используется при создании k8sci_id = 55 #плагин сети (flannel, weavenet или calico) #обязательный параметр #тип - строка + #используется при создании network_plugin = "flannel" #id ресурсной группы #обязательный параметр #тип - целое число + #используется при создании rg_id = 1387 #кол-во ядер мастер-узла #опциональный параметр #тип - целое число - cpu = 2 + #используется при создании + #cpu = 2 - #объем RAM мастер-узла + #объем RAM мастер-узла, в МБ #опциональный параметр #тип - целое число - ram = 2048 + #используется при создании + #ram = 2048 #кол-во ВМ мастер-узла (1, 3 или 5) #опциональный параметр #тип - целое число - num = 1 + #используется при создании и обновлении + #num = 1 - #размер диска мастер-узла + #размер диска мастер-узла, в ГБ #опциональный параметр #тип - целое число - disk = 10 + #используется при создании + #disk = 10 #описание кластера #опциональный параметр #тип - строка - desc = "" + #используется при создании и обновлении + #desc = "" #id extnet #опциональный параметр #тип - целое число - extnet_id = 0 + #используется при создании + #extnet_id = 0 #id vins #опциональный параметр #тип - целое число - vins_id = 1234 + #используется при создании + #vins_id = 1234 #storage Endpoint ID #опциональный параметр #тип - целое число - sep_id = 0 + #используется при создании + #sep_id = 0 - #SEP Pool + #sep pool #опциональный параметр #тип - строка - sep_pool = "pool" + #используется при создании + #sep_pool = "pool" #старт/стоп кластера #опциональный параметр #тип - булев - start = true + #используется при создании и обновлении + #start = true #создать кластер с/без балансировщика нагрузки #опциональный параметр #тип - булев - with_lb = true + #используется при создании + #with_lb = true - #позволяет создать схему отказоустройчивой LB + #создать схему отказоустойчивой LB #опциональный параметр #тип - булев - ha_mode = true + #используется при создании + #ha_mode = true #дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes; #возможность взаимодействовать с кластером по FQDN #параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard) #опциональный параметр #тип - массив строк - additional_sans = ["192.168.201.0","192.168.201.1"] + #используется при создании + #additional_sans = ["192.168.201.0","192.168.201.1"] #используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере #это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации #опциональный параметр #тип - строка - init_config = "{JSON string}" + #используется при создании + #init_config = "{JSON string}" #используется для определения глобальных настроек и конфигураций для всего кластера #он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера #опциональный параметр #тип - строка - cluster_config = "{JSON string}" + #используется при создании + #cluster_config = "{JSON string}" #используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера #он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet #опциональный параметр #тип - строка - kubelet_config = "{JSON string}" + #используется при создании + #kubelet_config = "{JSON string}" #используется для настройки поведения и параметров присоединения node к кластеру #он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy #опциональный параметр #тип - строка - kube_proxy_config = "{JSON string}" + #используется при создании + #kube_proxy_config = "{JSON string}" #используется для настройки поведения и параметров присоединения node к кластеру #он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата #опциональный параметр #тип - строка - join_config = "{JSON string}" + #используется при создании + #join_config = "{JSON string}" #при создании кластре использовать подключение только к сети ExtNet #опциональный параметр #тип - булев - extnet_only = true + #используется при создании + #extnet_only = true #добавить ssl-сертификат в формате x509 pem - #необязательный параметр + #опциональный параметр #тип - файл с форматом в виде x509 pem - oidc_cert = file("ca.crt") + #используется при создании + #oidc_cert = file("ca.crt") #пользовательские значения sysctl для LB #опциональный параметр #тип - список мап - lb_sysctl_params = [{ key1 = "value1", key2 = "value2" }] + #используется при создании и обновлении + #lb_sysctl_params = [{ key1 = "value1", key2 = "value2" }] - #команда destroy удаляет кластер без возможности восстановления + #флаг для удаления кластера, без возможности восстановления #опциональный параметр #тип - булев - permanently = true + #используется при удалении + #permanently = true } diff --git a/samples/cloudapi/k8s/resource_k8s_wg/main.tf b/samples/cloudapi/k8s/resource_k8s_wg/main.tf index 49ab513..62770b3 100644 --- a/samples/cloudapi/k8s/resource_k8s_wg/main.tf +++ b/samples/cloudapi/k8s/resource_k8s_wg/main.tf @@ -5,7 +5,7 @@ 1. Создавать wg */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,48 +33,55 @@ resource "decort_k8s_wg" "wg" { #id экземпляра k8s #обязательный параметр #тип - целое число + #используется при создании k8s_id = 1234 #имя worker group #обязательный параметр #тип - строка + #используется при создании name = "workers-2" - #количество worker node для создания + #количество worker node #опциональный параметр #тип - целое число - #по - умолчанию - 1 - num = 2 + #по умолчанию - 1 + #используется при создании и обновлении + #num = 2 #количество cpu для 1 worker node #опциональный параметр #тип - целое число - #по - умолчанию - 1 - cpu = 1 + #по умолчанию - 1 + #используется при создании + #cpu = 1 - #количество RAM для одной worker node в Мбайтах + #количество RAM для одной worker node, в МБ #опциональный параметр #тип - целое число - #по-умолчанию - 1024 - ram = 1024 + #по умолчанию - 1024 + #используется при создании + #ram = 1024 #тип эмулируемой системы #опциональный параметр #тип - строка - chipset = "i440fx" + #используется при создании + #chipset = "i440fx" - #размер загрузочного диска для worker node, в Гбайтах + #размер загрузочного диска для worker node, в ГБ #опциональный параметр #тип - целое число - #по - умолчанию - 0 + #по умолчанию - 0 #если установлен параметр 0, то размер диска будет равен размеру образа - disk = 10 + #используется при создании + #disk = 10 - #Перечень аргументов для cloud-init для виртуальных машин worker групп + #перечень аргументов для cloud-init для виртуальных машин worker групп #опциональный параметр #тип - файл с форматом в виде yaml - #используется при создании и обновлении ресурса - cloud_init = file("initconfig.tftpl") + #используется при создании и обновлении + #cloud_init = file("initconfig.tftpl") } diff --git a/samples/cloudapi/kvmvm/data_kvmvm/main.tf b/samples/cloudapi/kvmvm/data_kvmvm/main.tf index 8b7074c..41307ee 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm/main.tf @@ -3,7 +3,7 @@ Получение данных о compute (виртуальной машине) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_audits/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_audits/main.tf index fd2507e..b8a627c 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_audits/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_audits/main.tf @@ -3,7 +3,7 @@ Получение данных об аудитах compute (виртуальной машине) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_get_audits/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_get_audits/main.tf index 8a5f0b7..0a19488 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_get_audits/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_get_audits/main.tf @@ -3,7 +3,7 @@ Получение данных об аудитах compute (виртуальной машине) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_get_console_url/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_get_console_url/main.tf index 9c3fdab..e6e00ad 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_get_console_url/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_get_console_url/main.tf @@ -3,7 +3,7 @@ Получение url compute (виртуальной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_get_log/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_get_log/main.tf index 1593237..14ea3c4 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_get_log/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_get_log/main.tf @@ -3,7 +3,7 @@ Получение логов compute (виртуальной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_list/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_list/main.tf index 84cbfc4..ed09158 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_list/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_list/main.tf @@ -3,7 +3,7 @@ Получение данных об списке compute (виртуальных машин) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -80,7 +80,7 @@ data "decort_kvmvm_list" "compute_list" { #флаг влючения в результат удаленных балансироващиков нагрузки #опциональный параметр #тип - булев - #значение по-умолчанию - false + #по умолчанию - false #если не задан - выводятся все доступные неудаленные балансировщики #includedeleted = true diff --git a/samples/cloudapi/kvmvm/data_kvmvm_list_deleted/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_list_deleted/main.tf index e56e2c3..853f999 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_list_deleted/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение данных о списке удаленных compute (виртуальных машин) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_pci_device_list/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_pci_device_list/main.tf index fde4f0e..f7c25e0 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_pci_device_list/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_pci_device_list/main.tf @@ -3,7 +3,7 @@ Получение данных о списке подключенных устройств (PCI) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_pfw_list/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_pfw_list/main.tf index 59dda91..c1cf5cd 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_pfw_list/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_pfw_list/main.tf @@ -3,7 +3,7 @@ Получение данных об списке port forwarding compute (виртуальных машин) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_snapshot_usage/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_snapshot_usage/main.tf index 46bc66c..2755d6f 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_snapshot_usage/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_snapshot_usage/main.tf @@ -3,7 +3,7 @@ Получение информации об использовании снапшотов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_user_list/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_user_list/main.tf index 39a8997..f5a0a80 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_user_list/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_user_list/main.tf @@ -3,7 +3,7 @@ Получение данных об юзерах compute (виртуальной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/data_kvmvm_vgpu_list/main.tf b/samples/cloudapi/kvmvm/data_kvmvm_vgpu_list/main.tf index 4982a55..4f6a677 100644 --- a/samples/cloudapi/kvmvm/data_kvmvm_vgpu_list/main.tf +++ b/samples/cloudapi/kvmvm/data_kvmvm_vgpu_list/main.tf @@ -3,7 +3,7 @@ Получение данных о списке подключенных графических процессоров */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/kvmvm/resource_kvmvm/main.tf b/samples/cloudapi/kvmvm/resource_kvmvm/main.tf index 4fdf89a..cc652cc 100644 --- a/samples/cloudapi/kvmvm/resource_kvmvm/main.tf +++ b/samples/cloudapi/kvmvm/resource_kvmvm/main.tf @@ -7,7 +7,7 @@ 3. Удалять compute */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -22,9 +22,9 @@ terraform { */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true @@ -32,425 +32,499 @@ provider "decort" { resource "decort_kvmvm" "comp" { #имя compute - #может быть изменен #обязательный параметр #тип - строка + #используется при создании и обновлении name = "test-tf-compute-update-new" #id resource group #обязательный параметр #тип - целое число + #используется при создании rg_id = 1111 #тип драйвера для compute #обязательный параметр #тип - строка #возможные значения: "SVA_KVM_X86", "KVM_X86" + #используется при создании driver = "KVM_X86" #число cpu #обязательный параметр #тип - целое число + #используется при создании и обновлении cpu = 1 #кол-во оперативной памяти, МБ #обязательный параметр #тип - целое число + #используется при создании и обновлении ram = 2048 #тип эмулируемой системы #опциональный параметр #тип - строка #возможные значения: "i440fx", "Q35" - chipset = "i440fx" + #по умолчанию - "Q35" + #используется при создании и обновлении + #chipset = "i440fx" #размер загрузочного диска #опциональный параметр #тип - целое число - boot_disk_size = 20 + #используется при создании и обновлении + #boot_disk_size = 20 #id сепа для boot диска #опциональный параметр #тип - целое число - sep_id = 1 + #используется при создании + #sep_id = 1 #название пула #опциональный параметр #тип - строка - pool = "data02" + #используется при создании + #pool = "data02" #конфигурация cloud init #опциональный параметр #тип - файл в формате JSON - cloud_init = file("initconfig.tftpl") + #используется при создании + #cloud_init = file("initconfig.tftpl") #описание compute #опциональный параметр #тип - строка - description = "test update description in tf words update" + #используется при создании и обновлении + #description = "test update description in tf words update" #id образа диска для создания compute #опциональный параметр #тип - целое число - image_id = 111 + #используется при создании и обновлении + #image_id = 111 #создание без загрузочного диска в остановленном состоянии #опциональный параметр #если значение равно True, параметры image_id, boot_disk_size, sep_id, pool игнорируются #тип - булев - without_boot_disk = true + #используется при создании + #without_boot_disk = true #необходимость выравнивать ВМ по NUMA #опциональный параметр #возможные значения - "none, "strict", "loose" - #значение по умолчанию - "none" + #по умолчанию - "none" #тип - строка - numa_affinity = "loose" + #используется при создании и обновлении + #numa_affinity = "loose" #необходимость запускать ВМ на выделенных CPU ядрах #опциональный параметр - #значение по умолчанию - false + #по умолчанию - false #тип - булев - cpu_pin = true + #используется при создании и обновлении + #cpu_pin = true #необходимость использовать для выделения RAM виртуальной машины Huge Pages #опциональный параметр - #значение по умолчанию - false + #по умолчанию - false #тип - булев - hp_backed = true + #используется при создании и обновлении + #hp_backed = true #список PCI девайсов #опциональный параметр #тип - массив целых чисел - pci_devices = [1,2] + #используется при создании и обновлении + #pci_devices = [1, 2] - #создание и добавление диска дял compute + #создание и добавление диска для compute #опциональный параметр #тип - список дисков - disks { - #Имя диска - #Обязательный для диска параметр + #используется при создании и обновлении + #disks { + #имя диска + #обязательный для диска параметр #тип - строка - disk_name = "disk_name" + #disk_name = "disk_name" - #Размер диска - #Обязательный для диска параметр - #тип - целоетчисло - size = 5 + #размер диска + #обязательный для диска параметр + #тип - целое число + #size = 5 #тип диска #опциональный параметр #тип - строка - disk_type = "D" + #disk_type = "D" - #id стораджа + #id сепа #опциональный параметр #тип - целое число - sep_id = 1 + #sep_id = 1 #название пула #опциональный параметр #тип - строка - pool = "data01" + #pool = "data01" #описание диска #опциональный параметр #тип - строка - desc = "" + #desc = "" #id образа #опциональный параметр #тип - целое число - image_id = 378 + #image_id = 378 #флаг для удаления диска #опциональный параметр #тип - булев - permanently = false - } + #permanently = false + #} #правила affinity #опциональный параметр #может быть один, несколько или ни одного блока #тип - блок правил - affinity_rules { + #используется при создании и обновлении + #affinity_rules { #тип правила #обязательный параметр #возможные значения - compute или node #тип - строка - topology = "compute" + #topology = "compute" #строгость правила #обязательный параметр #возможные значения - RECOMMENDED и REQUIRED #тип - строка - policy = "RECOMMENDED" + #policy = "RECOMMENDED" #режим проверки #обязательный параметр #возможные значения - ANY, EQ, NE #тип - строка - mode = "ANY" + #mode = "ANY" #ключ правила #обязательный параметр #тип - строка - key = "testkey" + #key = "testkey" #ключ правила - #необязательный параметр + #опциональный параметр #тип - строка - value = "testvalue" - } + #value = "testvalue" + #} #правила anti-affinity #опциональный параметр #может быть один, несколько или ни одного блока - # тип - список правил - anti_affinity_rules { + #тип - список правил + #используется при создании и обновлении + #anti_affinity_rules { #тип правила #обязательный параметр #возможные значения - compute или node #тип - строка - topology = "compute" + #topology = "compute" #строгость правила #обязательный параметр #возможные значения - RECOMMENDED и REQUIRED #тип - строка - policy = "RECOMMENDED" + #policy = "RECOMMENDED" #режим проверки #обязательный параметр #возможные значения - ANY, EQ, NE #тип - строка - mode = "ANY" + #mode = "ANY" #ключ правила #обязательный параметр #тип - строка - key = "testkey" + #key = "testkey" #ключ правила - #необязательный параметр + #опциональный параметр #тип -строка - value = "testvalue" - } + #value = "testvalue" + #} #установка метки для вм #опциональный параметр #тип - строка - affinity_label = "test4" + #используется при создании и обновлении + #affinity_label = "test4" #наименование системы #опциональный параметр - #используется при создании вм #по умолчанию - не задан #тип - строка - is = "" + #используется при создании + #is = "" #назначение вм #опциональный параметр - #используется при создании вм #по умолчанию - не задан #тип - строка - ipa_type = "" + #используется при создании + #ipa_type = "" #id экстра дисков #опциональный параметр #тип - список целых чисел - extra_disks = [1234, 4322, 1344] + #используется при создании и обновлении + #extra_disks = [1234, 4322, 1344] - #присоединения сетей и удаление сетей в компьюте + #присоединение сетей и удаление сетей в компьюте #опциональный параметр #тип - блок сетей - network { + #используется при создании и обновлении + #network { #тип сети #обязательный параметр #тип - строка #возможные значения - "VINS", "EXTNET", "VFNIC", "DPDK" (при выборе типа DPDK, необходимо указать hp_backed = true) - net_type = "VINS" + #net_type = "VINS" #id сети #обязательный параметр #тип - целое число - net_id = 1234 + #net_id = 1234 #ip адрес входящий в сеть #опциональный параметр #тип - строка - ip_address = "127.0.0.1" + #ip_address = "127.0.0.1" + + #mac-адрес интерфейса компьюта + #опциональный параметр + #тип - строка + #mac = "52:54:01:12:34:60" #вес сети, указывается при необходимости указания порядка подключения сетей #первой подключается сеть с наименьшим весом #сеть с нулевым или неуказанным весом имеет наименьший приоритет #опциональный параметр #тип - целое число - weight = 15 + #weight = 15 #максимальный объём данных, который может быть передан за одну итерацию #используется только с сетями типа "DPDK" #возможные значения - 1-9216 #опциональный параметр #тип - целое число - mtu = 1500 - } + #mtu = 1500 + #} #добавление и удаление тэгов #опциональный параметр #тип - блок тэгов - tags { - #Ключ для тэга - #Обязательный параметр + #используется при создании и обновлении + #tags { + #ключ для тэга + #обязательный параметр #тип - строка - key = "key" + #key = "key" #значения тэга #обязательный параметр #тип - строка - value = "value" - } + #value = "value" + #} #добавление и удаление port forwarding #опциональный параметр #тип - блок переадресации портов - port_forwarding { + #используется при создании и обновлении + #port_forwarding { #номер внешнего начального порта для правила - #Обязательный параметр + #обязательный параметр #тип - целое число - public_port_start = 2023 + #public_port_start = 2023 #номер внешнего последнего порта для правила #опциональный параметр #тип - целое число #по умолчанию - -1 - public_port_end = 2023 + #public_port_end = 2023 #номер внутреннего базового порта #обязательный параметр #тип - целое число - local_port = 80 + #local_port = 80 #сетевой протокол - #Обязательный параметр + #обязательный параметр #тип - строка - proto = "tcp" - } + #proto = "tcp" + #} #предоставить/забрать пользователю доступ к компьюту #опциональный параметр #тип - блок прав пользователя - user_access { + #используется при создании и обновлении + #user_access { #имя юзера, которому предоставляем доступ #обязательный параметр #тип - строка - username = "kasim_baybikov_1@decs3o" + #username = "kasim_baybikov_1@decs3o" #права: 'R' - только на чтение, 'RCX' - чтение/запись, 'ARCXDU' - админ #обязательный параметр #тип - строка - access_type = "ARCXDU" - } + #access_type = "ARCXDU" + #} #создать/удалить снапшот компьюта #опциональный параметр #тип - блок снапшотов - snapshot { + #используется при создании и обновлении + #snapshot { #лейбл снапшота #обязательный параметр #тип - строка - label = "label1" - } + #label = "label1" + #} #флаг для удаления снапшотов в асинхронном режиме #опциональный параметр - #дефолтное значение - false + #по умолчанию - false #тип - булев - snapshot_delete_async = true + #используется при удалении + #snapshot_delete_async = true #rollback на нужный снапшот #опциональный параметр - #Не имеет смысла при отсутсвии снапшотов + #не имеет смысла при отсутсвии снапшотов #тип - блок rollback - rollback { - #Лейбл снапшота - #Обязательный параметр + #используется при обновлении + #rollback { + #лейбл снапшота + #обязательный параметр #тип - строка - label = "label1" - } + #label = "label1" + #} #вставить/удалить СD rom #опциональный параметр #максимальное кол-во - 1 #тип - блок cd - cd { + #используется при создании и обновлении + #cd { #id образа диска CD rom #обязательный параметр #тип - целое число - cdrom_id = 344 - } + #cdrom_id = 344 + #} #добавить компьют на стэк #опциональный параметр #тип - булев - pin_to_stack = true + #используется при создании и обновлении + #pin_to_stack = true #список ядер для использования в механизме vcpupinning. Количество указанных ядер должно быть равно количеству виртуальных процессоров ВМ #игнорируется если cpu_pin=false или pin_to_stack=false #опциональный параметр #тип - массив целых чисел - preferred_cpu = [1234, 456] + #используется при создании и обновлении + #preferred_cpu = [1234, 456] #флаг для старта компьюта при рестарте ноды #опциональный параметр #тип - булев - auto_start_w_node = true + #используется при создании и обновлении + #auto_start_w_node = true #флаг доступности компьюта для проведения с ним операций #опциональный параметр #тип - булев - enabled = true + #используется при создании и обновлении + #enabled = true #pause/resume компьюта #опциональный параметр #тип - булев - pause = true + #используется при создании и обновлении + #pause = true #сделать компьют заново #опциональный параметр #тип - булев - reset = true + #используется при обновлении + #reset = true #восстановить компьют из корзины #опциональный параметр #тип - булев - restore = true + #используется при обновлении + #restore = true #флаг для редеплоя компьюта #опциональный параметр #тип - булев - force_stop = true + #используется при обновлении + #force_stop = true #флаг для ресайза компьюта #опциональный параметр #тип - булев - force_resize = true + #используется при обновлении + #force_resize = true #запуск/стоп компьюта #опциональный параметр #тип - булев - started = true + #используется при создании и обновлении + #started = true #detach диска при удалении компьюта #опциональный параметр #тип - булев - detach_disks = true + #используется при удалении + #detach_disks = true + + #флаг для удаления компьюта, без возможности восстановления + #опциональный параметр + #тип - булев + #используется при удалении + #permanently = false + + #тип вм + #возможные значения - linux, windows, unknown + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #loader_type = "unknown" + + #тип загрузки образа + #возможные значения - bios, uefi + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #boot_type = "bios" - #флаг для удаления компьюта + #изменение размера ВМ #опциональный параметр #тип - булев - permanently = false + #используется при создании и обновлении + #hot_resize = false + + #наименование сетевого интерфейса + #возможные значения - eth, ens + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #network_interface_naming = "ens" } diff --git a/samples/cloudapi/lb/data_lb/main.tf b/samples/cloudapi/lb/data_lb/main.tf index 03d9377..c3293b7 100644 --- a/samples/cloudapi/lb/data_lb/main.tf +++ b/samples/cloudapi/lb/data_lb/main.tf @@ -1,9 +1,9 @@ /* Пример использования -Получение информации о load balancer (балансировщик нагрузок) +Получение информации о load balancer (балансировщик нагрузки) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,7 +27,7 @@ provider "decort" { } data "decort_lb" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число lb_id = 238 diff --git a/samples/cloudapi/lb/data_lb_list/main.tf b/samples/cloudapi/lb/data_lb_list/main.tf index 7ae1af7..0785edd 100644 --- a/samples/cloudapi/lb/data_lb_list/main.tf +++ b/samples/cloudapi/lb/data_lb_list/main.tf @@ -3,7 +3,7 @@ Получение списка load balancer (балансировщиков нагрузки) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -68,10 +68,10 @@ data "decort_lb_list" "lbl" { #тип - строка #back_ip = "ENABLED" - #флаг влючения в результат удаленных балансировщиков нагрузки + #флаг включения в результат удаленных балансировщиков нагрузки #опциональный параметр #тип - булев - #значение по-умолчанию - false + #по умолчанию - false #если не задан - выводятся все доступные неудаленные балансировщики #includedeleted = true diff --git a/samples/cloudapi/lb/data_lb_list_deleted/main.tf b/samples/cloudapi/lb/data_lb_list_deleted/main.tf index dcc862f..a3252a5 100644 --- a/samples/cloudapi/lb/data_lb_list_deleted/main.tf +++ b/samples/cloudapi/lb/data_lb_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных load balancer (балансировщиков нагрузок) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/lb/resource_lb/main.tf b/samples/cloudapi/lb/resource_lb/main.tf index f3b19ca..56dd6ce 100644 --- a/samples/cloudapi/lb/resource_lb/main.tf +++ b/samples/cloudapi/lb/resource_lb/main.tf @@ -7,7 +7,7 @@ 3. Удалять load balancer /* -#Расскомментируйте этот код +#Раскомментируйте этот код #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,27 +31,31 @@ provider "decort" { } resource "decort_lb" "lb" { - #id ресурсной группы для со + #id ресурсной группы #обязательный параметр #тип - целое число + #используется при создании rg_id = 1111 #наименование load balancer #обязательный параметр #тип - строка + #используется при создании name = "tf-test-lb" #id внешней сети #опциональный параметр #id внешней сети и id виртуальной сети не могут быть одновременно = 0 #тип - целое число - extnet_id = 6 + #используется при создании + #extnet_id = 6 #id виртуальной сети #опциональный параметр #id внешней сети и id виртуальной сети не могут быть одновременно = 0 #тип - целое число - vins_id = 758 + #используется при создании + #vins_id = 758 #флаг запуска load balancer #обязательный параметр @@ -59,59 +63,68 @@ resource "decort_lb" "lb" { #то для успешного старта, он должен быть доступен (enable = true) #по умолчанию - true #тип - булев + #используется при создании и обновлении start = true - #позволяет создать схему отказоустройчивой LB + #создать схему отказоустойчивой LB #опциональный параметр #тип - булев - ha_mode = true + #используется при создании и обновлении + #ha_mode = true #описание #опциональный параметр #тип - строка - desc = "temp super lb for testing tf provider" + #используется при создании и обновлении + #desc = "temp super lb for testing tf provider" #флаг доступности load balancer #опциональный параметр #тип - булев - enable = true + #используется при создании и обновлении + #enable = true #флаг перезапуска load balancer #перезагрузка срабатывает только при изменении флага с false на true #опциональный параметр #тип - булев - restart = false + #используется при обновлении + #restart = false #флаг сброса конфигурации load balancer #сброс срабатывает только при изменении флага с false на true #опциональный параметр #тип - булев - config_reset = false + #используется при обновлении + #config_reset = false - #флаг моментального удаления load balancer + #флаг для удаления load balancer, без возможности восстановления #опциональный параметр - #применяется при выполнении команды terraform destroy #по умолчанию - false #тип - булев - permanently = false + #используется при удалении + #permanently = false #флаг восстановления load balancer #опциональный параметр #восстановить можно load balancer, удаленным с флагом permanently = false #тип - булев - restore = true + #используется при обновлении + #restore = true #флаг используемый при рестарте load balancer #опциональный параметр #при значении "true" рестарт производится на обоих нодах в HA mode - #значение по умолчанию - true + #по умолчанию - true #тип - булев - safe = true + #используется при обновлении + #safe = true #пользовательские значения sysctl для LB #опциональный параметр #тип - список мап - sysctl_params = [{ key1 = "value1", key2 = "value2" }] + #используется при создании и обновлении + #sysctl_params = [{ key1 = "value1", key2 = "value2" }] } output "test" { diff --git a/samples/cloudapi/lb/resource_lb_backend/main.tf b/samples/cloudapi/lb/resource_lb_backend/main.tf index 89e0322..1b15280 100644 --- a/samples/cloudapi/lb/resource_lb_backend/main.tf +++ b/samples/cloudapi/lb/resource_lb_backend/main.tf @@ -7,7 +7,7 @@ 3. Удалять backend */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,14 +31,16 @@ provider "decort" { } resource "decort_lb_backend" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя бекенда для создания сервера #обязательный параметр #тип - строка + #используется при создании name = "testBackend" #алгоритм балансировки @@ -46,7 +48,8 @@ resource "decort_lb_backend" "lb" { #по умолчанию - "roundrobin" #доступные значения - "roundrobin", "static-rr", "leastconn" #тип - строка - lgorithm = "roundrobin" + #используется при создании и обновлении + #algorithm = "roundrobin" #------------------- #настройки для серверов по умолчанию @@ -56,43 +59,50 @@ resource "decort_lb_backend" "lb" { #опциональный параметр #по умолчанию - 5000 #тип - целое число - inter = 5000 + #используется при создании и обновлении + #inter = 5000 #интервал между проверками доступности сервера после восстановления, в миллисекундах #опциональный параметр #по умолчанию - 1000 #тип - целое число - downinter = 1000 + #используется при создании и обновлении + #downinter = 1000 #кол-во проверок, которые сервер должен успешно пройти #опциональный параметр #по умолчанию - 2 #тип - целое число - rise = 2 + #используется при создании и обновлении + #rise = 2 #кол-во проверок, которые сервер может не пройти и после этого получить статус "unavailable" #опциональный параметр #по умолчанию - 2 #тип - целое число - fall = 2 + #используется при создании и обновлении + #fall = 2 #кол-во миллисекунд - время между получением сервера статуса "available" и открытием соединений #опциональный параметр #по умолчанию - 60000 #тип - целое число - slowstart = 60000 + #используется при создании и обновлении + #slowstart = 60000 #максимальное кол-во соединений сервера, при достижении этого кол-ва, сервер выходит из схемы балансирования #опциональный параметр #по умолчанию - 250 #тип - целое число - maxconn = 250 + #используется при создании и обновлении + #maxconn = 250 #максимальное кол-во соединений в очереди серевера, при достижении этого кол-ва, соединения будут перенаправлены на другой сервер #опциональный параметр #по умолчанию - 256 #тип - целое число - maxqueue = 256 + #используется при создании и обновлении + #maxqueue = 256 #вес сервера для балансировки #опциональный параметр @@ -100,7 +110,8 @@ resource "decort_lb_backend" "lb" { #макс - 255 #по умолчанию - 100 #тип - целое число - weight = 100 + #используется при создании и обновлении + #weight = 100 timeouts { create = "5m" diff --git a/samples/cloudapi/lb/resource_lb_backend_server/main.tf b/samples/cloudapi/lb/resource_lb_backend_server/main.tf index b796d38..dd63ff8 100644 --- a/samples/cloudapi/lb/resource_lb_backend_server/main.tf +++ b/samples/cloudapi/lb/resource_lb_backend_server/main.tf @@ -7,7 +7,7 @@ 3. Удалять server */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,29 +31,34 @@ provider "decort" { } resource "decort_lb_backend_server" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя бекенда для создания сервера #обязательный параметр #тип - строка + #используется при создании backend_name = "testBackend" #имя сервера #обязательный параметр #тип - строка + #используется при создании и обновлении name = "testServer" #ip адрес сервера #обязательный параметр #тип - строка + #используется при создании и обновлении address = "192.168.5.33" #порт сервера #обязательный параметр #тип - целое число + #используется при создании и обновлении port = 6553 #проверка доступности сервера @@ -61,48 +66,56 @@ resource "decort_lb_backend_server" "lb" { #по умолчанию - "enabled" #доступные значения - "disabled", "enabled" #тип - строка + #используется при создании и обновлении #check = "enabled" #интервал между проверками, в миллисекундах #опциональный параметр #по умолчанию - 5000 #тип - целое число + #используется при создании и обновлении #inter = 5000 #интервал между проверками доступности сервера после восстановления, в миллисекундах #опциональный параметр #по умолчанию - 1000 #тип - целое число + #используется при создании и обновлении #downinter = 1000 #кол-во проверок, которые сервер должен успешно пройти #опциональный параметр #тип - целое число #по умолчанию - 2 + #используется при создании и обновлении #rise = 2 #кол-во проверок, которые сервер может не пройти и после этого получить статус "unavailable" #опциональный параметр #по умолчанию - 2 #тип - целое число + #используется при создании и обновлении #fall = 2 #кол-во миллисекунд - время между получением сервера статуса "available" и открытием соединений #опциональный параметр #по умолчанию - 60000 #тип - целое число + #используется при создании и обновлении #slowstart = 60000 #максимальное кол-во соединений сервера, при достижении этого кол-ва, сервер выходит из схемы балансирования #опциональный параметр #по умолчанию - 250 #тип - целое число + #используется при создании и обновлении #maxconn = 250 #максимальное кол-во соединений в очереди серевера, при достижении этого кол-ва, соединения будут перенаправлены на другой сервер #опциональный параметр #по умолчанию - 256 #тип - целое число + #используется при создании и обновлении #maxqueue = 256 #вес сервера для балансировки @@ -111,6 +124,7 @@ resource "decort_lb_backend_server" "lb" { #макс - 255 #по умолчанию - 100 #тип - целое число + #используется при создании и обновлении #weight = 100 timeouts { diff --git a/samples/cloudapi/lb/resource_lb_frontend/main.tf b/samples/cloudapi/lb/resource_lb_frontend/main.tf index 718419d..5a874cb 100644 --- a/samples/cloudapi/lb/resource_lb_frontend/main.tf +++ b/samples/cloudapi/lb/resource_lb_frontend/main.tf @@ -6,7 +6,7 @@ 2. Удалять frontend */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,19 +30,22 @@ provider "decort" { } resource "decort_lb_frontend" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя бекенда для создания фронтенда #обязательный параметр #тип - строка + #используется при создании backend_name = "testBackend" #имя фронтенда #обязательный параметр #тип - строка + #используется при создании name = "testFrontend" timeouts { diff --git a/samples/cloudapi/lb/resource_lb_frontend_bind/main.tf b/samples/cloudapi/lb/resource_lb_frontend_bind/main.tf index 582fd9f..253bcd3 100644 --- a/samples/cloudapi/lb/resource_lb_frontend_bind/main.tf +++ b/samples/cloudapi/lb/resource_lb_frontend_bind/main.tf @@ -7,7 +7,7 @@ 3. Удалять привязку */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,29 +31,34 @@ provider "decort" { } resource "decort_lb_frontend_bind" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя фронтенда для создания привязки #обязательный параметр #тип - строка + #используется при создании frontend_name = "testFrontend" #наименование привязки #обязательный параметр #тип - строка + #используется при создании и обновлении name = "testBinding" #адрес привязки фронтенда #обязательный параметр #тип - строка + #используется при создании и обновлении address = "111.111.111.111" #порт для привязки фронтенда #обязательный параметр #тип - целое число + #используется при создании и обновлении port = 1111 timeouts { diff --git a/samples/cloudapi/location/data_location_url/main.tf b/samples/cloudapi/location/data_location_url/main.tf index ca85b20..7c16a00 100644 --- a/samples/cloudapi/location/data_location_url/main.tf +++ b/samples/cloudapi/location/data_location_url/main.tf @@ -5,7 +5,7 @@ 1. получать информацию об url площадки (grid/location). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -29,6 +29,7 @@ provider "decort" { } data "decort_location_url" "lu" { + #нет входных параметров } output "test" { diff --git a/samples/cloudapi/location/data_locations_list/main.tf b/samples/cloudapi/location/data_locations_list/main.tf index 4135371..cdef3c2 100644 --- a/samples/cloudapi/location/data_locations_list/main.tf +++ b/samples/cloudapi/location/data_locations_list/main.tf @@ -5,7 +5,7 @@ 1) получать информацию о grid_id для создания ресурсов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,7 +30,7 @@ provider "decort" { data "decort_locations_list" "ll" { #фильтр по флагу - #опицональный параметр + #опциональный параметр #тип - строка #flag = "some" @@ -55,13 +55,13 @@ data "decort_locations_list" "ll" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода - #опицональный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #опицональный параметр + #опциональный параметр #тип - целое число #size = 1 } diff --git a/samples/cloudapi/pfw/resource_pfw/main.tf b/samples/cloudapi/pfw/resource_pfw/main.tf index 618b788..b94e189 100644 --- a/samples/cloudapi/pfw/resource_pfw/main.tf +++ b/samples/cloudapi/pfw/resource_pfw/main.tf @@ -5,7 +5,7 @@ 1. Создавать правила для трансляции сетевых портов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -32,27 +32,32 @@ resource "decort_pfw" "pfw" { #id виртуальной машины #обязательный параметр #тип - целое число + #используется при создании compute_id = 11269 #начальный порт правила #обязательный параметр #тип - целое число + #используется при создании public_port_start = 200 #внутренний порт #обязательный параметр #тип - целое число + #используется при создании local_base_port = 22 #протокол соединения (tcp / udp) #обязательный параметр ##тип - строка + #используется при создании proto = "tcp" #конечный порт (включительно) #опциональный параметр #тип - целое число - public_port_end = 21321 + #используется при создании + #public_port_end = 21321 } diff --git a/samples/cloudapi/rg/data_rg/main.tf b/samples/cloudapi/rg/data_rg/main.tf index 1703737..8f74a0f 100644 --- a/samples/cloudapi/rg/data_rg/main.tf +++ b/samples/cloudapi/rg/data_rg/main.tf @@ -3,7 +3,7 @@ Получение информации о ресурсной группе (RG) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_affinity_group_computes/main.tf b/samples/cloudapi/rg/data_rg_affinity_group_computes/main.tf index 6549bb9..76c4c26 100644 --- a/samples/cloudapi/rg/data_rg_affinity_group_computes/main.tf +++ b/samples/cloudapi/rg/data_rg_affinity_group_computes/main.tf @@ -3,7 +3,7 @@ Получение информации о специальной группе компьютов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,7 +33,7 @@ data "decort_rg_affinity_group_computes" "lc" { rg_id = 123 #название специальной группы компьютов - #обязательное поле + #обязательный параметр #тип - строка affinity_group = "TEST" } diff --git a/samples/cloudapi/rg/data_rg_affinity_groups_get/main.tf b/samples/cloudapi/rg/data_rg_affinity_groups_get/main.tf index 3733b8e..235d226 100644 --- a/samples/cloudapi/rg/data_rg_affinity_groups_get/main.tf +++ b/samples/cloudapi/rg/data_rg_affinity_groups_get/main.tf @@ -3,7 +3,7 @@ Получение информации о списке компьютов из определенной группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,7 +33,7 @@ data "decort_rg_affinity_groups_get" "get_groups" { rg_id = 123 #название специальной группы компьютов - #обязательное поле + #обязательный параметр #тип - строка affinity_group = "TEST" } diff --git a/samples/cloudapi/rg/data_rg_affinity_groups_list/main.tf b/samples/cloudapi/rg/data_rg_affinity_groups_list/main.tf index 6b8e6a4..fc633fb 100644 --- a/samples/cloudapi/rg/data_rg_affinity_groups_list/main.tf +++ b/samples/cloudapi/rg/data_rg_affinity_groups_list/main.tf @@ -3,7 +3,7 @@ Получение информации о списке специальных групп компьютов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_audits/main.tf b/samples/cloudapi/rg/data_rg_audits/main.tf index 612bc19..48140d3 100644 --- a/samples/cloudapi/rg/data_rg_audits/main.tf +++ b/samples/cloudapi/rg/data_rg_audits/main.tf @@ -3,7 +3,7 @@ Получение информации о списке аудитов ресурсной группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_get_resource_consumption/main.tf b/samples/cloudapi/rg/data_rg_get_resource_consumption/main.tf index 2544904..9213eb0 100644 --- a/samples/cloudapi/rg/data_rg_get_resource_consumption/main.tf +++ b/samples/cloudapi/rg/data_rg_get_resource_consumption/main.tf @@ -3,7 +3,7 @@ Получение списка текущего потребления ресурсов ресурсной группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_list/main.tf b/samples/cloudapi/rg/data_rg_list/main.tf index 4cb7035..d311fc5 100644 --- a/samples/cloudapi/rg/data_rg_list/main.tf +++ b/samples/cloudapi/rg/data_rg_list/main.tf @@ -3,7 +3,7 @@ Получение информации о списке всех ресурсных групп к которым есть доступ */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -67,7 +67,7 @@ data "decort_rg_list" "rg_list" { #lock_status = "UNLOCKED" #отображать удаленные ресурсные группы или нет - #необязательный параметр + #опциональный параметр #тип - булев #includedeleted = false @@ -77,13 +77,13 @@ data "decort_rg_list" "rg_list" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #номер страницы - #необязательный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #необязательный параметр + #опциональный параметр #тип - целое число #size = 2 } diff --git a/samples/cloudapi/rg/data_rg_list_computes/main.tf b/samples/cloudapi/rg/data_rg_list_computes/main.tf index cc0cc8e..8d9f0e9 100644 --- a/samples/cloudapi/rg/data_rg_list_computes/main.tf +++ b/samples/cloudapi/rg/data_rg_list_computes/main.tf @@ -3,7 +3,7 @@ Получение информации о списке компьютов в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_list_deleted/main.tf b/samples/cloudapi/rg/data_rg_list_deleted/main.tf index ec1998d..cc3bac8 100644 --- a/samples/cloudapi/rg/data_rg_list_deleted/main.tf +++ b/samples/cloudapi/rg/data_rg_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение информации о списке удаленных ресурсных групп */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -68,13 +68,13 @@ data "decort_rg_list_deleted" "list_deleted" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #номер страницы - #необязательный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #необязательный параметр + #опциональный параметр #тип - целое число #size = 2 } diff --git a/samples/cloudapi/rg/data_rg_list_lb/main.tf b/samples/cloudapi/rg/data_rg_list_lb/main.tf index 8b6e758..1233775 100644 --- a/samples/cloudapi/rg/data_rg_list_lb/main.tf +++ b/samples/cloudapi/rg/data_rg_list_lb/main.tf @@ -2,7 +2,7 @@ Пример использования Получение информации о списке балансировщиков в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_list_pfw/main.tf b/samples/cloudapi/rg/data_rg_list_pfw/main.tf index 5f83a68..4747fd8 100644 --- a/samples/cloudapi/rg/data_rg_list_pfw/main.tf +++ b/samples/cloudapi/rg/data_rg_list_pfw/main.tf @@ -3,7 +3,7 @@ Получение информации о списке правил переадресации портов для ресурсной группы. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_list_vins/main.tf b/samples/cloudapi/rg/data_rg_list_vins/main.tf index ddbeaa1..0fe5777 100644 --- a/samples/cloudapi/rg/data_rg_list_vins/main.tf +++ b/samples/cloudapi/rg/data_rg_list_vins/main.tf @@ -3,7 +3,7 @@ Получение информации о списке винсов в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_resource_consumption_list/main.tf b/samples/cloudapi/rg/data_rg_resource_consumption_list/main.tf index 22f768e..be6a1f1 100644 --- a/samples/cloudapi/rg/data_rg_resource_consumption_list/main.tf +++ b/samples/cloudapi/rg/data_rg_resource_consumption_list/main.tf @@ -3,7 +3,7 @@ Получение списка текущего потребления ресурсов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/data_rg_usage/main.tf b/samples/cloudapi/rg/data_rg_usage/main.tf index e2f22b9..74638ef 100644 --- a/samples/cloudapi/rg/data_rg_usage/main.tf +++ b/samples/cloudapi/rg/data_rg_usage/main.tf @@ -2,7 +2,7 @@ Пример использования Получение информации об использовании ресурсов в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/rg/resource_rg/main.tf b/samples/cloudapi/rg/resource_rg/main.tf index 191ed51..f34969a 100644 --- a/samples/cloudapi/rg/resource_rg/main.tf +++ b/samples/cloudapi/rg/resource_rg/main.tf @@ -7,7 +7,7 @@ 3. Удалять RG */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,79 +34,91 @@ resource "decort_resgroup" "rg" { #имя ресурсной группы #обязательный параметр #тип - строка + #используется при создании и обновлении name = "testing_rg_1" #id аккаунта которому будет принадлежать ресурсная группа #обязательный параметр #тип - целое число + #используется при создании account_id = 123 - #id сети + #id платформы #обязательный параметр #тип - целое число + #используется при создании gid = 1234 #тип сети по умолчанию для этой ресурсной группы #опциональный параметр #виртуальные машины, созданные в этой RG, по умолчанию будут подключены к этой сети #допустимые значения: PRIVATE, PUBLIC, NONE - #по умолчанию: PRIVATE + #по умолчанию - PRIVATE #тип - строка - def_net_type = "NONE" + #используется при создании + #def_net_type = "NONE" #ip cidr частной сети, если сеть по умолчанию PRIVATE #опциональный параметр #тип - строка - ipcidr = "1.1.1.1" + #используется при создании + #ipcidr = "1.1.1.1" #id внешней сети #опциональный параметр #тип - целое число - ext_net_id = 123 + #используется при создании + #ext_net_id = 123 #ip внешней сети #опциональный параметр #тип - строка - ext_ip = "1.1.1.1" + #используется при создании + #ext_ip = "1.1.1.1" #описание #опциональный параметр #тип - строка - description = "qwerty" + #используется при создании и обновлении + #description = "qwerty" #флаг доступности ресурсной группы #опциональный параметр #тип - булев - enable = true + #используется при создании и обновлении + #enable = true #имя пользователя #опциональный параметр #тип - строка - owner = "name_user" + #используется при создании + #owner = "name_user" #блок для предоставления прав на ресурсную группу #опциональный параметр #тип - блок прав доступа - access { + #используется при создании и обновлении + #access { #имя юзера предоставляемому права #обязательный параметр при использовании блока #тип - строка - user = "kasim_baybikov_1@decs3o" + #user = "kasim_baybikov_1@decs3o" #тип прав #опциональный параметр #тип - строка - right = "RCX" - } + #right = "RCX" + #} #установить сеть по умолчанию #опциональный параметр #тип - блок сетей - def_net { + #используется при создании и обновлении + #def_net { #тип сети #обязательный параметр при использовании блока #тип - строка - net_type = "PUBLIC" + #net_type = "PUBLIC" #id сети #опциональный параметр @@ -115,67 +127,72 @@ resource "decort_resgroup" "rg" { #имеет значение PRIVATE и net_id=0, будет выбран первый vins, определенный для этой ресурсной группы #в противном случае net_id идентифицирует либо существующий сегмент внешней сети, либо vins #тип - целое число - net_id = 1234 + #net_id = 1234 - } + #} #лимиты ресурсов для ресурсной группы #опциональный параметр #тип - блок конфигураций - quota { + #используется при создании и обновлении + #quota { #максимальное количество ядер процессора #опциональный параметр - #значение по умолчанию: -1 + #по умолчанию: -1 #тип - целое число - cpu = 5 + #cpu = 5 - #максимальный размер памяти в мегабайтах + #максимальный размер памяти, в МБ #опциональный параметр - #значение по умолчанию: -1 + #по умолчанию: -1 #тип - целое число - ram = 1024 + #ram = 1024 #максимальный размер объединенных виртуальных дисков в ГБ #опциональный параметр - #значение по умолчанию: -1 + #по умолчанию: -1 #тип - целое число - disk = 180 + #disk = 180 #максимальное количество отправленных/полученных сетевых узлов #опциональный параметр - #значение по умолчанию: -1 + #по умолчанию: -1 #тип - целое число - ext_traffic = 21 + #ext_traffic = 21 #максимальное количество назначенных общедоступных IP-адресов #опциональный параметр - #значение по умолчанию: -1 + #по умолчанию: -1 #тип - целое число - ext_ips = 29 - } + #ext_ips = 29 + #} #список названий pools - #необязательный параметр + #опциональный параметр #игнорируется при создании ресурса, применяется только при обновлении #тип - массив строк + #используется при обновлении #uniq_pools = ["sep1_poolName1", "sep2_poolName2"] #флаг для принудительного удаления ресурсной группы #опциональный параметр #тип - булев - force = true + #используется при удалении + #force = true - #флаг для моментального удаления ресурсной группы + #флаг для удаления ресурсной группы, без возможности восстановления #опциональный параметр #тип - булев - permanently = true + #используется при удалении + #permanently = true #восстановление группы после удаления #опциональный параметр #используется при редактировании ресурса - #по-умолачанию - false + #по умолчанию - false #тип - булев - restore = true + #используется при обновлении + #restore = true } diff --git a/samples/cloudapi/sep/data_available_sep_and_pools_list/main.tf b/samples/cloudapi/sep/data_available_sep_and_pools_list/main.tf new file mode 100644 index 0000000..91feae0 --- /dev/null +++ b/samples/cloudapi/sep/data_available_sep_and_pools_list/main.tf @@ -0,0 +1,44 @@ +/* +Пример использования +Получение данных доступных sep и pools +*/ + +#Раскомментируйте код ниже, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "decs3o" + #controller_url = + controller_url = "https://ds1.digitalenergy.online" + #oauth2_url = + oauth2_url = "https://sso.digitalenergy.online" + allow_unverified_ssl = true +} + +data "decort_sep_and_pools_available_list" "ap" { + #идентификатор аккаунта + #обязательный параметр + #тип - целое число + account_id = 1111 + + #идентификатор ресурсной группы + #опциональный параметр + #тип - целое число + #rg_id = 1111 +} + +output "test" { + value = data.decort_sep_and_pools_available_list.ap +} + diff --git a/samples/cloudapi/snapshot/data_snapshot_list/main.tf b/samples/cloudapi/snapshot/data_snapshot_list/main.tf index a50181e..6ccc3e6 100644 --- a/samples/cloudapi/snapshot/data_snapshot_list/main.tf +++ b/samples/cloudapi/snapshot/data_snapshot_list/main.tf @@ -3,7 +3,7 @@ Получение списка snapshot */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/snapshot/resource_snapshot/main.tf b/samples/cloudapi/snapshot/resource_snapshot/main.tf index 621d819..1c5f2b5 100644 --- a/samples/cloudapi/snapshot/resource_snapshot/main.tf +++ b/samples/cloudapi/snapshot/resource_snapshot/main.tf @@ -7,7 +7,7 @@ 3. Откатывать snapshot */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,28 +31,32 @@ provider "decort" { } resource "decort_snapshot" "s" { - #обязательный параметр #id вычислительной мощности + #обязательный параметр #тип - целое число + #используется при создании compute_id = 24074 - #обязательный параметр #наименование snapshot + #обязательный параметр #тип - строка + #используется при создании label = "test_ssht_3" #флаг отката #опциональный параметр - #если флаг был измеен с false на true, то произойдет откат - #по-уолчанию - false + #если флаг был изменен с false на true, то произойдет откат + #по умолчанию - false #тип - булев - rollback = false + #используется при обновлении + #rollback = false - #флаг для удаление снапшота асинхронном режиме + #флаг для удаления снапшота в асинхронном режиме #опциональный параметр #по умолчанию - false #тип - булев - delete_async_mode = true + #используется при удалении + #delete_async_mode = true } diff --git a/samples/cloudapi/stack/data_stack/main.tf b/samples/cloudapi/stack/data_stack/main.tf index 4bd56be..c22c395 100644 --- a/samples/cloudapi/stack/data_stack/main.tf +++ b/samples/cloudapi/stack/data_stack/main.tf @@ -3,7 +3,7 @@ Получение stack по его id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,9 +27,9 @@ provider "decort" { } data "decort_stack" "stack" { + #идентификатор стека #обязательный параметр #тип - целое число - #идентификатор стека stack_id = 2 } diff --git a/samples/cloudapi/stack/data_stack_list/main.tf b/samples/cloudapi/stack/data_stack_list/main.tf index 32347e5..9b91597 100644 --- a/samples/cloudapi/stack/data_stack_list/main.tf +++ b/samples/cloudapi/stack/data_stack_list/main.tf @@ -3,7 +3,7 @@ Получение списка stack */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -26,24 +26,24 @@ provider "decort" { allow_unverified_ssl = true } data "decort_stack_list" "stack_list" { - #необязательный параметр - #тип - целое число #фильтрация списка для получения информации о конкретном stack по его id + #опциональный параметр + #тип - целое число #by_id = 2 - #необязательный параметр - #тип - строка #фильтрация списка для получения информации о конкретном stack по его имени + #опциональный параметр + #тип - строка #name = "alpha-cpu-04" - #необязательный параметр - #тип - строка #фильтрация списка для получения информации о конкретном stack по его типу + #опциональный параметр + #тип - строка #type = "KVM" - #необязательный параметр - #тип - строка #фильтрация списка для получения информации о конкретном stack по его статусу + #опциональный параметр + #тип - строка #status = "ENABLED" #сортировка по одному из поддерживаемых полей diff --git a/samples/cloudapi/vfpool/data_vfpool/main.tf b/samples/cloudapi/vfpool/data_vfpool/main.tf index c9b1560..b3da232 100644 --- a/samples/cloudapi/vfpool/data_vfpool/main.tf +++ b/samples/cloudapi/vfpool/data_vfpool/main.tf @@ -3,7 +3,7 @@ Получение информации о vfpool по его id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -26,9 +26,9 @@ provider "decort" { } data "decort_vfpool" "vfpool" { + #идентификатор vfpool #обязательный параметр #тип - целое число - #идентификатор vfpool vfpool_id = 2 } diff --git a/samples/cloudapi/vfpool/data_vfpool_list/main.tf b/samples/cloudapi/vfpool/data_vfpool_list/main.tf index 3f18e1f..df516c3 100644 --- a/samples/cloudapi/vfpool/data_vfpool_list/main.tf +++ b/samples/cloudapi/vfpool/data_vfpool_list/main.tf @@ -3,7 +3,7 @@ Получение списка vfpool */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -28,37 +28,37 @@ provider "decort" { data "decort_vfpool_list" "vfpool_list" { #фильтрация списка для получения информации о конкретном vfpool по его id - #необязательный параметр + #опциональный параметр #тип - целое число #by_id = 1 #фильтрация списка для получения информации о vfpool, которые принадлежат к определенному GRID - #необязательный параметр + #опциональный параметр #тип - целое число #gid = 1 #фильтрация списка для получения информации о конкретном vfpool по его имени - #необязательный параметр + #опциональный параметр #тип - строка #name = "alpha-cpu-04" #фильтрация списка для получения информации о конкретном vfpool по его описанию - #необязательный параметр + #опциональный параметр #тип - строка #description = "some" #фильтрация списка для получения информации о vfpool, которые имеют соответствующий статус - #необязательный параметр + #опциональный параметр #тип - строка #status = "ENABLED" #фильтрация списка для получения информации о vfpool, которые доступны конкретному аккаунту - #необязательный параметр + #опциональный параметр #тип - целое число #account_access = 1 #фильтрация списка для получения информации о vfpool, которые доступны конкретной ресурсной группе - #необязательный параметр + #опциональный параметр #тип - целое число #rg_access = 1 diff --git a/samples/cloudapi/vgpu/data_vgpu/main.tf b/samples/cloudapi/vgpu/data_vgpu/main.tf index 90c155f..dfe40fc 100644 --- a/samples/cloudapi/vgpu/data_vgpu/main.tf +++ b/samples/cloudapi/vgpu/data_vgpu/main.tf @@ -3,7 +3,7 @@ Получение данных vgpu */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/vins/data_vins/main.tf b/samples/cloudapi/vins/data_vins/main.tf index eb91c52..89bf771 100644 --- a/samples/cloudapi/vins/data_vins/main.tf +++ b/samples/cloudapi/vins/data_vins/main.tf @@ -3,7 +3,7 @@ Получение информации об уже существующем виртуальном сетевом сегменте (Virtual Network Segment, ViNS). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/vins/data_vins_audits/main.tf b/samples/cloudapi/vins/data_vins_audits/main.tf index 4c96eff..bd3c997 100644 --- a/samples/cloudapi/vins/data_vins_audits/main.tf +++ b/samples/cloudapi/vins/data_vins_audits/main.tf @@ -3,7 +3,7 @@ Получение списка записей аудита для внутренней сети vins. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/vins/data_vins_ext_net_list/main.tf b/samples/cloudapi/vins/data_vins_ext_net_list/main.tf index 5ed476d..dba2b7b 100644 --- a/samples/cloudapi/vins/data_vins_ext_net_list/main.tf +++ b/samples/cloudapi/vins/data_vins_ext_net_list/main.tf @@ -3,7 +3,7 @@ Получение информации о внешних сетях виртуальной сети (Vins). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/vins/data_vins_ip_list/main.tf b/samples/cloudapi/vins/data_vins_ip_list/main.tf index 2c01628..2d377c7 100644 --- a/samples/cloudapi/vins/data_vins_ip_list/main.tf +++ b/samples/cloudapi/vins/data_vins_ip_list/main.tf @@ -3,7 +3,7 @@ Получение информации о списке зарезервированных IP адресов виртуальной сети (Vins) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudapi/vins/data_vins_list/main.tf b/samples/cloudapi/vins/data_vins_list/main.tf index 003ed51..ebd0ce7 100644 --- a/samples/cloudapi/vins/data_vins_list/main.tf +++ b/samples/cloudapi/vins/data_vins_list/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных виртуальных сетей (Vins). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -69,6 +69,11 @@ data "decort_vins_list" "vl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" + #поиск по статусу + #опциональный параметр + #тип - строка + #status = "ENABLED" + #номер страницы для отображения #опциональный параметр #тип - целое число diff --git a/samples/cloudapi/vins/data_vins_list_deleted/main.tf b/samples/cloudapi/vins/data_vins_list_deleted/main.tf index 67906b3..3798082 100644 --- a/samples/cloudapi/vins/data_vins_list_deleted/main.tf +++ b/samples/cloudapi/vins/data_vins_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -63,13 +63,13 @@ data "decort_vins_list_deleted" "vins_list_deleted" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода - #опицональный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #опицональный параметр + #опциональный параметр #тип - целое число #size = 1 } diff --git a/samples/cloudapi/vins/data_vins_nat_rule_list/main.tf b/samples/cloudapi/vins/data_vins_nat_rule_list/main.tf index d0568cf..0e40600 100644 --- a/samples/cloudapi/vins/data_vins_nat_rule_list/main.tf +++ b/samples/cloudapi/vins/data_vins_nat_rule_list/main.tf @@ -3,7 +3,7 @@ Получение списка natRule vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,8 +27,8 @@ provider "decort" { } data "decort_vins_nat_rule_list" "vins_nat_rule_list" { - #обязательный параметр #id желаемого vins + #обязательный параметр #тип - целое число vins_id = 10101 diff --git a/samples/cloudapi/vins/data_vins_static_route/main.tf b/samples/cloudapi/vins/data_vins_static_route/main.tf index e8a5b45..545c66e 100644 --- a/samples/cloudapi/vins/data_vins_static_route/main.tf +++ b/samples/cloudapi/vins/data_vins_static_route/main.tf @@ -3,7 +3,7 @@ Получение информации о статическом пути */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,13 +27,13 @@ provider "decort" { } data "decort_vins_static_route" "route" { - #обязательный параметр #id vins в котором добавлены routes + #обязательный параметр #тип - целое число vins_id = 1111 + #id route #обязательный параметр - #id route #тип - целое число route_id = 1 } diff --git a/samples/cloudapi/vins/data_vins_static_route_list/main.tf b/samples/cloudapi/vins/data_vins_static_route_list/main.tf index da504b6..7143cf1 100644 --- a/samples/cloudapi/vins/data_vins_static_route_list/main.tf +++ b/samples/cloudapi/vins/data_vins_static_route_list/main.tf @@ -3,7 +3,7 @@ Получение информации о списке статических путей */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,8 +27,8 @@ provider "decort" { } data "decort_vins_static_route_list" "list" { - #обязательный параметр #id vins в котором добавлены routes + #обязательный параметр #тип - целое число vins_id = 1111 } diff --git a/samples/cloudapi/vins/resource_vins/main.tf b/samples/cloudapi/vins/resource_vins/main.tf index dccfd42..9c48c03 100644 --- a/samples/cloudapi/vins/resource_vins/main.tf +++ b/samples/cloudapi/vins/resource_vins/main.tf @@ -11,7 +11,7 @@ 7. Перезапускать и редеплоить vnfdev */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -39,135 +39,154 @@ resource "decort_vins" "vins" { #имя создаваемого ресурса #обязательный параметр #тип - строка + #используется при создании name = "Test_name" - #id ресурсной группы для создаения ресурса + #id ресурсной группы для создания ресурса + #должен быть указан или rg_id или account_id #опциональный параметр #тип - целое число + #используется при создании rg_id = 10101 - #id аккаунта для создаения ресруса + #id аккаунта для создания ресурса + #должен быть указан или rg_id или account_id #опциональный параметр #тип - целое число + #используется при создании account_id = 2023 #id внешней сети для подключения к ней ресурса #опциональный параметр #тип - целое число - ext_net_id = 2222 + #используется при создании и обновлении + #ext_net_id = 2222 #ip внешней сети для подключения к нему ресурса #опциональный параметр #тип - строка - ext_ip_addr = "1.1.1.1" + #используется при создании + #ext_ip_addr = "1.1.1.1" #private network IP CIDR #опциональный параметр #тип - строка - ipcidr = "192.168.0.1" + #используется при создании + #ipcidr = "192.168.0.1" #количество зарезервированных адресов на момент создания #опциональный параметр - #значение по умолчанию 32 + #по умолчанию 32 #тип - целое число - pre_reservations_num = 2 + #используется при создании + #pre_reservations_num = 2 #grid (platform) ID #опциональный параметр #тип - целое число - gid = 2002 + #используется при создании + #gid = 2002 #описание #опциональный параметр #тип - строка - desc = "Description" + #используется при создании и обновлении + #desc = "Description" #ручное подключение и отключение ресурса #опциональный параметр #тип - булев - enable = true + #используется при создании и обновлении + #enable = true - #удаление навсегда + #флаг для удаления VINS, без возможности восстановления #опциональный параметр #тип - булев - permanently = true + #используется при удалении + #permanently = true #удаляет за собой все зависимые ресурсы #опциональный параметр #тип - булев - force = true + #используется при удалении + #force = true #блок для резервирования ip #опциональный параметр #тип - блок ip - ip { + #используется при создании и обновлении + #ip { #тип подключения #обязательный параметр #тип - строка - type = "DHCP" + #type = "DHCP" #ip который необходимо зарезервировать #опциональный параметр #тип - строка - ip_addr = "192.168.5.5" + #ip_addr = "192.168.5.5" #mac который необходимо зарезервировать #опциональный параметр #тип - строка - mac_addr = "ff:ff:ff:ff:ff:ff" - } + #mac_addr = "ff:ff:ff:ff:ff:ff" + #} #блок для добавления natRule #опциональный параметр #тип - блок правил nat - nat_rule { + #используется при создании и обновлении + #nat_rule { #ip внутренний #опциональный параметр #тип - строка - int_ip = "192.168.0.28" + #int_ip = "192.168.0.28" #внутренний порт #опциональный параметр #тип - целое число - int_port = 80 + #int_port = 80 #начало диапазона внешних портов #опциональный параметр #тип - целое число - ext_port_start = 8001 + #ext_port_start = 8001 #конец диапазона внешних портов #опциональный параметр #тип - целое число - ext_port_end = 8001 + #ext_port_end = 8001 #протокол natRule #опциональный параметр #тип - строка - proto = "tcp" - } + #proto = "tcp" + #} #восстановление ресурса #опциональный параметр #тип - булев - restore = true + #используется при обновлении + #restore = true #перезапуск vnfDev #опциональный параметр #тип - булев - vnfdev_restart = true + #используется при обновлении + #vnfdev_restart = true #редеплой vnfDev #опциональный параметр #тип - булев - vnfdev_redeploy = true + #используется при обновлении + #vnfdev_redeploy = true #список dns #опциональный параметр - #применяется при создании и редактировании ресурса #если при создании указать пустой список, то ресурс создается с полем vnfs.dhcp.config.dns, имеющим значение по умолчанию #если при обновлении указать пустой список, то ресурс обновит в модели поле vnfs.dhcp.config.dns с текущего значения на пустой список #тип - список строк + #используется при создании и обновлении #dns = ["1.1.1.1", "2.2.2.2"] } diff --git a/samples/cloudapi/vins/resource_vins_static_route/main.tf b/samples/cloudapi/vins/resource_vins_static_route/main.tf index 2378e2c..5171ce3 100644 --- a/samples/cloudapi/vins/resource_vins_static_route/main.tf +++ b/samples/cloudapi/vins/resource_vins_static_route/main.tf @@ -9,7 +9,7 @@ 5. Удалять доступ виртуальным машинам к static routes */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,24 +33,28 @@ provider "decort" { } resource "decort_vins_static_route" "sr" { - #id Vins + #id VINS #обязательный параметр #тип - целое число + #используется при создании vins_id = 1111 #destination network #обязательный параметр #тип - строка + #используется при создании destination = "192.168.201.0" #destination network mask #обязательный параметр #тип - строка + #используется при создании netmask = "255.255.255.255" #ip-адрес из пула свободных IP-адресов ViNS ID #обязательный параметр #тип - строка + #используется при создании gateway = "192.168.201.40" } diff --git a/samples/cloudbroker/account/data_account/main.tf b/samples/cloudbroker/account/data_account/main.tf index ebdf6ef..8ef19c1 100644 --- a/samples/cloudbroker/account/data_account/main.tf +++ b/samples/cloudbroker/account/data_account/main.tf @@ -3,7 +3,7 @@ Получение информации об аккаунте */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_audits_list/main.tf b/samples/cloudbroker/account/data_account_audits_list/main.tf index a92dc34..83e69ec 100644 --- a/samples/cloudbroker/account/data_account_audits_list/main.tf +++ b/samples/cloudbroker/account/data_account_audits_list/main.tf @@ -3,7 +3,7 @@ Получение информации об использовании аккаунта */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_available_templates/main.tf b/samples/cloudbroker/account/data_account_available_templates/main.tf index 80d4cfe..3281ca6 100644 --- a/samples/cloudbroker/account/data_account_available_templates/main.tf +++ b/samples/cloudbroker/account/data_account_available_templates/main.tf @@ -3,7 +3,7 @@ Получение информации о доступных образах, которые использует аккаунт */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_computes_list/main.tf b/samples/cloudbroker/account/data_account_computes_list/main.tf index 5c79928..3faa400 100644 --- a/samples/cloudbroker/account/data_account_computes_list/main.tf +++ b/samples/cloudbroker/account/data_account_computes_list/main.tf @@ -3,7 +3,7 @@ Получение списка computes, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_disks_list/main.tf b/samples/cloudbroker/account/data_account_disks_list/main.tf index ee98198..0e393cf 100644 --- a/samples/cloudbroker/account/data_account_disks_list/main.tf +++ b/samples/cloudbroker/account/data_account_disks_list/main.tf @@ -3,7 +3,7 @@ Получение информации о дисках, которые использует аккаунт */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -59,13 +59,13 @@ data "decort_cb_account_disks_list" "adl" { #тип - строка #sort_by = "+name" - #кол-во страниц для вывода - #опицональный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #опицональный параметр + #опциональный параметр #тип - целое число #size = 1 diff --git a/samples/cloudbroker/account/data_account_flipgroups_list/main.tf b/samples/cloudbroker/account/data_account_flipgroups_list/main.tf index adc6534..f953c5e 100644 --- a/samples/cloudbroker/account/data_account_flipgroups_list/main.tf +++ b/samples/cloudbroker/account/data_account_flipgroups_list/main.tf @@ -3,7 +3,7 @@ Получение информации о flipgroups, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -68,13 +68,13 @@ data "decort_cb_account_flipgroups_list" "afgl" { #тип - строка #sort_by = "+name" - #кол-во страниц для вывода - #опицональный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #опицональный параметр + #опциональный параметр #тип - целое число #size = 1 diff --git a/samples/cloudbroker/account/data_account_get_resource_consumption/main.tf b/samples/cloudbroker/account/data_account_get_resource_consumption/main.tf index 68d8ec6..1e03723 100644 --- a/samples/cloudbroker/account/data_account_get_resource_consumption/main.tf +++ b/samples/cloudbroker/account/data_account_get_resource_consumption/main.tf @@ -3,7 +3,7 @@ Получение списка текущего потребления ресурсов аккаунта */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_list/main.tf b/samples/cloudbroker/account/data_account_list/main.tf index 5a70a6a..324ba0c 100644 --- a/samples/cloudbroker/account/data_account_list/main.tf +++ b/samples/cloudbroker/account/data_account_list/main.tf @@ -3,7 +3,7 @@ Получение всех аккаунтов,имеющихся в системе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_list_deleted/main.tf b/samples/cloudbroker/account/data_account_list_deleted/main.tf index 2b40a3c..5f19028 100644 --- a/samples/cloudbroker/account/data_account_list_deleted/main.tf +++ b/samples/cloudbroker/account/data_account_list_deleted/main.tf @@ -4,7 +4,7 @@ Информация предоставляется только по аккаунтам, удаленным без флага permanently */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_resource_consumption_list/main.tf b/samples/cloudbroker/account/data_account_resource_consumption_list/main.tf index b156ac6..fbec27a 100644 --- a/samples/cloudbroker/account/data_account_resource_consumption_list/main.tf +++ b/samples/cloudbroker/account/data_account_resource_consumption_list/main.tf @@ -3,7 +3,7 @@ Получение списка текущего потребления ресурсов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,6 +27,7 @@ provider "decort" { } data "decort_cb_account_resource_consumption_list" "rc_list" { + #нет входных параметров } output "test" { diff --git a/samples/cloudbroker/account/data_account_rg_list/main.tf b/samples/cloudbroker/account/data_account_rg_list/main.tf index 50794d0..357203b 100644 --- a/samples/cloudbroker/account/data_account_rg_list/main.tf +++ b/samples/cloudbroker/account/data_account_rg_list/main.tf @@ -3,7 +3,7 @@ Получение информации о ресурных группах, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/data_account_vins_list/main.tf b/samples/cloudbroker/account/data_account_vins_list/main.tf index 23526cb..18c42e0 100644 --- a/samples/cloudbroker/account/data_account_vins_list/main.tf +++ b/samples/cloudbroker/account/data_account_vins_list/main.tf @@ -3,7 +3,7 @@ Получение списка vins, используемых аккаунтом */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/account/resource_account/main.tf b/samples/cloudbroker/account/resource_account/main.tf index cb80e56..e5924ff 100644 --- a/samples/cloudbroker/account/resource_account/main.tf +++ b/samples/cloudbroker/account/resource_account/main.tf @@ -7,7 +7,7 @@ 3. Удалять аккаунт */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,47 +31,55 @@ provider "decort" { } resource "decort_cb_account" "acc" { - #имя аккаунта + #отображаемое имя аккаунта #обязательный параметр #тип - строка - #используется при создании и редактировании аккаунта + #используется при создании и обновлении account_name = "new_my_account" - #имя пользователя - создателя аккаунта + #имя пользователя, для которого создается аккаунт #обязательный параметр #тип - строка + #используется при создании username = "username@decs3o" + #описание + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #desc = "description" + #доступность аккаунта #опциональный параметр #тип - булев - #может применяться при создании аккаунта и редактировании аккаунта - enable = true + #используется при создании и обновлении + #enable = true #электронная почта, на которую будет отправлена информация о доступе #опциональный параметр #тип - строка #применяется при создании аккаунта - emailaddress = "fff@fff.ff" + #используется при создании + #emailaddress = "example@basis.ru" #отправлять ли на электронную почту письмо о доступе #опциональный параметр #тип - булев - #применяется при создании аккаунта и редактировании аккаунта - send_access_emails = true + #используется при создании и обновлении + #send_access_emails = true #пары sep_id и sep_pool_name #опциональный параметр #тип - массив строк - #применяется при создании аккаунта и редактировании аккаунта + #используется при создании и обновлении #каждая строка представляет собой пару, sepID_sepPoolName - uniq_pools = ["sep1_poolName1", "sep2_poolName2"] + #uniq_pools = ["sep1_poolName1", "sep2_poolName2"] #ограничение используемых ресурсов #опциональный параметр #тип - блок - #используется при создании и редактировании - resource_limits { + #используется при создании и обновлении + #resource_limits { #кол-во используемых ядер cpu #опциональный параметр #тип - целое число @@ -107,16 +115,17 @@ resource "decort_cb_account" "acc" { #тип - целое число #если установлена -1 - кол-во неограничено #gpu_units = 2 - } + #} #добавление/редактирование/удаление пользователей, к которым привязан аккаунт #опциональный параметр #тип - блок, кол-во таких блоков не ограничено - /*users { + #используется при создании и обновлении + #users { #id пользователя #обязательный параметр #тип - строка - user_id = "username_2@decs3o" + #user_id = "username_2@decs3o" #тип доступа пользователя #обязательный параметр @@ -125,45 +134,55 @@ resource "decort_cb_account" "acc" { #R - чтение #RCX - запись #ARCXDU - админ - access_type = "R" + #access_type = "R" + #} - } - */ #параметр распределения CPU #опциональный параметр #тип - строка #если "strict" виртуальная машина не может быть запущена из-за нехватки ресурсов. #"loose" позволяет запускать виртуальную машину, если недостаточно ресурсов. + #используется при создании и обновлении #cpu_allocation_parameter = "strict" #параметр коэффициента распределения CPU #опциональный параметр #тип - целое число #один pCPU = коэффициент*vCPU (принимает нулевое или положительное значение) + #используется при создании и обновлении #cpu_allocation_ratio = 1 - #мгновенное удаление аккаунта, если да - то аккаунт невозможно будет восстановить + #флаг для удаления аккаунта, без возможности восстановления #опциональный параметр #тип - булев - #используется при удалении аккаунта - #по-умолчанию - false + #по умолчанию - false + #используется при удалении #permanently = true + #причина восстановления после удаления или отключения + #опциональный параметр + #тип - строка + #используется при обновлении и удалении + #reason = "something_reason" + #флаг для восстановление аккаунта из корзины #опциональный параметр #тип - булев + #используется при обновлении #restore = true #предоставление аккаунту доступа к конкретным образам #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #available_templates = [1,2] #доступ к дополнительным функциям управления ВМ #опциональный параметр - #возможные значенния - "hugepages", "numa", "cpupin", "vfnic" + #возможные значенния - "hugepages", "numa", "cpupin", "vfnic", "dpdk, "changemac" #тип - массив строк + #используется при создании и обновлении #compute_features = ["hugepages", "numa", "cpupin", "vfnic"] } diff --git a/samples/cloudbroker/audit/data_audit/main.tf b/samples/cloudbroker/audit/data_audit/main.tf index d63a5c8..f0d715e 100644 --- a/samples/cloudbroker/audit/data_audit/main.tf +++ b/samples/cloudbroker/audit/data_audit/main.tf @@ -3,7 +3,7 @@ Получение аудита по guid */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/audit/data_audit_linked_jobs/main.tf b/samples/cloudbroker/audit/data_audit_linked_jobs/main.tf index e8c750a..65326d2 100644 --- a/samples/cloudbroker/audit/data_audit_linked_jobs/main.tf +++ b/samples/cloudbroker/audit/data_audit_linked_jobs/main.tf @@ -3,7 +3,7 @@ Получение списка заданий, связанных с указанный событием. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/audit/data_audit_list/main.tf b/samples/cloudbroker/audit/data_audit_list/main.tf index de2846f..9277a4e 100644 --- a/samples/cloudbroker/audit/data_audit_list/main.tf +++ b/samples/cloudbroker/audit/data_audit_list/main.tf @@ -3,7 +3,7 @@ Получение списка аудитов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -68,6 +68,11 @@ data "decort_cb_audit_list" "al" { #тип - целое число #page = 2 + #идентификатор запроса + #опциональный параметр + #тип - строка + #request_id = "35" + #размер страницы #опциональный параметр #тип - целое число diff --git a/samples/cloudbroker/audit/data_audits_export_to_file/main.tf b/samples/cloudbroker/audit/data_audits_export_to_file/main.tf index a5f2290..95372db 100644 --- a/samples/cloudbroker/audit/data_audits_export_to_file/main.tf +++ b/samples/cloudbroker/audit/data_audits_export_to_file/main.tf @@ -3,7 +3,7 @@ Получения списка аудитов в виде архива csv файлов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,7 +27,8 @@ provider "decort" { } data "decort_cb_audits_export_to_file" "audit" { - #путь, где будет создан архив, если не указан, создается в директории с main.tf с именем "audits.tar.gz" + #путь, где будет создан архив + #если не указан, создается в директории с main.tf с именем "audits.tar.gz" #обязательный параметр #тип - строка file_path = "abcdefg.tar.gz" diff --git a/samples/cloudbroker/disk/data_disk/main.tf b/samples/cloudbroker/disk/data_disk/main.tf index 073383b..94116d0 100644 --- a/samples/cloudbroker/disk/data_disk/main.tf +++ b/samples/cloudbroker/disk/data_disk/main.tf @@ -3,7 +3,7 @@ Получение информации об уже существующем диске. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/data_disk_list/main.tf b/samples/cloudbroker/disk/data_disk_list/main.tf index 09f9e01..b47372d 100644 --- a/samples/cloudbroker/disk/data_disk_list/main.tf +++ b/samples/cloudbroker/disk/data_disk_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -84,7 +84,7 @@ data "decort_cb_disk_list" "dl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudbroker/disk/data_disk_list_deleted/main.tf b/samples/cloudbroker/disk/data_disk_list_deleted/main.tf index a74192c..25060c6 100644 --- a/samples/cloudbroker/disk/data_disk_list_deleted/main.tf +++ b/samples/cloudbroker/disk/data_disk_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -69,7 +69,7 @@ data "decort_cb_disk_list_deleted" "dld" { #тип - строка #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudbroker/disk/data_disk_list_types/main.tf b/samples/cloudbroker/disk/data_disk_list_types/main.tf index a543b2e..41a34fb 100644 --- a/samples/cloudbroker/disk/data_disk_list_types/main.tf +++ b/samples/cloudbroker/disk/data_disk_list_types/main.tf @@ -3,7 +3,7 @@ Получение списка типов дисков (недетализированное) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/data_disk_list_types_detailed/main.tf b/samples/cloudbroker/disk/data_disk_list_types_detailed/main.tf index 141785f..d366a17 100644 --- a/samples/cloudbroker/disk/data_disk_list_types_detailed/main.tf +++ b/samples/cloudbroker/disk/data_disk_list_types_detailed/main.tf @@ -3,7 +3,7 @@ Получение списка типов дисков, но детально */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/data_disk_list_unattached/main.tf b/samples/cloudbroker/disk/data_disk_list_unattached/main.tf index eb90678..d8cf80f 100644 --- a/samples/cloudbroker/disk/data_disk_list_unattached/main.tf +++ b/samples/cloudbroker/disk/data_disk_list_unattached/main.tf @@ -3,7 +3,7 @@ Получение списка доступных неприсоединенных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/data_disk_replication/main.tf b/samples/cloudbroker/disk/data_disk_replication/main.tf index 7ece417..5a0b2e8 100644 --- a/samples/cloudbroker/disk/data_disk_replication/main.tf +++ b/samples/cloudbroker/disk/data_disk_replication/main.tf @@ -3,7 +3,7 @@ Получение статуса репликации диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/data_disk_snapshot/main.tf b/samples/cloudbroker/disk/data_disk_snapshot/main.tf index 2bca628..2372758 100644 --- a/samples/cloudbroker/disk/data_disk_snapshot/main.tf +++ b/samples/cloudbroker/disk/data_disk_snapshot/main.tf @@ -3,7 +3,7 @@ Получение конкретного снапшота */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/data_disk_snapshot_list/main.tf b/samples/cloudbroker/disk/data_disk_snapshot_list/main.tf index 7e39ba2..87a7cd7 100644 --- a/samples/cloudbroker/disk/data_disk_snapshot_list/main.tf +++ b/samples/cloudbroker/disk/data_disk_snapshot_list/main.tf @@ -3,7 +3,7 @@ Получение списка снапшотов диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/disk/resource_disk/main.tf b/samples/cloudbroker/disk/resource_disk/main.tf index 6dcbc45..65a0562 100644 --- a/samples/cloudbroker/disk/resource_disk/main.tf +++ b/samples/cloudbroker/disk/resource_disk/main.tf @@ -22,116 +22,112 @@ terraform { */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true } -resource "decort_cb_disk" "acl" { +resource "decort_cb_disk" "my_disk01" { #id аккаунта #обязательный параметр #тип - целое число - account_id = 88366 - - #gid - #обязательный параметр - #тип - целое число - gid = 212 + #используется при создании + account_id = 88366 #название диска #обязательный параметр #тип - строка - disk_name = "super-disk-re" - - #тип диска - #обязательный параметр - #тип - строка - #допустимые значения: "D", "B", "T" - type = "D" + #используется при создании и обновлении + disk_name = "super-disk-re" - #максимальный размер диска + #максимальный размер диска, в ГБ #обязательный параметр #тип - целое число - #значение по умолчанию 10 - size_max = 20 + #по умолчанию - 10 + #используется при создании и обновлении + size_max = 20 #описание диска #опциональный параметр #тип - строка - #desc = "description" - - #размер ssd - #опциональный параметр - #тип - целое число - #значение по умолчанию 0 - #ssd_size = 1 + #используется при создании и обновлении + #desc = "description" #max IOPS disk can perform #опциональный параметр #тип - целое число - #значение по умолчанию 2000 - #iops = 1 + #по умолчанию - 2000 + #используется при создании + #iops = 1 #sep id #опциональный параметр #тип - целое число - #значение по умолчанию 0 - #sep_id = 1 + #по умолчанию - 0 + #используется при создании + #sep_id = 1 #название pool #опциональный параметр #тип - строка - #pool = 1 + #используется при создании + #pool = 1 #список node #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #node_ids = [10,11] #флаг для восстановления диска #опциональный параметр #тип - булев - #restore = true + #используется при обновлении + #restore = true - #флаг для удаления диска + #флаг для удаления диска, без возможности восстановления #опциональный параметр #тип - булев + #используется при удалении #permanently = true #флаг поделиться диском #опциональный параметр #тип - булев - #shareable = true + #используется при создании и обновлении + #shareable = true #флаг отсоединения диска от машины перед удалением #опциональный параметр #тип - булев - #detach = true + #используется при удалении + #detach = true #настройки лимитов операций записи/чтения с диска #опциональный параметр #тип - блок #тип вложенных полей - целое число - iotune { - read_bytes_sec = 0 - read_bytes_sec_max = 0 - read_iops_sec = 0 - read_iops_sec_max = 0 - size_iops_sec = 0 - total_bytes_sec = 0 - total_bytes_sec_max = 0 - total_iops_sec = 3000 - total_iops_sec_max = 0 - write_bytes_sec = 0 - write_bytes_sec_max = 0 - write_iops_sec = 0 - write_iops_sec_max = 0 - } + #используется при создании и обновлении + #iotune { + #read_bytes_sec = 0 + #read_bytes_sec_max = 0 + #read_iops_sec = 0 + #read_iops_sec_max = 0 + #size_iops_sec = 0 + #total_bytes_sec = 0 + #total_bytes_sec_max = 0 + #total_iops_sec = 3000 + #total_iops_sec_max = 0 + #write_bytes_sec = 0 + #write_bytes_sec_max = 0 + #write_iops_sec = 0 + #write_iops_sec_max = 0 + #} } output "test" { - value = decort_cb_disk.acl + value = decort_cb_disk.my_disk01 } diff --git a/samples/cloudbroker/disk/resource_disk_snapshot/main.tf b/samples/cloudbroker/disk/resource_disk_snapshot/main.tf index 757fb55..8060c01 100644 --- a/samples/cloudbroker/disk/resource_disk_snapshot/main.tf +++ b/samples/cloudbroker/disk/resource_disk_snapshot/main.tf @@ -3,7 +3,7 @@ Ресурс снапшота диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -31,23 +31,27 @@ resource "decort_cb_disk_snapshot" "ds" { #номер диска #обязательный параметр #тип - целое число + #используется при создании disk_id = 20100 #ярлык диска #обязательный параметр #тип - строка + #используется при создании label = "label" #флаг rollback #опциональный параметр #тип - булев - #значение по умолчанию - false + #по умолчанию - false + #используется при создании и обновлении #rollback = true #timestamp #опциональный параметр #тип - целое число #применимо совместно с rollback = true + #используется при создании и обновлении #timestamp = 15 } diff --git a/samples/cloudbroker/dpdknet/data_dpdknet/main.tf b/samples/cloudbroker/dpdknet/data_dpdknet/main.tf index 719016c..d2550ee 100644 --- a/samples/cloudbroker/dpdknet/data_dpdknet/main.tf +++ b/samples/cloudbroker/dpdknet/data_dpdknet/main.tf @@ -3,7 +3,7 @@ Получение данных диска */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/dpdknet/data_dpdknet_list/main.tf b/samples/cloudbroker/dpdknet/data_dpdknet_list/main.tf index 4950a18..da385d1 100644 --- a/samples/cloudbroker/dpdknet/data_dpdknet_list/main.tf +++ b/samples/cloudbroker/dpdknet/data_dpdknet_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных дисков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -73,7 +73,7 @@ data "decort_cb_dpdknet_list" "dl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudbroker/dpdknet/resource_dpdknet/main.tf b/samples/cloudbroker/dpdknet/resource_dpdknet/main.tf index b716521..d04c945 100644 --- a/samples/cloudbroker/dpdknet/resource_dpdknet/main.tf +++ b/samples/cloudbroker/dpdknet/resource_dpdknet/main.tf @@ -34,42 +34,50 @@ resource "decort_cb_dpdknet" "dpdk" { #название #обязательный параметр #тип - строка + #используется при создании и обновлении name = "dpdk-name" #gid #обязательный параметр #тип - целое число + #используется при создании gid = 212 - #vlanid для тегирования траффика на интерфейсе для компьюта + #vlanid для тегирования трафика на интерфейсе для компьюта #обязательный параметр #тип - целое число + #используется при создании и обновлении vlan_id = 123 - #OVS bridge в котором будут создаваться интерфейсы для компьютов, созданные из этой сети + #ovs bridge в котором будут создаваться интерфейсы для компьютов, созданные из этой сети #обязательный параметр #тип - строка + #используется при создании и обновлении ovs_bridge = "OVSBridge" #описание сети #опциональный параметр #тип - строка + #используется при создании и обновлении #desc = "description" #список id аккаунтов, которым может быть выделена сеть в эксклюзивное пользование #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #account_access = [10,11] #список id ресурсных групп, которым может быть выделена сеть в эксклюзивное пользование #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #rg_access = [10,11] #флаг доступности сети для проведения с ней операций #опциональный параметр #по умолчанию - false #тип - булев + #используется при создании и обновлении #enabled = true } diff --git a/samples/cloudbroker/extnet/data_extnet/main.tf b/samples/cloudbroker/extnet/data_extnet/main.tf index 898d83f..9e34247 100644 --- a/samples/cloudbroker/extnet/data_extnet/main.tf +++ b/samples/cloudbroker/extnet/data_extnet/main.tf @@ -3,7 +3,7 @@ Получение информации о внешней сети */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/extnet/data_extnet_default/main.tf b/samples/cloudbroker/extnet/data_extnet_default/main.tf index 3bdfa5a..0864151 100644 --- a/samples/cloudbroker/extnet/data_extnet_default/main.tf +++ b/samples/cloudbroker/extnet/data_extnet_default/main.tf @@ -1,9 +1,9 @@ /* Пример использования -Получение информации о доступной внешней сети по-умолчанию +Получение информации о доступной внешней сети по умолчанию */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,6 +27,7 @@ provider "decort" { } data "decort_cb_extnet_default" "ed" { + #нет входных параметров } output "default_net_id_out" { diff --git a/samples/cloudbroker/extnet/data_extnet_list/main.tf b/samples/cloudbroker/extnet/data_extnet_list/main.tf index c77bf50..a48392d 100644 --- a/samples/cloudbroker/extnet/data_extnet_list/main.tf +++ b/samples/cloudbroker/extnet/data_extnet_list/main.tf @@ -3,7 +3,7 @@ Получение списка внешних сетей */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -68,7 +68,7 @@ data "decort_cb_extnet_list" "ex_list" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudbroker/extnet/data_extnet_reserved_ip_list/main.tf b/samples/cloudbroker/extnet/data_extnet_reserved_ip_list/main.tf index 5341a8d..62dab23 100644 --- a/samples/cloudbroker/extnet/data_extnet_reserved_ip_list/main.tf +++ b/samples/cloudbroker/extnet/data_extnet_reserved_ip_list/main.tf @@ -3,7 +3,7 @@ Получение информации о зарезервированных IP адресах или пуле адресов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/extnet/data_extnet_static_route/main.tf b/samples/cloudbroker/extnet/data_extnet_static_route/main.tf index 985e6ed..0e2c7f2 100644 --- a/samples/cloudbroker/extnet/data_extnet_static_route/main.tf +++ b/samples/cloudbroker/extnet/data_extnet_static_route/main.tf @@ -3,7 +3,7 @@ Получение информации о static routes по id в данном extnet */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,13 +27,13 @@ provider "decort" { } data "decort_cb_extnet_static_route" "route" { - #обязательный параметр #id extnet в котором добавлены routes + #обязательный параметр #тип - целое число extnet_id = 1111 + #id route #обязательный параметр - #id route #тип - целое число route_id = 1 } diff --git a/samples/cloudbroker/extnet/data_extnet_static_route_list/main.tf b/samples/cloudbroker/extnet/data_extnet_static_route_list/main.tf index 9fb387d..3ec48b1 100644 --- a/samples/cloudbroker/extnet/data_extnet_static_route_list/main.tf +++ b/samples/cloudbroker/extnet/data_extnet_static_route_list/main.tf @@ -3,7 +3,7 @@ Получение списка static routes в данном extnet */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,8 +27,8 @@ provider "decort" { } data "decort_cb_extnet_static_route_list" "list" { - #обязательный параметр #id extnet в котором добавлены routes + #обязательный параметр #тип - целое число extnet_id = 1111 } diff --git a/samples/cloudbroker/extnet/resource_extnet/main.tf b/samples/cloudbroker/extnet/resource_extnet/main.tf index 69462a7..00de923 100644 --- a/samples/cloudbroker/extnet/resource_extnet/main.tf +++ b/samples/cloudbroker/extnet/resource_extnet/main.tf @@ -9,7 +9,7 @@ 5. Удалять доступ аккаунтов к extnet */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -25,9 +25,9 @@ */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true @@ -37,165 +37,189 @@ resource "decort_cb_extnet" "new_extnet" { #наименование внешней сети #обязательный параметр #тип - строка + #используется при создании name = "test_extnet" #id платформы #обязательный параметр #тип - целое число + #используется при создании gid = 500 - #CIDR + #cidr #обязательный параметр #тип - строка + #используется при создании ipcidr = "192.168.0.0/24" #id виртуальной локальной сети #обязательный параметр #тип - целое число + #используется при создании vlan_id = 111 - #IP-адрес шлюза внешней сети + #ip-адрес шлюза внешней сети #опциональный параметр #тип - строка - #gateway = "test desc" + #используется при создании + #gateway = "1.1.1.1" #cписок DNS адресов #опциональный параметр #тип - массив строк + #используется при создании и обновлении #dns = ["8.8.8.8", "9.9.9.9"] #список NTP адресов #опциональный параметр #тип - массив строк + #используется при создании и обновлении #ntp = ["ntp0.ntp-servers.net", "ntp1.ntp-servers.net"] - #IP-адреса для проверки доступности сети + #ip-адреса для проверки доступности сети #опциональный параметр #тип - массив строк + #используется при создании #check_ips = ["191.255.0.0,", "191.255.0.0,"] #если true - DHCP-сервер создан не будет #опциональный параметр #тип - булев + #используется при создании #virtual = true #описание #опциональный параметр #тип - строка + #используется при создании и обновлении #desc = "test desc" #начало диапазона IP-адресов #опциональный параметр #тип - строка + #используется при создании #start_ip = "191.255.0.0" #окончание диапазона IP-адресов #опциональный параметр #тип - строка + #используется при создании #end_ip = "191.255.0.40" - #IP с которым будет создан vnfdev + #ip с которым будет создан vnfdev #опциональный параметр #тип - строка + #используется при создании #vnfdev_ip = "191.255.0.20" #количество предварительно созданных бронирований #опциональный параметр #тип - целое число #по умолчанию - 128 + #используется при создании #pre_reservations_num = 128 - + #имя bridge Openvswitch для подключения к внешней сети #опциональный параметр #тип - строка + #используется при создании #ovs_bridge = "some" #включение/выключение внешней сети #опциональный параметр #тип - булев + #используется при создании и обновлении #enable = true #сделать сеть сетью по умолчанию #опциональный параметр #тип - булев + #используется при обновлении #set_default = true #список исключенных IP адресов #опциональный параметр #тип - массив строк + #используется при создании и обновлении #excluded_ips = ["192.168.0.4", "192.168.0.5"] #диапазон исключенных IP адресов #опциональный параметр - #тип - блок, + #тип - блок #тип вложенных полей - строка - excluded_ips_range { - #начало диапазона - #обязательный параметр - #тип - строка - ip_start = "192.168.0.4" + #используется при создании и обновлении + #excluded_ips_range { + #начало диапазона + #обязательный параметр + #тип - строка + #ip_start = "192.168.0.4" + + #окончание диапазона + #обязательный параметр + #тип - строка + #ip_end = "192.168.0.50" + #} - #окончание диапазона - #обязательный параметр - #тип - строка - ip_end = "192.168.0.50" - } - #список id аккаунтов, которым предоставлен доступ к extnet #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #shared_with = [112, 123] - + #изменение настроек ограничения трафика сети - #значение по умолчанию 0, то есть без ограничений + #по умолчанию - 0, т.е. без ограничений #опциональный параметр #тип - блок, #тип вложенных полей - целое число - default_qos { - #ограничение внутреннего трафика в кбит - #опциональный параметр - #тип - целое число - #in_rate = 0 + #используется при обновлении + #default_qos { + #ограничение внутреннего трафика в кбит + #опциональный параметр + #тип - целое число + #in_rate = 0 - #ограничение внутреннего burst трафика в кбит - #опциональный параметр - #тип - целое число - #in_burst = 0 + #ограничение внутреннего burst трафика в кбит + #опциональный параметр + #тип - целое число + #in_burst = 0 - #ограничение внешнего трафика в кбит - #опциональный параметр - #тип - целое число - #e_rate = 0 - } + #ограничение внешнего трафика в кбит + #опциональный параметр + #тип - целое число + #e_rate = 0 + #} #список зарезервированных IP или пула адресов #опциональный параметр #тип - блок - reserved_ip { + #используется при создании и обновлении + #reserved_ip { #идентификатор аккаунта, для которого резервируются ресурсы #обязательный параметр #тип - целое число - account_id = 11111 + #account_id = 11111 #количество резервируемых IP #опциональный параметр #тип - целое число - ip_count = 15 + #ip_count = 15 #список резервируемых IP #опциональный параметр #тип - массив строк - ips = ["192.168.10.10", "192.168.10.20"] - } + #ips = ["192.168.10.10", "192.168.10.20"] + #} - #ID stack на который происходит миграция + #id stack на который происходит миграция #опциональный параметр #тип - целое число + #используется при обновлении #migrate = 1 #перезапустить сеть #опциональный параметр #тип - булев + #используется при обновлении #restart = true } diff --git a/samples/cloudbroker/extnet/resource_extnet_static_route/main.tf b/samples/cloudbroker/extnet/resource_extnet_static_route/main.tf index 7056ec3..7baca1c 100644 --- a/samples/cloudbroker/extnet/resource_extnet_static_route/main.tf +++ b/samples/cloudbroker/extnet/resource_extnet_static_route/main.tf @@ -9,7 +9,7 @@ 5. Удалять доступ виртуальным машинам к static routes */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,30 +33,34 @@ provider "decort" { } resource "decort_cb_extnet_static_route" "sr" { - #id extnet #обязательный параметр #тип - целое число + #используется при создании extnet_id = 1111 #destination network #обязательный параметр #тип - строка + #используется при создании destination = "192.168.201.0" #destination network mask #обязательный параметр #тип - строка + #используется при создании netmask = "255.255.255.255" - #IP-адрес из пула свободных IP-адресов extnet ID + #ip-адрес из пула свободных IP-адресов extnet ID #обязательный параметр #тип - строка + #используется при создании gateway = "192.168.201.40" #список виртуальных машин, которым будет предоставлен доступ к роуту #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #compute_ids = [111,222] } diff --git a/samples/cloudbroker/flipgroup/data_flipgroup/main.tf b/samples/cloudbroker/flipgroup/data_flipgroup/main.tf index 4a5d8dd..f7dde1f 100644 --- a/samples/cloudbroker/flipgroup/data_flipgroup/main.tf +++ b/samples/cloudbroker/flipgroup/data_flipgroup/main.tf @@ -3,7 +3,7 @@ Получение flipgroup по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/flipgroup/data_flipgroup_list/main.tf b/samples/cloudbroker/flipgroup/data_flipgroup_list/main.tf index fefa060..cd30bb4 100644 --- a/samples/cloudbroker/flipgroup/data_flipgroup_list/main.tf +++ b/samples/cloudbroker/flipgroup/data_flipgroup_list/main.tf @@ -3,7 +3,7 @@ Получение списка flipgroup */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/flipgroup/resource_flipgroup/main.tf b/samples/cloudbroker/flipgroup/resource_flipgroup/main.tf index e10b631..ecc1851 100644 --- a/samples/cloudbroker/flipgroup/resource_flipgroup/main.tf +++ b/samples/cloudbroker/flipgroup/resource_flipgroup/main.tf @@ -7,7 +7,7 @@ 3. Удалять flipgroup */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,43 +33,51 @@ resource "decort_cb_flipgroup" "fg" { #id аккаунта #обязательный параметр #тип - целое число + #используется при создании account_id = 999 #наименование Flipgroup #обязательный параметр #тип - строка + #используется при создании и обновлении name = "flipgroup_name" #тип сети #обязательный параметр #возможные значенния - "EXTNET", "VINS" #тип - строка + #используется при создании net_type = "EXTNET" #id сети #обязательный параметр #тип - целое число + #используется при создании net_id = 13 #тип клиентов #обязательный параметр #тип - строка #в данный момент поддерживается только тип 'compute' + #используется при создании client_type = "compute" #ip-адрес #опциональный параметр #тип - строка + #используется при создании #ip = "127.0.0.1" #cписок клиентов, прикрепленных к флипгруппе #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #client_ids = [11269] #описание флипгруппы #опциональный параметр #тип - строка + #используется при создании и обновлении #desc = "CHANGED" } diff --git a/samples/cloudbroker/grid/data_grid/main.tf b/samples/cloudbroker/grid/data_grid/main.tf index a836c1b..8e5adb0 100644 --- a/samples/cloudbroker/grid/data_grid/main.tf +++ b/samples/cloudbroker/grid/data_grid/main.tf @@ -3,7 +3,7 @@ Получение data source grid по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/grid/data_grid_get_consumption/main.tf b/samples/cloudbroker/grid/data_grid_get_consumption/main.tf index 5b163e9..1568345 100644 --- a/samples/cloudbroker/grid/data_grid_get_consumption/main.tf +++ b/samples/cloudbroker/grid/data_grid_get_consumption/main.tf @@ -3,7 +3,7 @@ Получение информации и потребленных и зарезервированных ресурсах grid по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/grid/data_grid_get_post_status/main.tf b/samples/cloudbroker/grid/data_grid_get_post_status/main.tf index 1d0ce80..0326d76 100644 --- a/samples/cloudbroker/grid/data_grid_get_post_status/main.tf +++ b/samples/cloudbroker/grid/data_grid_get_post_status/main.tf @@ -3,7 +3,7 @@ Проверка статуса активности текущей среды. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,11 +27,11 @@ provider "decort" { } data "decort_cb_grid_get_status" "gs" { - #нет входящих параметров + #нет входных параметров } data "decort_cb_grid_post_status" "ps" { - #нет входящих параметров + #нет входных параметров } output "test-gs" { diff --git a/samples/cloudbroker/grid/data_grid_get_settings/main.tf b/samples/cloudbroker/grid/data_grid_get_settings/main.tf index 52607fd..c4c74e7 100644 --- a/samples/cloudbroker/grid/data_grid_get_settings/main.tf +++ b/samples/cloudbroker/grid/data_grid_get_settings/main.tf @@ -3,7 +3,7 @@ Получение настроек grid (платформы) по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/grid/data_grid_list/main.tf b/samples/cloudbroker/grid/data_grid_list/main.tf index ce595e1..a443fd6 100644 --- a/samples/cloudbroker/grid/data_grid_list/main.tf +++ b/samples/cloudbroker/grid/data_grid_list/main.tf @@ -3,7 +3,7 @@ Получение списка grid */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/grid/data_grid_list_consumption/main.tf b/samples/cloudbroker/grid/data_grid_list_consumption/main.tf index dc22a09..201e34b 100644 --- a/samples/cloudbroker/grid/data_grid_list_consumption/main.tf +++ b/samples/cloudbroker/grid/data_grid_list_consumption/main.tf @@ -3,7 +3,7 @@ Получение информации и потребленных и зарезервированных ресурсах во всех grid */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,7 +27,7 @@ provider "decort" { } data "decort_cb_grid_list_consumption" "lc" { - #нет входящих параметров + #нет входных параметров } output "test" { diff --git a/samples/cloudbroker/grid/data_grid_list_emails/main.tf b/samples/cloudbroker/grid/data_grid_list_emails/main.tf index 6209cf5..137d40b 100644 --- a/samples/cloudbroker/grid/data_grid_list_emails/main.tf +++ b/samples/cloudbroker/grid/data_grid_list_emails/main.tf @@ -3,7 +3,7 @@ Получение списка email-адресов пользователей. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/grid/decort_cb_grid_get_diagnosis/main.tf b/samples/cloudbroker/grid/decort_cb_grid_get_diagnosis/main.tf index ca473da..4f0e135 100644 --- a/samples/cloudbroker/grid/decort_cb_grid_get_diagnosis/main.tf +++ b/samples/cloudbroker/grid/decort_cb_grid_get_diagnosis/main.tf @@ -3,7 +3,7 @@ Получение снимка платформы с дополнительной диагностической информацией, такой как журналы и т.д. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -32,7 +32,8 @@ data "decort_cb_grid_get_diagnosis" "grid" { #тип - целое число gid = 215 - #путь, где будет создан архив, если не указан, создается в директории с main.tf с именем "diagnosis.tar.gz" + #путь, где будет создан архив + #если не указан, создается в директории с main.tf с именем "diagnosis.tar.gz" #обязательный параметр #тип - строка file_path = "abcdefg.tar.gz" diff --git a/samples/cloudbroker/image/data_image/main.tf b/samples/cloudbroker/image/data_image/main.tf index a5defe9..d2fdcc7 100644 --- a/samples/cloudbroker/image/data_image/main.tf +++ b/samples/cloudbroker/image/data_image/main.tf @@ -3,7 +3,7 @@ Получение образа по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/image/data_image_list/main.tf b/samples/cloudbroker/image/data_image_list/main.tf index 63093b2..e7ac636 100644 --- a/samples/cloudbroker/image/data_image_list/main.tf +++ b/samples/cloudbroker/image/data_image_list/main.tf @@ -3,7 +3,7 @@ Получение списка образов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/image/data_image_list_stacks/main.tf b/samples/cloudbroker/image/data_image_list_stacks/main.tf index 95f74dc..914d667 100644 --- a/samples/cloudbroker/image/data_image_list_stacks/main.tf +++ b/samples/cloudbroker/image/data_image_list_stacks/main.tf @@ -3,7 +3,7 @@ Получение списка stack по id образа */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -53,7 +53,7 @@ data "decort_cb_image_list_stacks" "im" { #тип - строка #sort_by = "+name" - #номер страницы для отображения информации + #номер страницы для отображения #опциональный параметр #если не задан - отображается вся доступная информация #тип - целое число diff --git a/samples/cloudbroker/image/resource_delete_images/main.tf b/samples/cloudbroker/image/resource_delete_images/main.tf deleted file mode 100644 index a9e4d0f..0000000 --- a/samples/cloudbroker/image/resource_delete_images/main.tf +++ /dev/null @@ -1,58 +0,0 @@ -/* -Пример использования -Ресурса delete images -Ресурс является служебным -Его можно использоваться для быстрого удаления нескольких образов -*/ - -#Расскомментируйте этот код, -#и внесите необходимые правки в версию и путь, -#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером -/* -terraform { - required_providers { - decort = { - source = "basis/decort/decort" - version = "" - } - } -} -*/ - -provider "decort" { - authenticator = "decs3o" - #controller_url = - controller_url = "https://ds1.digitalenergy.online" - #oauth2_url = - oauth2_url = "https://sso.digitalenergy.online" - allow_unverified_ssl = true -} - -resource "decort_delete_images" "my_images" { - #массив, содержащий набор id образов для удаления - #обязательный параметр - #тип - массив целых чисел - image_ids = [6125] - - #параметр удаления - #опциональный тип - #по-умолчанию - false - #тип - булев - permanently = true -} - -output "test" { - value = decort_delete_images.my_images -} - -/* -Применение: -1. terraform plan -2. terraform apply -3. terraform destroy - - -Примечание: -Данный ресурс не поддерживает обновления параметров, поэтому, для переиспользования -необходимо удалить старое состояние и повторить шаги выше. -*/ diff --git a/samples/cloudbroker/image/resource_image/main.tf b/samples/cloudbroker/image/resource_image/main.tf index f9db50b..8acb5e1 100644 --- a/samples/cloudbroker/image/resource_image/main.tf +++ b/samples/cloudbroker/image/resource_image/main.tf @@ -7,7 +7,7 @@ 3. Удалять образ */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -22,9 +22,9 @@ terraform { */ provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true @@ -34,130 +34,140 @@ resource "decort_cb_image" "my_image" { #имя образа #обязательный параметр #тип - строка - #при изменении - изменяет название созданного образа + #используется при создании и обновлении name = "test_image_rename" #адрес образа #опциональный параметр - #внимание, для создания ресурса обязательно должен быть указан или url, или image_file + #внимание, для создания ресурса обязательно должен быть указан или url, или file_path #тип - строка + #используется при создании url = "https://colba.decs.online/index.php/s/G3H7AREngzeKGw2/download" #путь к образу для загрузки #опциональный параметр - #внимание, для создания ресурса обязательно должен быть указан или url, или image_file + #внимание, для создания ресурса обязательно должен быть указан или url, или file_path #тип - строка + #используется при создании file_path = "img.iso" - #grid id образа - #обязательный параметр - #тип - целое число - gid = 212 - #тип загрузки образа #обязательный параметр #тип - строка #возможные варианты: "bios" или "uefi" + #используется при создании boot_type = "bios" #тип образа #обязательный параметр #тип - строка - #возможные варианты - "linux", "windows" + #возможные варианты - "linux", "windows", "unknown" + #используется при создании image_type = "linux" #драйвера #обязательный параметр #тип - массив строк #возможные варианты - ["KVM_X86", "SVA_KVM_X86"], ["KVM_X86"], ["SVA_KVM_X86"] + #используется при создании drivers = ["KVM_X86", "SVA_KVM_X86"] #поддержка hot resize #опциональный параметр #тип - булев + #используется при создании и обновлении #hot_resize = true #id аккаунта владельца образа #опциональный параметр - #может быть использован как при создании, - #так и при редактировании образа #тип данных - целое число + #используется при создании и обновлении #account_id = 57252 #имя пользователя и пароль - #опциональные параметры, - #могут быть использованы как при создании образа, - #так и при его редактировании + #опциональные параметры #тип - строка + #используется при создании и обновлении #username = "Valera" #password = "123" #имя пользователя и пароль для загрузки бинарных данных - #опциональные параметры, - #могут быть использованы как при создании образа, - #так и при его редактировании + #опциональные параметры #тип - строка + #используется при создании #username_dl = "Valera1" #password_dl = "1231" #sep id - #опциональный параметр, используется при создании + #опциональный параметр #тип - целое число - #sep_id = 1206 + #используется при создании + #sep_id = 1206 #пул для создания образа - #опциональный тип, используется при создании образа + #опциональный параметр #тип - строка - #pool_name = "vmstor" + #используется при создании + #pool_name = "vmstor" #архитектура системы образа - #опциональный параметр, используется при создании + #опциональный параметр #тип - строка #доступные значения: "X86_64" + #используется при создании #architecture = "X86_64" #доступность образа - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при создании и обновлении #enabled = true #является ли образ загрузочным - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при создании и обновлении #bootable = true #позволяет создавать образ в синхронном режиме #опциональный параметр #тип - булев + #используется при создании #sync_mode = true #настройка доступа образа аккаунтам - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #пустой массив - удаление всех доступов, если они были + #используется при обновлении #shared_with = [28096, 57121] #установка computeci - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - целое число #чтобы сбросить, необходимо передать 0 + #используется при обновлении #computeci_id = 1 #доступные стаки - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #для удаления всех доступных стаков, необходимо передать пустой массив + #используется при обновлении #enabled_stacks = [9] #аккаунты, которым предоставляется доступ к образу #опциональный параметр #тип - массив целых чисел #для удаления всех доступных аккаунтов, необходимо передать пустой массив + #используется при обновлении #accounts = [9, 5] - #наименование сетевого интерфейса для вашего компьютера с Linux, eth - встроенный, ens - pci слот + #наименование сетевого интерфейса для вашего компьютера с Linux + #eth - встроенный, ens - pci слот #опциональный параметр #тип - строка + #используется при создании и обновлении #network_interface_naming = "ens" } diff --git a/samples/cloudbroker/image/resource_image_cdrom/main.tf b/samples/cloudbroker/image/resource_image_cdrom/main.tf index 1ae097e..85ff075 100644 --- a/samples/cloudbroker/image/resource_image_cdrom/main.tf +++ b/samples/cloudbroker/image/resource_image_cdrom/main.tf @@ -7,7 +7,7 @@ 3. Удалять образ */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,87 +34,91 @@ resource "decort_cb_cdrom_image" "my_image" { #имя образа #обязательный параметр #тип - строка - #при изменении - изменяет название созданного образа + #используется при создании и обновлении name = "test_image_rename" #адрес образа #обязательный параметр #тип - строка + #используется при создании url = "https://colba.decs.online/index.php/s/G3H7AREngzeKGw2/download" - #grid id образа - #обязательный параметр - #тип - целое число - gid = 212 - #драйвера #опциональный параметр #тип - массив строк #возможные варианты - ["KVM_X86", "SVA_KVM_X86"], ["KVM_X86"], ["SVA_KVM_X86"] - drivers = ["KVM_X86", "SVA_KVM_X86"] + #используется при создании + #drivers = ["KVM_X86", "SVA_KVM_X86"] #поддержка hot resize #опциональный параметр #тип - булев + #используется при создании и обновлении #hot_resize = true #id аккаунта владельца образа #опциональный параметр - #может быть использован как при создании, - #так и при редактировании образа - #тип данных - целое число + #тип - целое число + #используется при создании и обновлении #account_id = 57252 #имя пользователя и пароль для загрузки бинарных данных - #опциональные параметры, - #могут быть использованы как при создании образа, - #так и при его редактировании + #опциональные параметры #тип - строка + #используется при создании и обновлении #username_dl = "Valera1" #password_dl = "1231" #sep id - #опциональный параметр, используется при создании + #опциональный параметр #тип - целое число + #используется при создании #sep_id = 1206 #пул для создания образа - #опциональный тип, используется при создании образа + #опциональный тип #тип - строка + #используется при создании #pool_name = "vmstor" #архитектура системы образа - #опциаональный параметр, используется при создании + #опциональный параметр #тип - строка #доступные значения: "X86_64" + #используется при создании #architecture = "X86_64" #доступность образа - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при обновлении #enabled = true #настройка доступа образа аккаунтам - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел - #пустой маасив - удаление всех доступов, если они были + #пустой массив - удаление всех доступов, если они были + #используется при обновлении #shared_with = [28096, 57121] #установка computeci - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - целое число #чтобы сбросить, необходимо передать 0 + #используется при обновлении #computeci_id = 1 #доступные стаки - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #для удаления всех доступных стаков, необходимо передать пустой массив + #используется при обновлении #enabled_stacks = [9] #является ли образ загрузочным - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при обновлении #bootable = true } diff --git a/samples/cloudbroker/image/resource_image_from_blank_compute/main.tf b/samples/cloudbroker/image/resource_image_from_blank_compute/main.tf index f840f60..634744e 100644 --- a/samples/cloudbroker/image/resource_image_from_blank_compute/main.tf +++ b/samples/cloudbroker/image/resource_image_from_blank_compute/main.tf @@ -5,7 +5,7 @@ 3. Удалять ресурс */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -29,114 +29,115 @@ provider "decort" { } resource "decort_cb_image_from_blank_compute" "my_image" { - #ID виртуальной машины, созданной как blank - #используется для создания образа + #id виртуальной машины, созданной как blank #обязательный параметр #тип - целое число + #используется при создании compute_id = 1234 #имя образа - #используется для обновления и создания образа #обязательный параметр #тип - строка #при изменении - изменяет название созданного образа + #используется при создании и обновлении name = "test_image_rename" #тип загрузки образа - #используется для создания образа #обязательный параметр #тип - строка #возможные варианты: "bios" или "uefi" + #используется при создании boot_type = "bios" #тип образа - #используется для создания образа #обязательный параметр #тип - строка - #возможные варианты - "linux", "windows" + #возможные варианты - "linux", "windows", "unknown" + #используется при создании image_type = "linux" #имя пользователя для образа - #используется для обновления и создания образа #опциональный параметр #тип - строка + #используется при создании и обновлении #username = "userx" #пароль для образа - #используется для обновления и создания образа #опциональный параметр #тип - строка + #используется при создании и обновлении #password = "passx" - #ID аккаунта - #используется для обновления и создания образа + #id аккаунта #опциональный параметр #тип - целое число + #используется при создании и обновлении #account_id = 138 - #sep id - #используется для создания образа - #опциональный параметр - #тип - целое число - #sep_id = 1 - #название pool - #используется для создания образа #опциональный параметр #тип - строка + #используется при создании #pool_name = "pool" #поддержка hot resize - #используется для обновления и создания образа #опциональный параметр #тип - булев + #используется при создании и обновлении #hot_resize = true #флаг для создания образа в асинхронном режиме #опциональный параметр #по умолчанию - false #тип - булев + #используется при создании #async_mode = true #доступность образа - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при обновлении #enabled = true #является ли образ загрузочным - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при обновлении #bootable = true #настройка доступа образа аккаунтам - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #пустой массив - удаление всех доступов, если они были + #используется при обновлении #shared_with = [28096, 57121] #установка computeci - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - целое число #чтобы сбросить, необходимо передать 0 + #используется при обновлении #computeci_id = 1 #доступные стаки - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #для удаления всех доступных стаков, необходимо передать пустой массив + #используется при обновлении #enabled_stacks = [9] #аккаунты, которым предоставляется доступ к образу - #Используется для обновления и создания образа #опциональный параметр #тип - массив целых чисел #для удаления всех доступных аккаунтов, необходимо передать пустой массив + #используется при создании и обновлении #accounts = [9, 5] - #наименование сетевого интерфейса для вашего компьютера с Linux, eth - встроенный, ens - pci слот - #используется для обновления образа + #наименование сетевого интерфейса для вашего компьютера с Linux + #eth - встроенный, ens - pci слот #опциональный параметр #тип - строка + #используется при обновлении #network_interface_naming = "ens" } diff --git a/samples/cloudbroker/image/resource_image_from_platform_disk/main.tf b/samples/cloudbroker/image/resource_image_from_platform_disk/main.tf index 03ee91b..3542fd2 100644 --- a/samples/cloudbroker/image/resource_image_from_platform_disk/main.tf +++ b/samples/cloudbroker/image/resource_image_from_platform_disk/main.tf @@ -5,7 +5,7 @@ 3. Удалять ресурс */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -29,127 +29,127 @@ provider "decort" { } resource "decort_cb_image_from_platform_disk" "my_image" { - #ID платформенного диска - #используется для создания образа + #id платформенного диска #обязательный параметр #тип - целое число + #используется при создании disk_id = 1234 #имя образа - #используется для обновления и создания образа #обязательный параметр #тип - строка #при изменении - изменяет название созданного образа + #используется при создании и обновлении name = "test_image_rename" #тип загрузки образа - #используется для создания образа #обязательный параметр #тип - строка #возможные варианты: "bios" или "uefi" + #используется при создании boot_type = "bios" #тип образа - #используется для создания образа #обязательный параметр #тип - строка - #возможные варианты - "linux", "windows" + #возможные варианты - "linux", "windows", "unknown" + #используется при создании image_type = "linux" #архитектура образа - #используется для создания образа #обязательный параметр #возможные значения - X86_64 #тип - строка + #используется при создании architecture = "X86_64" #драйверы компьютов, подходящие для данного образа - #используется для создания образа #обязательный параметр #тип - массив строк + #используется при создании drivers = ["KVM_X86"] #имя пользователя для образа - #используется для обновления и создания образа #опциональный параметр #тип - строка + #используется при создании и обновлении #username = "userx" #пароль для образа - #используется для обновления и создания образа #опциональный параметр #тип - строка + #используется при создании и обновлении #password = "passx" - #ID аккаунта - #используется для обновления и создания образа + #id аккаунта #опциональный параметр #тип - целое число + #используется при создании и обновлении #account_id = 138 - #sep id - #используется для создания образа - #опциональный параметр - #тип - целое число - #sep_id = 1 - #название pool - #используется для создания образа #опциональный параметр #тип - строка + #используется при создании #pool_name = "pool" #поддержка hot resize - #используется для обновления и создания образа #опциональный параметр #тип - булев + #используется при создании и обновлении #hot_resize = true #является ли образ загрузочным - #опциональный параметр, используется на уже созданном ресурсе или при создании ресурса #тип - булев + #используется при создании и обновлении #bootable = true #флаг для создания образа в асинхронном режиме #опциональный параметр #по умолчанию - false #тип - булев + #используется при создании #async_mode = true #доступность образа - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - булев + #используется при обновлении #enabled = true #настройка доступа образа аккаунтам - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #пустой массив - удаление всех доступов, если они были + #используется при обновлении #shared_with = [28096, 57121] #установка computeci - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - целое число #чтобы сбросить, необходимо передать 0 + #используется при обновлении #computeci_id = 1 #доступные стаки - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #тип - массив целых чисел #для удаления всех доступных стаков, необходимо передать пустой массив + #используется при обновлении #enabled_stacks = [9] #аккаунты, которым предоставляется доступ к образу - #Используется для обновления и создания образа #опциональный параметр #тип - массив целых чисел #для удаления всех доступных аккаунтов, необходимо передать пустой массив + #используется при создании и обновлении #accounts = [9, 5] - #наименование сетевого интерфейса для вашего компьютера с Linux, eth - встроенный, ens - pci слот - #используется для обновления образа + #наименование сетевого интерфейса для вашего компьютера с Linux + #eth - встроенный, ens - pci слот #опциональный параметр #тип - строка + #используется при обновлении #network_interface_naming = "ens" } diff --git a/samples/cloudbroker/image/resource_virtual_image/main.tf b/samples/cloudbroker/image/resource_virtual_image/main.tf index d5c6b0b..c31d8ea 100644 --- a/samples/cloudbroker/image/resource_virtual_image/main.tf +++ b/samples/cloudbroker/image/resource_virtual_image/main.tf @@ -7,7 +7,7 @@ 3. Удалять образ */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,66 +34,70 @@ resource "decort_cb_virtual_image" "my_image" { #имя виртуального образа #обязательный параметр #тип - строка + #используется при создании и обновлении name = "test_vi_im_new_rename" - #id образа, на основе котрого будет создан виртуальный + #id образа, на основе которого будет создан виртуальный #обязательный параметр - #может быть также использован при редактировании #тип - целое число + #используется при создании и обновлении link_to = 6125 #id аккаунта владельца образа #опциональный параметр - #может быть использован при редактировании образа #тип данных - целое число + #используется при обновлении #account_id = 57252 #является ли образ загрузочным #опциональный параметр - #используется на уже созданном ресурсе #тип - булев + #используется при обновлении #bootable = true #поддержка hot resize #опциональный параметр #тип - булев + #используется при обновлении #hot_resize = true #имя пользователя #опциональный параметр - #может быть использован при редактировании образа #тип - строка + #используется при обновлении #username = "Valera" #пароль пользователя #опциональный параметр - #может быть использован при редактировании образа #тип - строка + #используется при обновлении #password = "123" #доступность образа #опциональный параметр - #используется на уже созданном ресурсе #тип - булев + #используется при обновлении #enabled = false #настройка доступа образа аккаунтам #опциональный параметр - #используется на уже созданном ресурсе - #пустой маасив - удаление всех доступов, если они были + #пустой массив - удаление всех доступов, если они были #тип - массив целых чисел + #используется при обновлении #shared_with = [28096, 57121] #установка computeci - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #чтобы сбросить, необходимо передать 0 #тип - целое число + #используется при обновлении #computeci_id = 1 #доступные стаки - #опциональный параметр, используется на уже созданном ресурсе + #опциональный параметр #для удаления всех доступных стаков, необходимо передать пустой массив #тип - массив целых чисел + #используется при обновлении #enabled_stacks = [9] } diff --git a/samples/cloudbroker/k8s/data_k8ci/main.tf b/samples/cloudbroker/k8s/data_k8ci/main.tf index 691d74d..44ac28b 100644 --- a/samples/cloudbroker/k8s/data_k8ci/main.tf +++ b/samples/cloudbroker/k8s/data_k8ci/main.tf @@ -3,7 +3,7 @@ Получение информации о k8ci */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8ci_list/main.tf b/samples/cloudbroker/k8s/data_k8ci_list/main.tf index d9e7c32..b2d936c 100644 --- a/samples/cloudbroker/k8s/data_k8ci_list/main.tf +++ b/samples/cloudbroker/k8s/data_k8ci_list/main.tf @@ -3,7 +3,7 @@ Получение списка k8ci */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8ci_list_deleted/main.tf b/samples/cloudbroker/k8s/data_k8ci_list_deleted/main.tf index fc3c74b..f6dd184 100644 --- a/samples/cloudbroker/k8s/data_k8ci_list_deleted/main.tf +++ b/samples/cloudbroker/k8s/data_k8ci_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных k8ci */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8s/main.tf b/samples/cloudbroker/k8s/data_k8s/main.tf index d7aae23..2b5ca80 100644 --- a/samples/cloudbroker/k8s/data_k8s/main.tf +++ b/samples/cloudbroker/k8s/data_k8s/main.tf @@ -3,7 +3,7 @@ Получение информации о k8s кластере */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8s_computes/main.tf b/samples/cloudbroker/k8s/data_k8s_computes/main.tf index 545dab0..761ef6a 100644 --- a/samples/cloudbroker/k8s/data_k8s_computes/main.tf +++ b/samples/cloudbroker/k8s/data_k8s_computes/main.tf @@ -3,7 +3,7 @@ Получение информации о компьютах k8s кластера */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/k8s/data_k8s_list/main.tf b/samples/cloudbroker/k8s/data_k8s_list/main.tf index 5688118..c5014f6 100644 --- a/samples/cloudbroker/k8s/data_k8s_list/main.tf +++ b/samples/cloudbroker/k8s/data_k8s_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных кластеров */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8s_list_deleted/main.tf b/samples/cloudbroker/k8s/data_k8s_list_deleted/main.tf index df7336a..7543c6b 100644 --- a/samples/cloudbroker/k8s/data_k8s_list_deleted/main.tf +++ b/samples/cloudbroker/k8s/data_k8s_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных кластеров */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8s_wg/main.tf b/samples/cloudbroker/k8s/data_k8s_wg/main.tf index 396a7cd..4ae7da7 100644 --- a/samples/cloudbroker/k8s/data_k8s_wg/main.tf +++ b/samples/cloudbroker/k8s/data_k8s_wg/main.tf @@ -3,7 +3,7 @@ Получение информации о k8s кластере */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8s_wg_cloud_init/main.tf b/samples/cloudbroker/k8s/data_k8s_wg_cloud_init/main.tf index aeeaf83..9f3ea0d 100644 --- a/samples/cloudbroker/k8s/data_k8s_wg_cloud_init/main.tf +++ b/samples/cloudbroker/k8s/data_k8s_wg_cloud_init/main.tf @@ -3,7 +3,7 @@ Получение информации о мета данных рабочей группы k8s кластера */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/data_k8s_wg_list/main.tf b/samples/cloudbroker/k8s/data_k8s_wg_list/main.tf index f54e273..bae2513 100644 --- a/samples/cloudbroker/k8s/data_k8s_wg_list/main.tf +++ b/samples/cloudbroker/k8s/data_k8s_wg_list/main.tf @@ -3,7 +3,7 @@ Получение списка доступных рабочих групп в кластере */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/k8s/resource_k8ci/main.tf b/samples/cloudbroker/k8s/resource_k8ci/main.tf index 00c483a..74dfc42 100644 --- a/samples/cloudbroker/k8s/resource_k8ci/main.tf +++ b/samples/cloudbroker/k8s/resource_k8ci/main.tf @@ -7,7 +7,7 @@ 3. Удалять k8ci */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,66 +34,79 @@ resource "decort_cb_k8ci" "k8ci" { #имя k8ci #обязательный параметр #тип - строка + #используется при создании name = "test" #тег версии #обязательный параметр #тип - строка + #используется при создании version = "1.1.1" #тип master driver #обязательный параметр #тип - строка + #используется при создании master_driver = "KVM_X86" #тип worker driver #обязательный параметр #тип - строка + #используется при создании worker_driver = "KVM_X86" - #максимальное число master компутов + #максимальное число master компьютов #обязательный параметр #тип - целое число + #используется при создании max_master_count = 1 - #максимальное число worker компутов + #максимальное число worker компьютов #обязательный параметр #тип - целое число + #используется при создании max_worker_count = 1 #id образа для master #обязательный параметр #тип - целое число + #используется при создании master_image_id = 4 #id образа для worker #обязательный параметр #тип - целое число + #используется при создании worker_image_id = 4 #network plugins #обязательный параметр #тип - массив строк + #используется при создании network_plugins = ["flannel"] #доступность k8ci #опциональный параметр #тип - булев + #используется при создании и обновлении #enabled = false - #флаг для моментального удаления k8ci + #флаг для удаления k8ci, без возможности восстановления #опциональный параметр #тип - булев + #используется при удалении #permanently = true #описание #опциональный параметр #тип - строка + #используется при создании #desc = "some" #доступность k8ci другим аккаунтам #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #shared_with = [1111] } diff --git a/samples/cloudbroker/k8s/resource_k8s_cp/main.tf b/samples/cloudbroker/k8s/resource_k8s_cp/main.tf index 5ac19e5..61f9df0 100644 --- a/samples/cloudbroker/k8s/resource_k8s_cp/main.tf +++ b/samples/cloudbroker/k8s/resource_k8s_cp/main.tf @@ -9,7 +9,7 @@ 5. Изменить кол-во ВМ в мастер-узле */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -35,155 +35,184 @@ resource "decort_cb_k8s_cp" "cp" { #название кластера #обязательный параметр #тип - строка + #используется при создании и обновлении name = "k8s-cp" #k8sCI ID #обязательный параметр #тип - целое число + #используется при создании k8sci_id = 55 #плагин сети #обязательный параметр #возможные значения - "flannel", "weavenet", "calico" #тип - строка + #используется при создании network_plugin = "flannel" #id ресурсной группы #обязательный параметр #тип - целое число + #используется при создании rg_id = 1387 #кол-во ядер мастер-узла #опциональный параметр #тип - целое число - cpu = 2 + #используется при создании + #cpu = 2 #объем RAM мастер-узла #опциональный параметр #тип - целое число - ram = 2048 + #используется при создании + #ram = 2048 #кол-во ВМ мастер-узла (1, 3 или 5) #опциональный параметр #тип - целое число - num = 1 + #используется при создании и обновлении + #num = 1 #размер диска мастер-узла #опциональный параметр #тип - целое число - disk = 10 + #используется при создании + #disk = 10 #описание кластера #опциональный параметр #тип - строка - desc = "" + #используется при создании и обновлении + #desc = "" #id extnet #опциональный параметр #тип - целое число - extnet_id = 0 + #используется при создании + #extnet_id = 0 #id vins #опциональный параметр #тип - целое число - vins_id = 1234 + #используется при создании + #vins_id = 1234 #sep ip #опциональный параметр #тип - целое число - sep_id = 0 + #используется при создании + #sep_id = 0 #название пула #опциональный параметр #тип - строка - sep_pool = "pool" + #используется при создании + #sep_pool = "pool" #старт/стоп кластера #опциональный параметр #тип - булев - start = true + #используется при создании и обновлении + #start = true #включить/отключить кластер #опциональный параметр #тип - булев - enabled = true + #используется при создании и обновлении + #enabled = true - #удалить кластер безвозвратно + #флаг для удаления k8s_cp, без возможности восстановления #опциональный параметр #тип - булев - permanently = true + #используется при удалении + #permanently = true #восстановить кластер из корзины #опциональный параметр #тип - булев - restore = true + #используется при обновлении + #restore = true #создать кластер с/без балансировщика нагрузки #опциональный параметр #тип - булев - with_lb = true + #используется при создании + #with_lb = true - #позволяет создать схему отказоустройчивой LB + #создать схему отказоустройчивой LB #опциональный параметр #тип - булев - ha_mode = true + #используется при создании + #ha_mode = true #дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes; #возможность взаимодействовать с кластером по FQDN #параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard) #опциональный параметр #тип - массив строк - additional_sans = ["192.168.201.0","192.168.201.1"] + #используется при создании + #additional_sans = ["192.168.201.0","192.168.201.1"] #используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере #это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации #опциональный параметр #тип - строка - init_config = "{JSON string}" + #используется при создании + #init_config = "{JSON string}" #используется для определения глобальных настроек и конфигураций для всего кластера #он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера #опциональный параметр #тип - строка - cluster_config = "{JSON string}" + #используется при создании + #cluster_config = "{JSON string}" #используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера #он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet #опциональный параметр #тип - строка - kubelet_config = "{JSON string}" + #используется при создании + #kubelet_config = "{JSON string}" #используется для настройки поведения и параметров присоединения node к кластеру #он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy #опциональный параметр #тип - строка - kube_proxy_config = "{JSON string}" + #используется при создании + #kube_proxy_config = "{JSON string}" #используется для настройки поведения и параметров присоединения node к кластеру #он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата #опциональный параметр #тип - строка - join_config = "{JSON string}" + #используется при создании + #join_config = "{JSON string}" #при создании кластере использовать подключение только к сети ExtNet #опциональный параметр #тип - булев - extnet_only = true + #используется при создании + #extnet_only = true #добавить ssl-сертификат в формате x509 pem #опциональный параметр #тип - файл с форматом в виде .crt - oidc_cert = file("ca.crt") + #используется при создании + #oidc_cert = file("ca.crt") #тип эмулируемой системы #опциональный параметр #тип - строка - chipset = "i440fx" + #используется при создании + #chipset = "i440fx" #пользовательские значения sysctl для LB #опциональный параметр #тип - массив мап - lb_sysctl_params = [{ key1 = "value1", key2 = "value2" }] + #используется при создании и обновлении + #lb_sysctl_params = [{ key1 = "value1", key2 = "value2" }] } output "cp_out" { diff --git a/samples/cloudbroker/k8s/resource_k8s_wg/main.tf b/samples/cloudbroker/k8s/resource_k8s_wg/main.tf index d8cd2ad..c4c1ad1 100644 --- a/samples/cloudbroker/k8s/resource_k8s_wg/main.tf +++ b/samples/cloudbroker/k8s/resource_k8s_wg/main.tf @@ -3,7 +3,7 @@ Получение информации о группе воркеров кластера Kubernetes(k8s) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -31,73 +31,85 @@ resource "decort_cb_k8s_wg" "wg" { #обязательный параметр #это значение должно быть и результат вызова decort_cb_k8s.cluster.k8s_id #тип - целое число + #используется при создании k8s_id = 1234 #имя worker group #обязательный параметр #тип - строка + #используется при создании name = "workers-2" #количество worker node для создания #опциональный параметр #тип - целое число #по умолчанию - 1 - num = 2 + #используется при создании и обновлении + #num = 2 #количество cpu для 1 worker node #опциональный параметр #тип - целое число #по умолчанию - 1 - cpu = 1 + #используется при создании + #cpu = 1 - #количество RAM для одной worker node в Мбайтах + #количество RAM для одной worker node в МБ #опциональный параметр #тип - целое число #по умолчанию - 1024 - ram = 1024 + #используется при создании + #ram = 1024 - #размер загрузочного диска для worker node, в Гбайтах + #размер загрузочного диска для worker node, в ГБ #опциональный параметр #по умолчанию - 0 #если установлен параметр 0, то размер диска будет равен размеру образа #тип - целое число - disk = 10 + #используется при создании + #disk = 10 #список строк с labels для worker группы, в формате: ["label1=value1", "label2=value2"] #опциональный параметр #тип - массив строк - labels = ["label1=value1", "label2=value2"] + #используется при создании + #labels = ["label1=value1", "label2=value2"] #список строк с annotations для worker группы, в формате: ["key1=value1", "key2=value2"] #опциональный параметр #тип - массив строк - annotations = ["key1=value1", "key2=value2"] + #используется при создании + #annotations = ["key1=value1", "key2=value2"] #список строк с taints для worker группы, в формате: ["key1=value1:NoSchedule", "key2=value2:NoExecute"] #опциональный параметр #тип - массив строк - taints = ["key1=value1", "key2=value2"] + #используется при создании + #taints = ["key1=value1", "key2=value2"] #id СХД для создания загрузочных дисков для Worker-групп по умолчанию. Использует sepId образа, если не указан. #опциональный параметр #тип - целое число - worker_sep_id = 1 + #используется при создании + #worker_sep_id = 1 #пул для хранения Workers. Если не заполнить, будет выбран системой #опциональный параметр #тип - целое число - worker_sep_pool = "worker_pool" + #используется при создании + #worker_sep_pool = "worker_pool" #перечень аргументов для cloud-init для виртуальных машин worker групп #опциональный параметр #тип - файл в формате YAML - #используется при создании и обновлении ресурса - cloud_init = file("initconfig.tftpl") + #используется при создании и обновлении + #cloud_init = file("initconfig.tftpl") #тип эмулируемой системы #опциональный параметр #тип - строка - chipset = "i440fx" + #используется при создании + #chipset = "i440fx" } diff --git a/samples/cloudbroker/kvmvm/data_kvmvm/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm/main.tf index 08badf3..851d8ca 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm/main.tf @@ -3,7 +3,7 @@ Получение данных о compute (виртуальной машине). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,12 +27,10 @@ provider "decort" { } data "decort_cb_kvmvm" "comp" { - #получение информации по идентификатору машины - compute_id #id виртуальной машины #обязательный параметр #тип - целое число compute_id = 11346 - } output "test" { diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_affinity_relations/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_affinity_relations/main.tf index 735309a..f79f5d4 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_affinity_relations/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_affinity_relations/main.tf @@ -3,7 +3,7 @@ Получение словаря ВМ (виртуальных машин), разделенного по правилам affinity и anti-affinity. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_audits/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_audits/main.tf index f2336ad..1084ae2 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_audits/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_audits/main.tf @@ -3,7 +3,7 @@ Получение данных об аудитах compute (виртулаьной машине) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_boot_order_get/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_boot_order_get/main.tf index 7f8ff2e..248f625 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_boot_order_get/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_boot_order_get/main.tf @@ -3,7 +3,7 @@ Получение информации о текущем порядке загрузки ВМ (виртуальной машины). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_get_audits/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_get_audits/main.tf index 3d1628d..1a58268 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_get_audits/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_get_audits/main.tf @@ -3,7 +3,7 @@ Получение данных об аудитах compute (виртулаьной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_get_console_url/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_get_console_url/main.tf index 7529366..67a02f4 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_get_console_url/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_get_console_url/main.tf @@ -3,7 +3,7 @@ Получение url compute (виртуальной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_get_log/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_get_log/main.tf index 543008c..0d46433 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_get_log/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_get_log/main.tf @@ -3,7 +3,7 @@ Получение логов compute (виртуальной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_list/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_list/main.tf index bfadf31..39939ac 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_list/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_list/main.tf @@ -3,7 +3,7 @@ Получение данных о списке compute (виртуальных машин) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -56,6 +56,11 @@ data "decort_cb_kvmvm_list" "compute_list" { #тип - строка #tech_status = "STOPPED" + #фильтр по названию вычислительного узла + #опциональный параметр + #тип - строка + #stack_name = "stack_name" + #фильтр по статусу #опциональный параметр #тип - строка @@ -91,10 +96,10 @@ data "decort_cb_kvmvm_list" "compute_list" { #тип - целое число #extnet_id = 100 - #флаг влючения в результат удаленных балансироващиков нагрузки + #флаг включения в результат удаленных балансировщиков нагрузки #опциональный параметр #если не задан - выводятся все доступные неудаленные балансировщики - #значение по-умолчанию - false + #по умолчанию - false #тип - булев #includedeleted = true diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_list_deleted/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_list_deleted/main.tf index 3992b73..f212bc4 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_list_deleted/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение данных о списке удаленных compute (виртуальных машин) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_migrate_storage_info/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_migrate_storage_info/main.tf index 6961c23..f9b01de 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_migrate_storage_info/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_migrate_storage_info/main.tf @@ -3,7 +3,7 @@ Получение информации о последней (включая текущую) миграции хранилища. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_pci_device_list/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_pci_device_list/main.tf index c337bae..7d23822 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_pci_device_list/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_pci_device_list/main.tf @@ -3,7 +3,7 @@ Получение данных о списке подключенных устройств (PCI) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_pfw_list/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_pfw_list/main.tf index 1306a6e..64260d7 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_pfw_list/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_pfw_list/main.tf @@ -3,7 +3,7 @@ Получение данных об списке port forwarding compute (виртулаьных машин) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_list/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_list/main.tf index 2fecc38..4d96c5f 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_list/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_list/main.tf @@ -3,7 +3,7 @@ Получение списка моментальных снимков ВМ (виртуальных машин). */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_usage/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_usage/main.tf index 7273313..c21087b 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_usage/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_snapshot_usage/main.tf @@ -3,7 +3,7 @@ Получение настоящего размера снимка ВМ (виртуальной машины) в хранилище. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -35,7 +35,7 @@ data "decort_cb_kvmvm_snapshot_usage" "snp_usage" { #label снимка #опциональный параметр #тип - строка - label = "test" + #label = "test" } diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_user_list/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_user_list/main.tf index 06cb064..dd88f43 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_user_list/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_user_list/main.tf @@ -3,7 +3,7 @@ Получение данных об юзерах compute (виртуальной машины) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/data_kvmvm_vgpu_list/main.tf b/samples/cloudbroker/kvmvm/data_kvmvm_vgpu_list/main.tf index 659fcb3..b14b0f6 100644 --- a/samples/cloudbroker/kvmvm/data_kvmvm_vgpu_list/main.tf +++ b/samples/cloudbroker/kvmvm/data_kvmvm_vgpu_list/main.tf @@ -3,7 +3,7 @@ Получение данных о списке подключенных графических процессоров */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/kvmvm/resource_kvmvm/main.tf b/samples/cloudbroker/kvmvm/resource_kvmvm/main.tf index 92acc28..9de6947 100644 --- a/samples/cloudbroker/kvmvm/resource_kvmvm/main.tf +++ b/samples/cloudbroker/kvmvm/resource_kvmvm/main.tf @@ -6,7 +6,7 @@ 2. Редактировать compute 3. Удалять compute */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -22,9 +22,9 @@ terraform { provider "decort" { - authenticator = "decs3o" + authenticator = "decs3o" #controller_url = - controller_url = "https://ds1.digitalenergy.online" + controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true @@ -33,108 +33,127 @@ provider "decort" { resource "decort_cb_kvmvm" "comp" { #имя compute #обязательный параметр - #мб изменен #тип - строка + #используется при создании и обновлении name = "test-tf-compute-update-new" - #id resource group + #id ресурсной группы #обязательный параметр #тип - целое число + #используется при создании rg_id = 1111 #тип драйвера для compute #обязательный параметр #тип - строка #возможные значения: "SVA_KVM_X86", "KVM_X86" + #используется при создании driver = "KVM_X86" #число cpu #обязательный параметр #тип - целое число + #используется при создании и обновлении cpu = 1 #кол-во оперативной памяти, МБ #обязательный параметр #тип - целое число + #используется при создании и обновлении ram = 2048 #тип эмулируемой системы #опциональный параметр #тип - строка #возможные значения: "i440fx", "Q35" + #используется при создании и обновлении #chipset = "i440fx" #id образа диска для создания compute #опциональный параметр #тип - целое число + #используется при создании и обновлении #image_id = 111 - #если значение равно True, параметры image_id, boot_disk_size, sep_id, pool игнорируются, и компьютер создается без загрузочного диска в остановленном состоянии + #создать вм без загрузочного диска + #если значение равно True, параметры image_id, boot_disk_size, sep_id, pool игнорируются + #компьютер создается без загрузочного диска в остановленном состоянии #опциональный параметр #тип - булев + #используется при создании #without_boot_disk = true #размер загрузочного диска #опциональный параметр #тип - целое число + #используется при создании и обновлении #boot_disk_size = 20 - #ID сепа для boot диска + #id сепа для boot диска #опциональный параметр #тип - целое число + #используется при создании #sep_id = 1 #название пула #опциональный параметр #тип - строка + #используется при создании #pool = "data02" #конфигурация cloud init #опциональный параметр #тип - файл в формате JSON + #используется при создании #cloud_init = file("initconfig.tftpl") #описание compute #опциональный параметр #тип - строка + #используется при создании и обновлении #description = "test update description in tf words update" #stack id #опциональный параметр #тип - целое число + #используется при создании #stack_id = 1 #id образа CD-ROM для загрузки - #используется при изменении ресурса, при повторном старте вм #опциональный параметр #тип - целое число + #используется при обновлении, при повторном старте вм #alt_boot_id = 1 #необходимость выравнивать ВМ по NUMA #опциональный параметр #тип - строка #возможные значения - "none, "strict", "loose" - #значение по умолчанию - "none" + #по умолчанию - "none" + #используется при создании и обновлении #numa_affinity = "loose" #необходимость запускать ВМ на выделенных CPU ядрах #опциональный параметр #тип - булев - #значение по умолчанию - false + #по умолчанию - false + #используется при создании и обновлении #cpu_pin = true #необходимость использовать для выделения RAM виртуальной машины Huge Pages #опциональный параметр #тип - булев - #значение по умолчанию - false + #по умолчанию - false + #используется при создании и обновлении #hp_backed = true - #создание и добавление диска дял compute + #создание и добавление диска для compute #опциональный параметр #тип - список дисков + #используется при создании и обновлении #disks { #имя диска - #Обязательный для диска параметр + #обязательный для диска параметр #тип - строка #disk_name = "disk_name" @@ -156,7 +175,7 @@ resource "decort_cb_kvmvm" "comp" { #опциональный параметр #тип - строка #pool = "data01" - + #список node #опциональный параметр #тип - массив целых чисел @@ -167,11 +186,11 @@ resource "decort_cb_kvmvm" "comp" { #тип - строка #desc = "" - #ID образа + #id образа #опциональный параметр #image_id = 378 - #флаг для удаления диска + #флаг для удаления диска, без возможности восстановления #опциональный параметр #тип - булев #permanently = false @@ -181,6 +200,7 @@ resource "decort_cb_kvmvm" "comp" { #опциональный параметр #может быть один, несколько или ни одного блока #тип - блок + #используется при создании и обновлении #affinity_rules { #тип правила #возможные значения - compute или node @@ -192,30 +212,31 @@ resource "decort_cb_kvmvm" "comp" { #возможные значения - RECOMMENDED и REQUIRED #обязательный параметр #тип - строка - #policy = "RECOMMENDED" + #policy = "RECOMMENDED" - #режим проверки + #режим проверки #возможные значения - ANY, EQ, NE #обязательный параметр #тип - строка - #mode = "ANY" + #mode = "ANY" #ключ правила #обязательный параметр #тип - строка - #key = "testkey" + #key = "testkey" #ключ правила - #необязательный параметр + #опциональный параметр #тип - строка - #value = "testvalue" - #} + #value = "testvalue" + #} #правила anti-affinity #опциональный параметр #может быть один, несколько или ни одного блока #тип - блок - #anti_affinity_rules { + #используется при создании и обновлении + #anti_affinity_rules { #тип правила #возможные значения - compute или node #обязательный параметр @@ -226,259 +247,282 @@ resource "decort_cb_kvmvm" "comp" { #возможные значения - RECOMMENDED и REQUIRED #обязательный параметр #тип - строка - #policy = "RECOMMENDED" + #policy = "RECOMMENDED" - #режим проверки + #режим проверки #возможные значения - ANY, EQ, NE #обязательный параметр #тип - строка - #mode = "ANY" + #mode = "ANY" #ключ правила #обязательный параметр #тип - строка - #key = "testkey" + #key = "testkey" #ключ правила - #необязательный параметр + #опциональный параметр #тип - строка - #value = "testvalue" - #} + #value = "testvalue" + #} #установка метки для вм #опциональный параметр #тип - строка + #используется при создании и обновлении #affinity_label = "test4" - #наименование системы #опциональный параметр - #используется при создании вм #по умолчанию - не задан #тип - строка - #is="" + #используется при создании + #is = "" #назначение вм #опциональный параметр - #используется при создании вм #по умолчанию - не задан #тип - строка + #используется при создании #ipa_type = "" - #ID экстра дисков + #id экстра дисков #опциональный параметр #тип - список чисел + #используется при создании и обновлении #extra_disks = [1234, 4322, 1344] - + #управление XML виртуальной машины #опциональный параметр #тип - строка (json-encoded) + #используется при создании и обновлении #custom_fields = "{`key`:`value`}" - #присоединения сетей и удаление сетей в компьюте + #присоединение сетей и удаление сетей в компьюте #опциональный параметр #тип - блок - #network { - #тип сети - #обязательный параметр - #возможные значения - "VINS", "EXTNET", "VFNIC", "DPDK" (при выборе типа DPDK, необходимо указать hp_backed = true) - #тип - строка - #net_type = "VINS" - - #ID сети - #обязательный параметр - #тип - целое число - #net_id = 1234 - - #IP адрес входящий в сеть - #опциональный параметр - #тип - строка - #ip_address = "127.0.0.1" - - #вес сети, указывается при необходимости указания порядка подключения сетей - #первой подключается сеть с наименьшим весом - #сеть с нулевым или неуказанным весом имеет наименьший приоритет - #опциональный параметр - #тип - целое число - #weight = 15 - - #максимальный объём данных, который может быть передан за одну итерацию - #используется только с сетями типа "DPDK" - #возможные значения - 1-9216 - #опциональный параметр - #тип - целое число - #mtu = 1500 - #} + #используется при создании и обновлении + #network { + #тип сети + #обязательный параметр + #возможные значения - "VINS", "EXTNET", "VFNIC", "DPDK" (при выборе типа DPDK, необходимо указать hp_backed = true) + #тип - строка + #net_type = "VINS" + + #id сети + #обязательный параметр + #тип - целое число + #net_id = 1234 + + #ip адрес входящий в сеть + #опциональный параметр + #тип - строка + #ip_address = "127.0.0.1" + + #mac-адрес интерфейса компьюта + #опциональный параметр + #тип - строка + #mac = "52:54:01:12:34:60" + + #вес сети, указывается при необходимости указания порядка подключения сетей + #первой подключается сеть с наименьшим весом + #сеть с нулевым или неуказанным весом имеет наименьший приоритет + #опциональный параметр + #тип - целое число + #weight = 15 + + #максимальный объём данных, который может быть передан за одну итерацию + #используется только с сетями типа "DPDK" + #возможные значения - 1-9216 + #опциональный параметр + #тип - целое число + #mtu = 1500 + #} #добавление и удаление тэгов #опциональный параметр #тип - блок - #tags { - #ключ для тэга - #обязательный параметр - #тип - строка - #key = "key" - - #значения тэга - #обязательный параметр - #тип - строка - #value = "value" - #} + #используется при создании и обновлении + #tags { + #ключ для тэга + #обязательный параметр + #тип - строка + #key = "key" + + #значения тэга + #обязательный параметр + #тип - строка + #value = "value" + #} #добавление и удаление port forwarding #опциональный параметр #тип - блок - #port_forwarding { - #номер внешнего начального порта для правила - #обязательный параметр - #тип - целое число - #public_port_start = 2023 - - #номер внешнего последнего порта для правила - #опциональный параметр - #тип - целое число - #по умолчанию - -1 - #public_port_end = 2023 - - #номер внутреннего базового порта - #обязательный параметр - #тип - целое число - #local_port = 80 - - #сетевой протокол - #обязательный параметр - #тип - строка - #proto = "tcp" - #} + #используется при создании и обновлении + #port_forwarding { + #номер внешнего начального порта для правила + #обязательный параметр + #тип - целое число + #public_port_start = 2023 + + #номер внешнего последнего порта для правила + #опциональный параметр + #тип - целое число + #по умолчанию - -1 + #public_port_end = 2023 + + #номер внутреннего базового порта + #обязательный параметр + #тип - целое число + #local_port = 80 + + #сетевой протокол + #обязательный параметр + #тип - строка + #proto = "tcp" + #} #предоставить/забрать пользователю доступ к компьюту #опциональный параметр #тип - блок - #user_access { - #имя юзера, которому предоставляем доступ - #обязательный параметр - #тип - строка - #username = "some@decs3o" - - #права: 'R' - только на чтение, 'RCX' - чтение/запись, 'ARCXDU' - админ - #обязательный параметр - #тип - строка - #access_type = "ARCXDU" - #} + #используется при создании и обновлении + #user_access { + #имя юзера, которому предоставляем доступ + #обязательный параметр + #тип - строка + #username = "some@decs3o" + + #права: 'R' - только на чтение, 'RCX' - чтение/запись, 'ARCXDU' - админ + #обязательный параметр + #тип - строка + #access_type = "ARCXDU" + #} #создать/удалить снапшот компьюта #опциональный параметр #тип - блок - #snapshot { - #лейбл снапшота - #обязательный параметр - #тип - строка - #label = "label1" - #} + #используется при создании и обновлении + #snapshot { + #лейбл снапшота + #обязательный параметр + #тип - строка + #label = "label1" + #} #флаг для удаления снапшотов в асинхронном режиме #опциональный параметр - #дефолтное значение - false #тип - булев + #по умолчанию - false + #используется при обновлении #snapshot_delete_async = true #rollback на нужный снапшот #опциональный параметр #не имеет смысла при отсутсвии снапшотов #тип - блок - #rollback { - #лейбл снапшота - #обязательный параметр - #тип - строка - #label = "label1" - #} + #используется при обновлении + #rollback { + #лейбл снапшота + #обязательный параметр + #тип - строка + #label = "label1" + #} #вставить/удалить СD rom #опциональный параметр #максимальное кол-во - 1 #тип - блок - #cd { - #ID образа диска CD rom - #обязательный параметр - #тип - целое число - #cdrom_id = 344 - #} + #используется при создании и обновлении + #cd { + #id образа диска CD rom + #обязательный параметр + #тип - целое число + #cdrom_id = 344 + #} #добавить компьют на стэк #опциональный параметр #тип - булев + #используется при создании и обновлении #pin_to_stack = true #список ядер для использования в механизме vcpupinning. Количество указанных ядер должно быть равно количеству виртуальных процессоров ВМ #игнорируется если cpu_pin=false или pin_to_stack=false #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #preferred_cpu = [1234, 456] #флаг для старта компьюта при рестарте ноды #опциональный параметр #тип - булев + #используется при создании и обновлении #auto_start_w_node = true - #флаг для принужительного добавления компьюта на стэк + #флаг для принудительного добавления компьюта на стэк #опциональный параметр #тип - булев + #используется при создании и обновлении #force_pin = true #список PCI девайсов #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #pci_devices = [1,2] #флаг доступности компьюта для проведения с ним операций #опциональный параметр #тип - булев + #используется при создании и обновлении #enabled = true #pause/resume компьюта #опциональный параметр #тип - булев + #используется при создании и обновлении #pause = true #сделать компьют заново #опциональный параметр #тип - булев + #используется при обновлении #reset = true #восстановить удаленный компьют из корзины #опциональный параметр #тип - булев + #используется при обновлении #restore = true #флаг для редеплоя компьюта #опциональный параметр #тип - булев + #используется при обновлении #force_stop = true - #флаг для предоставления дисков из node - #опциональный параметр - #тип - булев - #по умолчанию - true - #depresent = true - #флаг для ресайза компьюта #опциональный параметр #тип - булев + #используется при обновлении #force_resize = true #запуск/стоп компьюта #опциональный параметр #тип - булев + #используется при создании и обновлении #started = true #detach диска при удалении компьюта #опциональный параметр #тип - булев + #используется при удалении #detach_disks = true - #флаг для удаления компьюта + #флаг для удаления компьюта, без возможности восстановления #опциональный параметр #тип - булев + #используется при удалении #permanently = false #конфигурация параметров libvirt virtio интерфейса @@ -486,51 +530,79 @@ resource "decort_cb_kvmvm" "comp" { #добавление блока возможно только при выключенной виртуальной машине, #удаление блока удалит настройки только локально, состояние на платформе не изменится #тип - блок + #используется при создании и обновлении #libvirt_settings { - #тип сети - #обязательный параметр - #возможные значения - "VINS", "VFNIC", "DPDK" - #тип - строка - #net_type = "VINS" - - #ID сети - #обязательный параметр - #тип - целое число - #net_id = 1234 - - #tx mode - #опциональный параметр - #возможные значения - 'iothread', 'timer' или 'selected by hypervisor' - #тип - строка - #txmode = "iothread" - - #IO event - #опциональный параметр - #возможные значения - 'on', 'off' or 'selected by hypervisor' - #тип - строка - #ioeventfd = "on" - - #event ID - #опциональный параметр - #возможные значения - 'on', 'off' or 'selected by hypervisor' - #тип - строка - #event_idx = "off" - - #количество очередей - #опциональный параметр - #тип - целое число - #queues = "4" - - #длина очереди RX - #опциональный параметр - #тип - целое число - #rx_queue_size = "1024" - - #длина очереди TX - #опциональный параметр - #тип - целое число - #tx_queue_size = "1024" - #} + #тип сети + #обязательный параметр + #возможные значения - "VINS", "VFNIC", "DPDK" + #тип - строка + #net_type = "VINS" + + #id сети + #обязательный параметр + #тип - целое число + #net_id = 1234 + + #tx mode + #опциональный параметр + #возможные значения - 'iothread', 'timer' или 'selected by hypervisor' + #тип - строка + #txmode = "iothread" + + #io event + #опциональный параметр + #возможные значения - 'on', 'off' or 'selected by hypervisor' + #тип - строка + #ioeventfd = "on" + + #event ID + #опциональный параметр + #возможные значения - 'on', 'off' or 'selected by hypervisor' + #тип - строка + #event_idx = "off" + + #количество очередей + #опциональный параметр + #тип - целое число + #queues = "4" + + #длина очереди RX + #опциональный параметр + #тип - целое число + #rx_queue_size = "1024" + + #длина очереди TX + #опциональный параметр + #тип - целое число + #tx_queue_size = "1024" + #} + + #тип ВМ + #возможные значения - linux, windows, unknown + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #loader_type = "unknown" + + #тип загрузки образа + #возможные значения - bios, uefi + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #boot_type = "bios" + + #изменение размера ВМ + #опциональный параметр + #тип - булев + #используется при создании и обновлении + #hot_resize = false + + #наименование сетевого интерфейса + #возможные значения - eth, ens + #опциональный параметр + #тип - строка + #используется при создании и обновлении + #network_interface_naming = "ens" } output "test" { diff --git a/samples/cloudbroker/lb/data_lb/main.tf b/samples/cloudbroker/lb/data_lb/main.tf index 5b25fcb..c67049e 100644 --- a/samples/cloudbroker/lb/data_lb/main.tf +++ b/samples/cloudbroker/lb/data_lb/main.tf @@ -1,9 +1,9 @@ /* Пример использования -Получение информации о load balancer (балансировщик нагрузок) +Получение информации о load balancer (балансировщик нагрузки) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -27,7 +27,7 @@ provider "decort" { } data "decort_cb_lb" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число lb_id = 238 diff --git a/samples/cloudbroker/lb/data_lb_list/main.tf b/samples/cloudbroker/lb/data_lb_list/main.tf index 8bf5bbf..fa071de 100644 --- a/samples/cloudbroker/lb/data_lb_list/main.tf +++ b/samples/cloudbroker/lb/data_lb_list/main.tf @@ -3,7 +3,7 @@ Получение списка load balancer (балансировщиков нагрузки) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -70,7 +70,7 @@ data "decort_cb_lb_list" "lbl" { #флаг включения в результат удаленных балансировщиков нагрузки #опциональный параметр #тип - булев - #по-умолчанию - false + #по умолчанию - false #если не задан - выводятся все доступные неудаленные балансировщики #includedeleted = true diff --git a/samples/cloudbroker/lb/data_lb_list_deleted/main.tf b/samples/cloudbroker/lb/data_lb_list_deleted/main.tf index fe3e4ce..336135f 100644 --- a/samples/cloudbroker/lb/data_lb_list_deleted/main.tf +++ b/samples/cloudbroker/lb/data_lb_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных load balancer (балансировщиков нагрузок) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/lb/resource_lb/main.tf b/samples/cloudbroker/lb/resource_lb/main.tf index 5b668b8..62f8d96 100644 --- a/samples/cloudbroker/lb/resource_lb/main.tf +++ b/samples/cloudbroker/lb/resource_lb/main.tf @@ -7,7 +7,7 @@ 3. Удалять load balancer */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,24 +34,28 @@ resource "decort_cb_lb" "lb" { #id ресурсной группы для создания балансировщика #обязательный параметр #тип - целое число + #используется при создании rg_id = 1111 #наименование load balancer #обязательный параметр #тип - строка + #используется при создании name = "tf-test-lb" #id внешней сети #опциональный параметр #id внешней сети и id виртуальной сети не могут быть одновременно = 0 #тип - целое число - extnet_id = 6 + #используется при создании + #extnet_id = 6 #id виртуальной сети #опциональный параметр #id внешней сети и id виртуальной сети не могут быть одновременно = 0 #тип - целое число - vins_id = 758 + #используется при создании + #vins_id = 758 #флаг запуска load balancer #обязательный параметр @@ -59,57 +63,67 @@ resource "decort_cb_lb" "lb" { #то для успешного старта, он должен быть доступен (enable = true) #по умолчанию - true #тип - булев - start = true + #используется при создании и обновлении + #start = true - #позволяет создать схему отказоустройчивой LB + #создать схему отказоустойчивой LB #опциональный параметр #тип - булев + #используется при создании и обновлении #ha_mode = true #описание #опциональный параметр #тип - строка - #descс= "temp super lb for testing tf provider" + #используется при создании и обновлении + #desc= "temp super lb for testing tf provider" #флаг доступности load balancer #опциональный параметр #тип - булев + #используется при создании и обновлении #enable = true #флаг перезапуска load balancer #опциональный параметр #перезагрузка срабатывает только при изменении флага с false на true #тип - булев + #используется при обновлении #restart = false #флаг сброса конфигурации load balancer #опциональный параметр #сброс срабатывает только при изменении флага с false на true #тип - булев + #используется при обновлении #config_reset = false - #флаг моментального удаления load balancer + #флаг для удаления load balancer, без возможности восстановления #опциональный параметр #применяется при выполнении команды terraform destroy #по умолчанию - false #тип - булев + #используется при удалении #permanently = false #флаг восстановления load balancer #опциональный параметр #восстановить можно load balancer, удаленным с флагом permanently = false #тип - булев + #используется при обновлении #restore = true #флаг используемый при рестарте load balancer #опциональный параметр - #значение по умолчанию - true, при данном значении рестарт производится на обоих нодах в HA mode + #по умолчанию - true, при данном значении рестарт производится на обоих нодах в HA mode #тип - булев + #используется при обновлении #safe = true #пользовательские значения sysctl для LB #опциональный параметр #тип - список мап + #используется при создании и обновлении #sysctl_params = [{ key1 = "value1", key2 = "value2" }] } diff --git a/samples/cloudbroker/lb/resource_lb_backend/main.tf b/samples/cloudbroker/lb/resource_lb_backend/main.tf index fd5e87f..74f5b23 100644 --- a/samples/cloudbroker/lb/resource_lb_backend/main.tf +++ b/samples/cloudbroker/lb/resource_lb_backend/main.tf @@ -7,7 +7,7 @@ 3. Удалять backend */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,15 +30,17 @@ provider "decort" { allow_unverified_ssl = true } -resource "decort_cb_lb_backend" "lb" { - #id балансировщика нагрузок +resource "decort_cb_lb_backend" "lbb" { + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя бекенда для создания сервера #обязательный параметр #тип - строка + #используется при создании name = "testBackend" #алгоритм балансировки @@ -46,6 +48,7 @@ resource "decort_cb_lb_backend" "lb" { #доступные значения - "roundrobin", "static-rr", "leastconn" #по умолчанию - "roundrobin" #тип - строка + #используется при создании и обновлении #algorithm = "roundrobin" #------------------- @@ -56,42 +59,49 @@ resource "decort_cb_lb_backend" "lb" { #опциональный параметр #по умолчанию - 5000 #тип - целое число + #используется при создании и обновлении #inter = 5000 #интервал между проверками доступности сервера после восстановления, в миллисекундах #опциональный параметр #по умолчанию - 10000 #тип - целое число + #используется при создании и обновлении #downinter = 1000 #кол-во проверок, которые сервер должен успешно пройти #опциональный параметр #тип - целое число #по умолчанию - 2 + #используется при создании и обновлении #rise = 2 #кол-во проверок, которые сервер может не пройти и после этого получить статус "unavailable" #опциональный параметр #по умолчанию - 2 #тип - целое число + #используется при создании и обновлении #fall = 2 #кол-во миллисекунд - время между получением сервера статуса "available" и открытием соединений #опциональный параметр #по умолчанию - 60000 #тип - целое число + #используется при создании и обновлении #slowstart = 60000 #максимальное кол-во соединений сервера, при достижении этого кол-ва, сервер выходит из схемы балансирования #опциональный параметр #по умолчанию - 250 #тип - целое число + #используется при создании и обновлении #maxconn = 250 - #максимальное кол-во соединений в очереди серевера, при достижении этого кол-ва, соединения будут перенаправлены на другой сервер + #максимальное кол-во соединений в очереди сервера, при достижении этого кол-ва, соединения будут перенаправлены на другой сервер #опциональный параметр #по умолчанию - 256 #тип - целое число + #используется при создании и обновлении #maxqueue = 256 #вес сервера для балансировки @@ -100,10 +110,11 @@ resource "decort_cb_lb_backend" "lb" { #макс - 255 #по умолчанию - 100 #тип - целое число + #используется при создании и обновлении #weight = 100 } output "test" { - value = decort_cb_lb_backend.lb + value = decort_cb_lb_backend.lbb } diff --git a/samples/cloudbroker/lb/resource_lb_backend_server/main.tf b/samples/cloudbroker/lb/resource_lb_backend_server/main.tf index 037613e..34c3036 100644 --- a/samples/cloudbroker/lb/resource_lb_backend_server/main.tf +++ b/samples/cloudbroker/lb/resource_lb_backend_server/main.tf @@ -7,7 +7,7 @@ 3. Удалять server */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,30 +30,35 @@ provider "decort" { allow_unverified_ssl = true } -resource "decort_cb_lb_backend_server" "lb" { - #id балансировщика нагрузок +resource "decort_cb_lb_backend_server" "lbbs" { + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя бекенда для создания сервера #обязательный параметр #тип - строка + #используется при создании backend_name = "testBackend" #имя сервера #обязательный параметр #тип - строка + #используется при создании name = "testServer" #ip адрес сервера #обязательный параметр #тип - строка + #используется при создании address = "192.168.5.33" #порт сервера #обязательный параметр #тип - целое число + #используется при создании port = 6553 #проверка доступности сервера @@ -61,48 +66,56 @@ resource "decort_cb_lb_backend_server" "lb" { #доступные значения - "disabled", "enabled" #по умолчанию - "enabled" #тип - строка + #используется при создании #check = "enabled" #интервал между проверками, в миллисекундах #опциональный параметр #по умолчанию - 5000 #тип - целое число + #используется при создании и обновлении #inter = 5000 #интервал между проверками доступности сервера после восстановления, в миллисекундах #опциональный параметр #по умолчанию - 10000 #тип - целое число + #используется при создании и обновлении #downinter = 1000 #кол-во проверок, которые сервер должен успешно пройти #опциональный параметр #по умолчанию - 2 #тип - целое число + #используется при создании и обновлении #rise = 2 #кол-во проверок, которые сервер может не пройти и после этого получить статус "unavailable" #опциональный параметр #по умолчанию - 2 #тип - целое число + #используется при создании и обновлении #fall = 2 #кол-во миллисекунд - время между получением сервера статуса "available" и открытием соединений #опциональный параметр #по умолчанию - 60000 #тип - целое число + #используется при создании и обновлении #slowstart = 60000 #максимальное кол-во соединений сервера, при достижении этого кол-ва, сервер выходит из схемы балансирования #опциональный параметр #по умолчанию - 250 #тип - целое число + #используется при создании и обновлении #maxconn = 250 #максимальное кол-во соединений в очереди серевера, при достижении этого кол-ва, соединения будут перенаправлены на другой сервер #опциональный параметр #по умолчанию - 256 #тип - целое число + #используется при создании и обновлении #maxqueue = 256 #вес сервера для балансировки @@ -111,10 +124,11 @@ resource "decort_cb_lb_backend_server" "lb" { #макс - 255 #по умолчанию - 100 #тип - целое число + #используется при создании и обновлении #weight = 100 } output "test" { - value = decort_cb_lb_backend_server.lb + value = decort_cb_lb_backend_server.lbbs } diff --git a/samples/cloudbroker/lb/resource_lb_frontend/main.tf b/samples/cloudbroker/lb/resource_lb_frontend/main.tf index 1c43d27..3f21776 100644 --- a/samples/cloudbroker/lb/resource_lb_frontend/main.tf +++ b/samples/cloudbroker/lb/resource_lb_frontend/main.tf @@ -6,7 +6,7 @@ 2. Удалять frontend */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,19 +30,22 @@ provider "decort" { } resource "decort_cb_lb_frontend" "lb" { - #id балансировщика нагрузок + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя бекенда для создания фронтенда #обязательный параметр #тип - строка + #используется при создании backend_name = "testBackend" #имя фронтенда #обязательный параметр #тип - строка + #используется при создании name = "testFrontend" } diff --git a/samples/cloudbroker/lb/resource_lb_frontend_bind/main.tf b/samples/cloudbroker/lb/resource_lb_frontend_bind/main.tf index 8f3e013..ee8802f 100644 --- a/samples/cloudbroker/lb/resource_lb_frontend_bind/main.tf +++ b/samples/cloudbroker/lb/resource_lb_frontend_bind/main.tf @@ -1,13 +1,13 @@ /* Пример использования -Ресурса load balancer frontend bind (привязка фронтенда балансировщика нагрузок) +Ресурса load balancer frontend bind (привязка фронтенда балансировщика нагрузки) Ресурс позволяет: 1. Создавать привязку 2. Редактировать привязку 3. Удалять привязку */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -30,34 +30,39 @@ provider "decort" { allow_unverified_ssl = true } -resource "decort_cb_lb_frontend_bind" "lb" { - #id балансировщика нагрузок +resource "decort_cb_lb_frontend_bind" "lbfb" { + #id балансировщика нагрузки #обязательный параметр #тип - целое число + #используется при создании lb_id = 668 #имя фронтенда для создания привязки #обязательный параметр #тип - строка + #используется при создании frontend_name = "testFrontend" #наименование привязки #обязательный параметр #тип - строка + #используется при создании name = "testBinding" #адрес привязки фронтенда #обязательный параметр #тип - строка + #используется при создании и обновлении address = "111.111.111.111" #порт для привязки фронтенда #обязательный параметр #тип - целое число + #используется при создании и обновлении port = 1111 } output "test" { - value = decort_cb_lb_frontend_bind.lb + value = decort_cb_lb_frontend_bind.lbfb } diff --git a/samples/cloudbroker/node/data_node/main.tf b/samples/cloudbroker/node/data_node/main.tf index 08fbffa..b8bcffd 100644 --- a/samples/cloudbroker/node/data_node/main.tf +++ b/samples/cloudbroker/node/data_node/main.tf @@ -3,7 +3,7 @@ Получение информации о ноде платформы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/node/data_node_list/main.tf b/samples/cloudbroker/node/data_node_list/main.tf index 564925b..4f711d0 100644 --- a/samples/cloudbroker/node/data_node_list/main.tf +++ b/samples/cloudbroker/node/data_node_list/main.tf @@ -3,7 +3,7 @@ Получение списка нод платформы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/pcidevice/data_pcidevice/main.tf b/samples/cloudbroker/pcidevice/data_pcidevice/main.tf index 764735f..2026fe2 100644 --- a/samples/cloudbroker/pcidevice/data_pcidevice/main.tf +++ b/samples/cloudbroker/pcidevice/data_pcidevice/main.tf @@ -3,7 +3,7 @@ Получение информации об устройстве */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/pcidevice/data_pcidevice_list/main.tf b/samples/cloudbroker/pcidevice/data_pcidevice_list/main.tf index ecc8e9f..8290fbe 100644 --- a/samples/cloudbroker/pcidevice/data_pcidevice_list/main.tf +++ b/samples/cloudbroker/pcidevice/data_pcidevice_list/main.tf @@ -3,7 +3,7 @@ Получение информации обо всех доступных устройствах */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -32,7 +32,7 @@ data "decort_cb_pcidevice_list" "pdl" { #тип - целое число #by_id = 111 - #фильтр по id Compute + #фильтр по id compute #опциональный параметр #тип - целое число #compute_id = 123 diff --git a/samples/cloudbroker/pcidevice/resource_pcidevice/main.tf b/samples/cloudbroker/pcidevice/resource_pcidevice/main.tf index 24c7de2..60c2cb7 100644 --- a/samples/cloudbroker/pcidevice/resource_pcidevice/main.tf +++ b/samples/cloudbroker/pcidevice/resource_pcidevice/main.tf @@ -7,7 +7,7 @@ 3. Удалять устройство */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,44 +34,50 @@ resource "decort_cb_pcidevice" "pd" { #имя устройства #обязательный параметр #тип - строка + #используется при создании name = "test_device" #путь до устройства #обязательный параметр #тип - строка + #используется при создании hw_path = "0000:01:00.0" #описание устройства - #необязательный параметр + #опциональный параметр #тип - строка + #используется при создании #description = "test desc" #id ресурсной группы устройства #обязательный параметр #тип - целое число + #используется при создании rg_id = 1111 #id стака устройства #обязательный параметр #тип - целое число + #используется при создании stack_id = 11 #доступность устройства #опциональный параметр - #может использоваться на созданном ресурсе #тип - булев + #используется при создании и обновлении #enable = false #принудительное отключение устройства #опциональный параметр #может использоваться на созданном ресурсе #тип - булев + #используется при обновлении #force_disable = true #принудительное удаление устройства #опциональный параметр - #используется при удалении ресурса #тип - булев + #используется при удалении #force_delete = true #id устройства diff --git a/samples/cloudbroker/rg/data_rg/main.tf b/samples/cloudbroker/rg/data_rg/main.tf index 47b27d7..d58d281 100644 --- a/samples/cloudbroker/rg/data_rg/main.tf +++ b/samples/cloudbroker/rg/data_rg/main.tf @@ -3,7 +3,7 @@ Получение информации о ресурсной группе (RG) */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_affinity_group_computes/main.tf b/samples/cloudbroker/rg/data_rg_affinity_group_computes/main.tf index 56feab8..04d585a 100644 --- a/samples/cloudbroker/rg/data_rg_affinity_group_computes/main.tf +++ b/samples/cloudbroker/rg/data_rg_affinity_group_computes/main.tf @@ -3,7 +3,7 @@ Получение информации о специальной группе компьютов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -32,7 +32,7 @@ data "decort_cb_rg_affinity_group_computes" "lc" { rg_id = 123 #название специальной группы компьютов - #обязательное поле + #обязательный параметр #тип - строка affinity_group = "TEST" } diff --git a/samples/cloudbroker/rg/data_rg_affinity_groups_get/main.tf b/samples/cloudbroker/rg/data_rg_affinity_groups_get/main.tf index 6633529..2745847 100644 --- a/samples/cloudbroker/rg/data_rg_affinity_groups_get/main.tf +++ b/samples/cloudbroker/rg/data_rg_affinity_groups_get/main.tf @@ -3,7 +3,7 @@ Получение информации о списке компьютов из определенной группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -32,7 +32,7 @@ data "decort_cb_rg_affinity_groups_get" "get_groups" { rg_id = 123 #название специальной группы компьютов - #обязательное поле + #обязательный параметр #тип - строка affinity_group = "TEST" } diff --git a/samples/cloudbroker/rg/data_rg_affinity_groups_list/main.tf b/samples/cloudbroker/rg/data_rg_affinity_groups_list/main.tf index e541ac7..5208435 100644 --- a/samples/cloudbroker/rg/data_rg_affinity_groups_list/main.tf +++ b/samples/cloudbroker/rg/data_rg_affinity_groups_list/main.tf @@ -3,7 +3,7 @@ Получение информации о списке специальных групп компьютов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_audits/main.tf b/samples/cloudbroker/rg/data_rg_audits/main.tf index c72c8cd..cbcffe3 100644 --- a/samples/cloudbroker/rg/data_rg_audits/main.tf +++ b/samples/cloudbroker/rg/data_rg_audits/main.tf @@ -3,7 +3,7 @@ Получение информации о списке аудитов ресурсной группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_get_resource_consumption/main.tf b/samples/cloudbroker/rg/data_rg_get_resource_consumption/main.tf index a15b413..5e48e70 100644 --- a/samples/cloudbroker/rg/data_rg_get_resource_consumption/main.tf +++ b/samples/cloudbroker/rg/data_rg_get_resource_consumption/main.tf @@ -3,7 +3,7 @@ Получение списка текущего потребления ресурсов ресурсной группы */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/rg/data_rg_list/main.tf b/samples/cloudbroker/rg/data_rg_list/main.tf index 1476a24..7930252 100644 --- a/samples/cloudbroker/rg/data_rg_list/main.tf +++ b/samples/cloudbroker/rg/data_rg_list/main.tf @@ -3,7 +3,7 @@ Получение информации о списке всех ресурсных групп к которым есть доступ */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -62,7 +62,7 @@ data "decort_cb_rg_list" "rg_list" { #status = "ENABLED" #отображать удаленные ресурсные группы или нет - #необязательный параметр + #опциональный параметр #тип - булев #по умолчанию - false #includedeleted = false @@ -73,13 +73,13 @@ data "decort_cb_rg_list" "rg_list" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #номер страницы - #необязательный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #необязательный параметр + #опциональный параметр #тип - целое число #size = 2 } diff --git a/samples/cloudbroker/rg/data_rg_list_computes/main.tf b/samples/cloudbroker/rg/data_rg_list_computes/main.tf index 7aae74a..e5eb7c6 100644 --- a/samples/cloudbroker/rg/data_rg_list_computes/main.tf +++ b/samples/cloudbroker/rg/data_rg_list_computes/main.tf @@ -3,7 +3,7 @@ Получение информации о списке компьютов в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_list_deleted/main.tf b/samples/cloudbroker/rg/data_rg_list_deleted/main.tf index 357ba43..27c7fed 100644 --- a/samples/cloudbroker/rg/data_rg_list_deleted/main.tf +++ b/samples/cloudbroker/rg/data_rg_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение информации о списке удаленных ресурсных групп */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -69,13 +69,13 @@ data "decort_cb_rg_list_deleted" "list_deleted" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #номер страницы - #необязательный параметр + #номер страницы для отображения + #опциональный параметр #тип - целое число #page = 1 #размер страницы - #необязательный параметр + #опциональный параметр #тип - целое число #size = 2 } diff --git a/samples/cloudbroker/rg/data_rg_list_lb/main.tf b/samples/cloudbroker/rg/data_rg_list_lb/main.tf index 77d4f0f..b3ec00b 100644 --- a/samples/cloudbroker/rg/data_rg_list_lb/main.tf +++ b/samples/cloudbroker/rg/data_rg_list_lb/main.tf @@ -3,7 +3,7 @@ Получение информации о списке балансировщиков в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_list_pfw/main.tf b/samples/cloudbroker/rg/data_rg_list_pfw/main.tf index 13f9292..7a25155 100644 --- a/samples/cloudbroker/rg/data_rg_list_pfw/main.tf +++ b/samples/cloudbroker/rg/data_rg_list_pfw/main.tf @@ -3,7 +3,7 @@ Получение информации о списке правил переадресации портов для ресурсной группы. */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_list_vins/main.tf b/samples/cloudbroker/rg/data_rg_list_vins/main.tf index 742b45f..5d44dfc 100644 --- a/samples/cloudbroker/rg/data_rg_list_vins/main.tf +++ b/samples/cloudbroker/rg/data_rg_list_vins/main.tf @@ -3,7 +3,7 @@ Получение информации о списке винсов в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/data_rg_resource_consumption_list/main.tf b/samples/cloudbroker/rg/data_rg_resource_consumption_list/main.tf index 8ad0518..774a38f 100644 --- a/samples/cloudbroker/rg/data_rg_resource_consumption_list/main.tf +++ b/samples/cloudbroker/rg/data_rg_resource_consumption_list/main.tf @@ -3,7 +3,7 @@ Получение списка текущего потребления ресурсов */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером @@ -28,7 +28,7 @@ provider "decort" { } data "decort_cb_rg_resource_consumption_list" "rc_list" { - #Нет входных параметров + #нет входных параметров } output "test" { diff --git a/samples/cloudbroker/rg/data_rg_usage/main.tf b/samples/cloudbroker/rg/data_rg_usage/main.tf index 0680842..e27020e 100644 --- a/samples/cloudbroker/rg/data_rg_usage/main.tf +++ b/samples/cloudbroker/rg/data_rg_usage/main.tf @@ -3,7 +3,7 @@ Получение информации об использовании ресурсов в ресурсной группе */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером diff --git a/samples/cloudbroker/rg/resource_rg/main.tf b/samples/cloudbroker/rg/resource_rg/main.tf index 2bebccc..f68c431 100644 --- a/samples/cloudbroker/rg/resource_rg/main.tf +++ b/samples/cloudbroker/rg/resource_rg/main.tf @@ -7,7 +7,7 @@ 3. Удалять RG */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,24 +34,28 @@ resource "decort_cb_rg" "rg" { #имя ресурсной группы #обязательный параметр #тип - строка + #используется при создании и обновлении rg_name = "testing_rg_1" #id аккаунта которому будет принадлежать ресурсная группа #обязательный параметр #тип - целое число + #используется при создании account_id = 123 #id сети #обязательный параметр #тип - целое число + #используется при создании gid = 1234 #лимиты ресурсов #опциональные параметры #тип - блок лимитов на ресурсы + #используется при создании и обновлении #resource_limits { #максимальное количество ядер cpu - #опциональный праметр + #опциональный параметр #тип - целое число #cu_c = 12 @@ -61,17 +65,17 @@ resource "decort_cb_rg" "rg" { #cu_dm = 12 #максимальное количество назначенных общедоступных IP-адресов - #опциональный праметр + #опциональный параметр #тип - целое число #cu_i = 12 #максимальный объем памяти в МБ - #опциональный праметр + #опциональный параметр #тип - целое число #cu_m = 12 #максимальный пиринг отправленных/принятых сетевых передач - #опциональный праметр + #опциональный параметр #тип - целое число #cu_np = 12 #} @@ -79,123 +83,127 @@ resource "decort_cb_rg" "rg" { #имя владельца ресурсной группы #опциональный параметр #тип - строка + #используется при создании #owner = "owner name" #тип сети по умолчанию для этой ресурсной группы. #виртуальные машины, созданные в этой RG, по умолчанию будут подключены к этой сети. - #Допустимые значения: PRIVATE, PUBLIC, NONE. - #необязательный параметр + #допустимые значения: PRIVATE, PUBLIC, NONE. + #опциональный параметр #по умолчанию: PRIVATE #тип - строка + #используется при создании #def_net_type = "NONE" - #ip cidr частной сети, если сеть по умолчанию PRIVATE - #необязательный параметр - #тип - строка - #ipcidr = "1.1.1.1" - #описание - #необязательный параметр + #опциональный параметр #тип - строка + #используется при создании и обновлении #description = "qwerty" #id внешней сети - #необязательный параметр + #опциональный параметр #тип - целое число + #используется при создании #ext_net_id = 123 #ip внешней сети - #необязательный параметр + #опциональный параметр #тип - строка + #используется при создании #ext_ip = "1.1.1.1" - #зарегистрировать компьюты в регистрационной системе - #необязательный параметр - #тип - булев - #register_computes = true - #список названий pools - #необязательный параметр + #опциональный параметр #тип - массив строк + #используется при создании и обновлении #uniq_pools = ["sep1_poolName1", "sep2_poolName2"] #блок для предоставления прав на ресурсную группу - #необязательный параметр + #опциональный параметр #тип - блок прав пользователя - access { + #используется при создании и обновлении + #access { #имя юзера предоставляемому права - #обязательный праметр при использовании блока + #обязательный параметр при использовании блока #тип - строка - user = "kasim_baybikov_1@decs3o" + #user = "kasim_baybikov_1@decs3o" #тип прав #обязательный параметр #тип - строка #разрешенные значения: "R", "RCX" or "ARCXDU" - right = "RCX" - - } + #right = "RCX" + #} #установить сеть по умолчанию - #необязательный параметр + #опциональный параметр #тип - блок конфигурации сети #при добавлении блока, удалять его нельзя - def_net { + #используется при создании + #def_net { #тип сети #обязательный параметр при использовании блока #тип - строка - net_type = "PUBLIC" + #net_type = "PUBLIC" #id сети #идентификатор сегмента сети. Если net_type — PUBLIC, а net_id — 0, #то будет выбран сегмент внешней сети по умолчанию. Если net_type #имеет значение PRIVATE и net_id=0, будет выбран первый vins, определенный для этой ресурсной группы. - #В противном случае net_id идентифицирует либо существующий сегмент внешней сети, либо vins. - #необязательный параметр + #в противном случае net_id идентифицирует либо существующий сегмент внешней сети, либо vins. + #опциональный параметр #тип - целое число - net_id = 1234 - } + #net_id = 1234 + #} #может ли запуститься ВМ, если ресурсов CPU недостаточно - #необязательный параметр - #Допустимые значения: strict, loose. + #опциональный параметр + #допустимые значения: strict, loose. #тип - строка - cpu_allocation_parameter = "loose" + #используется при создании и обновлении + #cpu_allocation_parameter = "loose" - #CPU allocation ratio - #необязательный параметр + #cpu allocation ratio + #опциональный параметр #one pCPU = ratio*vCPU (zero or positive value) #тип - целое число - cpu_allocation_ratio = 1 + #используется при создании и обновлении + #cpu_allocation_ratio = 1 #флаг доступности ресурсной группы - #необязательный параметр + #опциональный параметр #тип - булев - enable = true + #используется при создании и обновлении + #enable = true #флаг для восстановления удаленной ресурсной группы - #необязательный параметр + #опциональный параметр #тип - булев + #используется при обновлении #restore = false #флаг для принудительного удаления ресурсной группы - #необязательный параметр + #опциональный параметр #тип - булев #перед удалением следует перевести ресурсную группу в статус disabled, выставив enable = false - force = true + #используется при удалении + #force = true - #флаг для моментального удаления ресурсной группы - #необязательный параметр + #флаг для удаления ресурсной группы, без возможности восстановления + #опциональный параметр #тип - булев - permanently = true + #используется при удалении + #permanently = true #доступ к дополнительным функциям управления ВМ - #необязательный параметр - #возможные значенния - "hugepages", "numa", "cpupin", "vfnic" + #опциональный параметр + #возможные значенния - "hugepages", "numa", "cpupin", "vfnic", "dpdk, "changemac" #тип - массив строк #внимание - требуется указывать итоговое желаемое состояние для ресурсной группы (рг), так как поле compute_features не будет автоматически #наследоваться от аккаунта, в котором создается рг. - compute_features = ["hugepages", "numa", "cpupin", "vfnic"] + #используется при создании и обновлении + #compute_features = ["hugepages", "numa", "cpupin", "vfnic"] } diff --git a/samples/cloudbroker/sep/data_available_sep_and_pools_list/main.tf b/samples/cloudbroker/sep/data_available_sep_and_pools_list/main.tf new file mode 100644 index 0000000..af42113 --- /dev/null +++ b/samples/cloudbroker/sep/data_available_sep_and_pools_list/main.tf @@ -0,0 +1,44 @@ +/* +Пример использования +Получение данных доступных sep и pools +*/ + +#Раскомментируйте код ниже, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "decs3o" + #controller_url = + controller_url = "https://ds1.digitalenergy.online" + #oauth2_url = + oauth2_url = "https://sso.digitalenergy.online" + allow_unverified_ssl = true +} + +data "decort_cb_sep_and_pools_available_list" "ap" { + #идентификатор аккаунта + #обязательный параметр + #тип - целое число + account_id = 1111 + + #идентификатор ресурсной группы + #опциональный параметр + #тип - целое число + #rg_id = 1111 +} + +output "test" { + value = data.decort_cb_sep_and_pools_available_list.ap +} + diff --git a/samples/cloudbroker/sep/data_sep/main.tf b/samples/cloudbroker/sep/data_sep/main.tf index 2267ea5..2360b31 100644 --- a/samples/cloudbroker/sep/data_sep/main.tf +++ b/samples/cloudbroker/sep/data_sep/main.tf @@ -3,7 +3,7 @@ Получение данных sep */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/sep/data_sep_config/main.tf b/samples/cloudbroker/sep/data_sep_config/main.tf index ff2b9d8..7c06d3b 100644 --- a/samples/cloudbroker/sep/data_sep_config/main.tf +++ b/samples/cloudbroker/sep/data_sep_config/main.tf @@ -3,7 +3,7 @@ Получение данных конфигурации sep */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/sep/data_sep_consumption/main.tf b/samples/cloudbroker/sep/data_sep_consumption/main.tf index 73e519f..9279bf5 100644 --- a/samples/cloudbroker/sep/data_sep_consumption/main.tf +++ b/samples/cloudbroker/sep/data_sep_consumption/main.tf @@ -3,7 +3,7 @@ Получение общих данных об использовании sep */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/sep/data_sep_disk_list/main.tf b/samples/cloudbroker/sep/data_sep_disk_list/main.tf index 1710ff9..af572c5 100644 --- a/samples/cloudbroker/sep/data_sep_disk_list/main.tf +++ b/samples/cloudbroker/sep/data_sep_disk_list/main.tf @@ -3,7 +3,7 @@ Получение данных об используемых sep дисках */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,7 +33,7 @@ data "decort_cb_sep_disk_list" "sdl" { sep_id = 1111 #sep pool name - #необязательный параметр + #опциональный параметр #тип - строка #pool_name = "sep_pool" } diff --git a/samples/cloudbroker/sep/data_sep_list/main.tf b/samples/cloudbroker/sep/data_sep_list/main.tf index 8d0300f..750aa6b 100644 --- a/samples/cloudbroker/sep/data_sep_list/main.tf +++ b/samples/cloudbroker/sep/data_sep_list/main.tf @@ -3,7 +3,7 @@ Получение списка sep */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -28,37 +28,37 @@ provider "decort" { data "decort_cb_sep_list" "sl" { #фильтр по sep id - #необязательный параметр + #опциональный параметр #тип - целое число #by_id = 3 #фильтр по sep name - #необязательный параметр + #опциональный параметр #тип - строка #name = "name" #фильтр по gid - #необязательный параметр + #опциональный параметр #тип - целое число #gid = 1 #фильтр по sep type - #необязательный параметр + #опциональный параметр #тип - строка #type = "type" #фильтр по provided physical node id - #необязательный параметр + #опциональный параметр #тип - целое число #provided_by = 1 #фильтр по тех статусу - #необязательный параметр + #опциональный параметр #тип - строка #tech_status = "status" #фильтр по consumed physical node id - #необязательный параметр + #опциональный параметр #тип - целое число #consumed_by = 1 @@ -69,12 +69,12 @@ data "decort_cb_sep_list" "sl" { #sort_by = "+name" #страница - #необязательный параметр + #опциональный параметр #тип - целое число #page = 3 #размер страницы - #необязательный параметр + #опциональный параметр #тип - целое число #size = 2 } diff --git a/samples/cloudbroker/sep/data_sep_pool/main.tf b/samples/cloudbroker/sep/data_sep_pool/main.tf index fed987e..3338432 100644 --- a/samples/cloudbroker/sep/data_sep_pool/main.tf +++ b/samples/cloudbroker/sep/data_sep_pool/main.tf @@ -3,7 +3,7 @@ Получение данных sep pool */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/sep/data_sep_template/main.tf b/samples/cloudbroker/sep/data_sep_template/main.tf new file mode 100644 index 0000000..b2d8ec3 --- /dev/null +++ b/samples/cloudbroker/sep/data_sep_template/main.tf @@ -0,0 +1,45 @@ +/* +Пример использования +Получение данных конфигурации sep +*/ + +#Раскомментируйте код ниже, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "decs3o" + #controller_url = + controller_url = "https://ds1.digitalenergy.online" + #oauth2_url = + oauth2_url = "https://sso.digitalenergy.online" + allow_unverified_ssl = true +} + +data "decort_cb_sep_template" "compute_template" { + #тип сеп + #возможные значения - hitachi, dorado, tatlin, shared, local, des + #обязательный параметр + #тип - строка + sep_type = "dorado" + + #язык + #возможные значения - ru, en + #обязательный параметр + #тип - строка + lang = "en" +} + +output "output" { + value = data.decort_cb_sep_template.compute_template +} diff --git a/samples/cloudbroker/sep/resource_sep/main.tf b/samples/cloudbroker/sep/resource_sep/main.tf index a400ebb..6be6013 100644 --- a/samples/cloudbroker/sep/resource_sep/main.tf +++ b/samples/cloudbroker/sep/resource_sep/main.tf @@ -6,7 +6,7 @@ 2. Удалять sep. */ -#Расскомментируйте код ниже, +#Раскомментируйте код ниже, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -33,40 +33,45 @@ resource "decort_cb_sep" "s" { #grid id #обязательный параметр #тип - целое число + #используется при создании gid = 212 #sep name #обязательный параметр #тип - строка + #используется при создании name = "test sep" #тип sep #обязательный параметр #возможные значения - des, dorado, tatlin, hitachi, ovs, local, shared #тип - строка + #используется при создании type = "des" #конфигурация sep #обязательный параметр - #мб применен при создании sep #представляет собой json-строку #тип - строка + #используется при создании config = file("./config.json") #описание sep #опциональный параметр - #используется при создании ресурса #тип - строка + #используется при создании #desc = "rrrrr" #предоставление/отключение доступа указанных аккаунтов к sep - #опциональный параметр, используется создании ресурса + #опциональный параметр #тип - массив целых чисел + #используется при создании #account_ids = [12, 245] #предоставление/отключение доступа к пулу на sep - #опциональный параметр, может быть применен на уже созданном sep + #опциональный параметр #тип - блок доступа к пулу + #используется при создании #access_to_pool { #имя pool #обязательный параметр @@ -86,68 +91,68 @@ resource "decort_cb_sep" "s" { #доступность sep #опциональный параметр - #может быть применен на уже созданном ресурсе #по умолчанию - false #тип - булев + #используется при создании #enable = false #использование нодами #опциональный параметр - #используется при создании ресурса #тип - массив целых чисел + #используется при создании #consumed_by = [] #id provided nodes #опциональный параметр - #используется при создании ресурса #тип - массив целых чисел + #используется при создании #provided_by = [16, 14, 15] #добавление/удаление pools к/из sep #опциональный параметр - #используется при создании ресурса, состоит из имен pool #тип - блок pools - pools { + #используется при создании + #pools { #идентификаторы учетных записей доступа #обязательный параметр #тип - массив целых чисел - access_account_ids = [1, 2, 3] + #access_account_ids = [1, 2, 3] #идентификаторы групп ресурсов доступа #обязательный параметр #тип - массив целых чисел - access_res_group_ids = [10, 20, 30] + #access_res_group_ids = [10, 20, 30] #имя пула #опциональный параметр #тип - строка - name = "example_pool_name" + #name = "example_pool_name" #тип пула #опциональный параметр #тип - массив строк - types = ["type1", "type2"] + #types = ["type1", "type2"] #адреса узлов хранения #опциональный параметр #тип - блок ip адресов - uris { + #uris { #ip адрес узла #обязательный параметр #тип - строка - ip = "192.168.1.1" + #ip = "192.168.1.1" #порт узла #обязательный параметр #тип - целое число - port = 8080 - } + #port = 8080 + #} #доступный объем пула #обязательный параметр #тип - целое число - usage_limit = 1000 - } + #usage_limit = 1000 + #} } diff --git a/samples/cloudbroker/sep/resource_sep_config/main.tf b/samples/cloudbroker/sep/resource_sep_config/main.tf index 532fb3d..333a6e5 100644 --- a/samples/cloudbroker/sep/resource_sep_config/main.tf +++ b/samples/cloudbroker/sep/resource_sep_config/main.tf @@ -7,7 +7,7 @@ 3. Изменять отдельные поля конфигурации */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,18 +34,19 @@ resource "decort_cb_sep_config" "sc" { #id sep #обязательный параметр #тип - целое число + #используется при создании sep_id = 1111 #конфигурация #опциональный параметр - #используется для создания и изменения конфигурации #тип - json строка + #используется при обновлении #config = file("./config.json") #редактирование поля #опциональный параметр - #используется при редактировании ресурса #тип - блок полей + #используется при обновлении #field_edit { #имя поля #обязательный параметр diff --git a/samples/cloudbroker/stack/data_stack/main.tf b/samples/cloudbroker/stack/data_stack/main.tf index 8ba3aa9..dfc5427 100644 --- a/samples/cloudbroker/stack/data_stack/main.tf +++ b/samples/cloudbroker/stack/data_stack/main.tf @@ -3,7 +3,7 @@ Получение стека по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/stack/data_stack_list/main.tf b/samples/cloudbroker/stack/data_stack_list/main.tf index 4310c03..24048f2 100644 --- a/samples/cloudbroker/stack/data_stack_list/main.tf +++ b/samples/cloudbroker/stack/data_stack_list/main.tf @@ -3,7 +3,7 @@ Получение списка стеков */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/user/data_user/main.tf b/samples/cloudbroker/user/data_user/main.tf index 407508f..782a7f4 100644 --- a/samples/cloudbroker/user/data_user/main.tf +++ b/samples/cloudbroker/user/data_user/main.tf @@ -3,7 +3,7 @@ Получение данных user по id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/user/data_user_get_audit/main.tf b/samples/cloudbroker/user/data_user_get_audit/main.tf index 35454fb..8e463f4 100644 --- a/samples/cloudbroker/user/data_user_get_audit/main.tf +++ b/samples/cloudbroker/user/data_user_get_audit/main.tf @@ -3,7 +3,7 @@ Получение списка аудитов пользователя */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/user/data_user_list/main.tf b/samples/cloudbroker/user/data_user_list/main.tf index 21bc91c..03acf47 100644 --- a/samples/cloudbroker/user/data_user_list/main.tf +++ b/samples/cloudbroker/user/data_user_list/main.tf @@ -3,7 +3,7 @@ Получение списка пользователей */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/user/resource_user/main.tf b/samples/cloudbroker/user/resource_user/main.tf index aaab698..8c15aae 100644 --- a/samples/cloudbroker/user/resource_user/main.tf +++ b/samples/cloudbroker/user/resource_user/main.tf @@ -7,7 +7,7 @@ 3. Удалять пользователя */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -34,26 +34,31 @@ resource "decort_cb_user" "user" { #id пользователя #обязательный параметр #тип - строка + #используется при создании username = "user1" #email адрес пользователя #обязательный параметр #тип - массив строк + #используется при создании emailaddress = ["user1@example.com"] #пароль пользователя #опциональный параметр #тип - строка + #используется при создании #password = "user1Password" #список групп, к которым принадлежит этот пользователь #опциональный параметр #тип - массив строк + #используется при создании #groups = ["user"] #список групп доступа к api, к которым принадлежит этот пользователь #опциональный параметр #тип - массив целых чисел + #используется при создании и обновлении #apiaccess = [1,2] } diff --git a/samples/cloudbroker/vfpool/data_vfpool/main.tf b/samples/cloudbroker/vfpool/data_vfpool/main.tf index 31ee783..5f09ff2 100644 --- a/samples/cloudbroker/vfpool/data_vfpool/main.tf +++ b/samples/cloudbroker/vfpool/data_vfpool/main.tf @@ -3,7 +3,7 @@ Получение информации о vfpool по его id */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vfpool/data_vfpool_list/main.tf b/samples/cloudbroker/vfpool/data_vfpool_list/main.tf index e8398cf..d4ccb8b 100644 --- a/samples/cloudbroker/vfpool/data_vfpool_list/main.tf +++ b/samples/cloudbroker/vfpool/data_vfpool_list/main.tf @@ -3,7 +3,7 @@ Получение списка vfpool */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vfpool/resource_vfpool/main.tf b/samples/cloudbroker/vfpool/resource_vfpool/main.tf index bacd599..555b4fb 100644 --- a/samples/cloudbroker/vfpool/resource_vfpool/main.tf +++ b/samples/cloudbroker/vfpool/resource_vfpool/main.tf @@ -10,7 +10,7 @@ 7. Удалять пул */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -37,29 +37,31 @@ resource "decort_cb_vfpool" "vfpool" { #наименование vfpool #обязательный параметр #тип - строка + #используется при создании и обновлении name = "test" #описание vfpool #опциональный параметр #тип - строка - #применяется при создании и редактировании ресурса + #используется при создании и обновлении #description = "some" #список для предоставления доступа к vfpool перечисленным аккаунтам #опциональный параметр #тип - массив целых чисел - #применяется при создании и редактировании ресурса + #используется при создании и обновлении #account_access = [1,2] #список для предоставления доступа к vfpool перечисленным ресурсным группам #опциональный параметр #тип - массив целых чисел - #применяется при создании и редактировании ресурса + #используется при создании и обновлении #rg_access = [1,2] #блок для указания списка конфигурации #опциональный параметр #тип - блок + #используется при создании и обновлении #config { #идентификатор узла #обязательный параметр @@ -80,6 +82,7 @@ resource "decort_cb_vfpool" "vfpool" { #ручное подключение и отключение ресурса #опциональный параметр #тип - булев + #используется при создании и обновлении #enable = true } diff --git a/samples/cloudbroker/vins/data_vins/main.tf b/samples/cloudbroker/vins/data_vins/main.tf index 7e348f9..d96a2aa 100644 --- a/samples/cloudbroker/vins/data_vins/main.tf +++ b/samples/cloudbroker/vins/data_vins/main.tf @@ -3,7 +3,7 @@ Получение данных о vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/data_vins_audits/main.tf b/samples/cloudbroker/vins/data_vins_audits/main.tf index 5bbff8b..11adc3b 100644 --- a/samples/cloudbroker/vins/data_vins_audits/main.tf +++ b/samples/cloudbroker/vins/data_vins_audits/main.tf @@ -3,7 +3,7 @@ Получение списка vins audits */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/data_vins_ext_net_list/main.tf b/samples/cloudbroker/vins/data_vins_ext_net_list/main.tf index 98b140a..43fe268 100644 --- a/samples/cloudbroker/vins/data_vins_ext_net_list/main.tf +++ b/samples/cloudbroker/vins/data_vins_ext_net_list/main.tf @@ -3,7 +3,7 @@ Получение списка vins extnet */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/data_vins_ip_list/main.tf b/samples/cloudbroker/vins/data_vins_ip_list/main.tf index 5a0f290..2418802 100644 --- a/samples/cloudbroker/vins/data_vins_ip_list/main.tf +++ b/samples/cloudbroker/vins/data_vins_ip_list/main.tf @@ -3,7 +3,7 @@ Получение списка vins_ip */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/data_vins_list/main.tf b/samples/cloudbroker/vins/data_vins_list/main.tf index 371bac8..6786891 100644 --- a/samples/cloudbroker/vins/data_vins_list/main.tf +++ b/samples/cloudbroker/vins/data_vins_list/main.tf @@ -3,7 +3,7 @@ Получение списка vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -69,6 +69,11 @@ data "decort_cb_vins_list" "vl" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" + #поиск по статусу + #опциональный параметр + #тип - строка + #status = "ENABLED" + #номер страницы для отображения #опциональный параметр #тип - целое число diff --git a/samples/cloudbroker/vins/data_vins_list_deleted/main.tf b/samples/cloudbroker/vins/data_vins_list_deleted/main.tf index d2c2fc4..a77ccbe 100644 --- a/samples/cloudbroker/vins/data_vins_list_deleted/main.tf +++ b/samples/cloudbroker/vins/data_vins_list_deleted/main.tf @@ -3,7 +3,7 @@ Получение списка удаленных vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -63,7 +63,7 @@ data "decort_cb_vins_list_deleted" "vins_list_deleted" { #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" - #кол-во страниц для вывода + #номер страницы для отображения #опциональный параметр #тип - целое число #page = 1 diff --git a/samples/cloudbroker/vins/data_vins_nat_rule_list/main.tf b/samples/cloudbroker/vins/data_vins_nat_rule_list/main.tf index def5d91..77c9c13 100644 --- a/samples/cloudbroker/vins/data_vins_nat_rule_list/main.tf +++ b/samples/cloudbroker/vins/data_vins_nat_rule_list/main.tf @@ -3,7 +3,7 @@ Получение списка natRule vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/data_vins_static_route/main.tf b/samples/cloudbroker/vins/data_vins_static_route/main.tf index 31365be..6b96c65 100644 --- a/samples/cloudbroker/vins/data_vins_static_route/main.tf +++ b/samples/cloudbroker/vins/data_vins_static_route/main.tf @@ -3,7 +3,7 @@ Получение информации о static route в данном Vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/data_vins_static_route_list/main.tf b/samples/cloudbroker/vins/data_vins_static_route_list/main.tf index 04437c0..2f1c0b0 100644 --- a/samples/cloudbroker/vins/data_vins_static_route_list/main.tf +++ b/samples/cloudbroker/vins/data_vins_static_route_list/main.tf @@ -3,7 +3,7 @@ Получение информации о всех static routes в данном Vins */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/samples/cloudbroker/vins/resource_vins/main.tf b/samples/cloudbroker/vins/resource_vins/main.tf index 16b5fcb..674d944 100644 --- a/samples/cloudbroker/vins/resource_vins/main.tf +++ b/samples/cloudbroker/vins/resource_vins/main.tf @@ -11,7 +11,7 @@ 7. Перезапускать и редеплоить vnfdev */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* @@ -38,54 +38,64 @@ resource "decort_cb_vins" "vins" { #обязательный параметр #имя создаваемого ресурса #тип - строка - name = "Test_name" + #используется при создании + name = "test_name" - #id аккаунта для создаения ресурса + #id аккаунта для создания ресурса #опциональный параметр #внимание, для создания ресурса обязательно должен быть указан или rg_id, или account_id #тип - целое число + #используется при создании account_id = 2023 #id ресурсной группы для создаения ресурса #опциональный параметр #внимание, для создания ресурса обязательно должен быть указан или rg_id, или account_id #тип - целое число + #используется при создании rg_id = 10101 #id внешней сети для подключения к ней ресурса #опциональный параметр #тип - целое число + #используется при создании и обновлении #ext_net_id = 2222 #ip внешней сети для подключения к нему ресурса #опциональный параметр #тип - строка + #используется при создании и обновлении #ext_ip = "1.1.1.1" #приватная сеть IP CIDR #опциональный параметр #тип - строка + #используется при создании #ipcidr = "192.168.0.1" #количество зарезервированных адресов на момент создания #опциональный параметр - #значение по умолчанию 32 + #по умолчанию 32 #тип - целое число + #используется при создании #pre_reservations_num = 2 #grid (platform) ID #опциональный параметр #тип - целое число + #используется при создании #gid = 2002 #описание #опциональный параметр #тип - строка + #используется при создании #description = "Description" #блок для указания списка routes #опциональный параметр #тип - список routes + #используется при создании #routes = [{ #ip целевой сети #опциональный параметр @@ -107,6 +117,7 @@ resource "decort_cb_vins" "vins" { #опциональный параметр #блок для указания default_qos #тип - список qos + #используется при обновлении #default_qos = { #внутренний трафик, Кбит #опциональный параметр @@ -122,26 +133,30 @@ resource "decort_cb_vins" "vins" { #опциональный параметр #тип - целое число #e_rate = 1 - #} + #} #ручное подключение и отключение ресурса #опциональный параметр #тип - булев + #используется при создании и обновлении #enable = true - #удаление навсегда + #флаг для удаления VINS, без возможности восстановления #опциональный параметр #тип - булев + #используется при удалении #permanently = true #удаляет за собой все зависимые ресурсы #опциональный параметр #тип - булев + #используется при удалении #force = true #блок для резервирования ip #опциональный параметр #тип - список параметров ip + #используется при создании и обновлении #ip { #тип подключения #обязательный параметр @@ -162,11 +177,12 @@ resource "decort_cb_vins" "vins" { #опциональный параметр #тип - целое число #compute_id = 1234 - #} + #} #блок для добавления natRule #опциональный параметр #тип - список параметров natRule + #используется при создании и обновлении #nat_rule { #ip внутренний #обязательный параметр @@ -192,35 +208,39 @@ resource "decort_cb_vins" "vins" { #опциональный параметр #тип - строка #proto = "tcp" - #} + #} #vnf dev start, stop #опциональный параметр #true: старт vnfDev; false: стоп vnfDev #тип - булев + #используется при обновлении #vnfdev_start = true #перезапуск vnfDev #опциональный параметр #тип - булев + #используется при обновлении #vnfdev_restart = true - #ресет vnfDev + #сброс vnfDev #опциональный параметр #тип - булев + #используется при обновлении #vnfdev_reset = true #редеплой vnfDev #опциональный параметр #тип - булев + #используется при обновлении #vnfdev_redeploy = true #список dns #опциональный параметр - #применяется при создании и редактировании ресурса #если при создании указать пустой список, то ресурс создается с полем vnfs.dhcp.config.dns, имеющим значение по умолчанию #если при обновлении указать пустой список, то ресурс обновит в модели поле vnfs.dhcp.config.dns с текущего значения на пустой список #тип - список строк + #используется при создании и обновлении #dns = ["1.1.1.1", "2.2.2.2"] } diff --git a/samples/cloudbroker/vins/resource_vins_static_route/main.tf b/samples/cloudbroker/vins/resource_vins_static_route/main.tf index 6011e80..f990137 100644 --- a/samples/cloudbroker/vins/resource_vins_static_route/main.tf +++ b/samples/cloudbroker/vins/resource_vins_static_route/main.tf @@ -8,7 +8,7 @@ 4. Удалять доступ виртуальным машинам к static routes */ -#Расскомментируйте этот код, +#Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* diff --git a/wiki/4.5.2/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.5.2/04.01-Установка-Terraform-провайдера-DECORT.md index 154bffd..9f124a3 100644 --- a/wiki/4.5.2/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.5.2/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.5.2 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.5.2" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.5.2" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.5.2" source = "basis/decort/decort" } } diff --git a/wiki/4.5.3/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.5.3/04.01-Установка-Terraform-провайдера-DECORT.md index 71db3cf..5e3997a 100644 --- a/wiki/4.5.3/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.5.3/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.5.3 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.5.3" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.5.3" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.5.3" source = "basis/decort/decort" } } diff --git a/wiki/4.6.0/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.6.0/04.01-Установка-Terraform-провайдера-DECORT.md index f642d2d..1edf1c2 100644 --- a/wiki/4.6.0/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.6.0/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.6.0 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.0" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.0" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.0" source = "basis/decort/decort" } } diff --git a/wiki/4.6.1/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.6.1/04.01-Установка-Terraform-провайдера-DECORT.md index 7a44fe9..fc53817 100644 --- a/wiki/4.6.1/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.6.1/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.6.1 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.1" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.1" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.1" source = "basis/decort/decort" } } diff --git a/wiki/4.6.2/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.6.2/04.01-Установка-Terraform-провайдера-DECORT.md index 9661103..85694f2 100644 --- a/wiki/4.6.2/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.6.2/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.6.2 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.2" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.2" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.2" source = "basis/decort/decort" } } diff --git a/wiki/4.6.3/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.6.3/04.01-Установка-Terraform-провайдера-DECORT.md index f5b82df..6f0392c 100644 --- a/wiki/4.6.3/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.6.3/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.6.3 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.3" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.3" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.3" source = "basis/decort/decort" } } diff --git a/wiki/4.6.4/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.6.4/04.01-Установка-Terraform-провайдера-DECORT.md index 55ba391..f45b806 100644 --- a/wiki/4.6.4/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.6.4/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.6.4 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.4" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.4" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.6.4" source = "basis/decort/decort" } } diff --git a/wiki/4.7.0/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.7.0/04.01-Установка-Terraform-провайдера-DECORT.md index f6fe4be..05359fa 100644 --- a/wiki/4.7.0/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.7.0/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.7.0 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.8" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.0" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.0" source = "basis/decort/decort" } } diff --git a/wiki/4.7.0/07.01.01-Resource_decort_kvmvm.md b/wiki/4.7.0/07.01.01-Resource_decort_kvmvm.md index 431bdd3..c47e9f4 100644 --- a/wiki/4.7.0/07.01.01-Resource_decort_kvmvm.md +++ b/wiki/4.7.0/07.01.01-Resource_decort_kvmvm.md @@ -121,7 +121,6 @@ resource "decort_kvmvm" "compute1" { Так же следует обратить внимание, что если при update была отключена какая либо сеть, то вновь подключаемые сети с наименьшим весом сети займут ранее освобожденные интерфейсы, и только после будут добавляться в конец списка подключенных сетей. При изменении или удалении данного поля, в уже созданном ресурсе, сеть будет считаться вновь подключаемой и следовательно будет отключена от VM и подключена по новой, с учетом веса подключаемых сетей. - ## Аргументы _Resource_ функция **decort_kvmvm** принимает следующие аргументы: diff --git a/wiki/4.7.0/07.02.11-Resource_decort_cb_kvmvm.md b/wiki/4.7.0/07.02.11-Resource_decort_cb_kvmvm.md index a93ff7f..9cce02a 100644 --- a/wiki/4.7.0/07.02.11-Resource_decort_cb_kvmvm.md +++ b/wiki/4.7.0/07.02.11-Resource_decort_cb_kvmvm.md @@ -13,7 +13,6 @@ _Resource_ функция **decort_cb_kvmvm** служит для управле Так же следует обратить внимание, что если при update была отключена какая либо сеть, то вновь подключаемые сети с наименьшим весом сети займут ранее освобожденные интерфейсы, и только после будут добавляться в конец списка подключенных сетей. При изменении или удалении данного поля, в уже созданном ресурсе, сеть будет считаться вновь подключаемой и следовательно будет отключена от VM и подключена по новой, с учетом веса подключаемых сетей. - ## Аргументы _Resource_ функция **decort_cb_kvmvm** принимает следующие аргументы: diff --git a/wiki/4.7.0/07.02.31-Resource_decort_cb_dpdknet.md b/wiki/4.7.0/07.02.31-Resource_decort_cb_dpdknet.md index d9ed718..4732008 100644 --- a/wiki/4.7.0/07.02.31-Resource_decort_cb_dpdknet.md +++ b/wiki/4.7.0/07.02.31-Resource_decort_cb_dpdknet.md @@ -92,4 +92,4 @@ output "test" { Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.0/04.02-Инициализация-Terraform-провайдера-DECORT.md) и [пример](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.0/02.-Пример-работы.md)). -После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` +После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора сети следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` diff --git a/wiki/4.7.1/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.7.1/04.01-Установка-Terraform-провайдера-DECORT.md index d8f3db2..8b8c63a 100644 --- a/wiki/4.7.1/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.7.1/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.7.1 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.1" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.1" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.1" source = "basis/decort/decort" } } diff --git a/wiki/4.7.1/07.02.31-Resource_decort_cb_dpdknet.md b/wiki/4.7.1/07.02.31-Resource_decort_cb_dpdknet.md index 5cce686..23acff7 100644 --- a/wiki/4.7.1/07.02.31-Resource_decort_cb_dpdknet.md +++ b/wiki/4.7.1/07.02.31-Resource_decort_cb_dpdknet.md @@ -92,4 +92,4 @@ output "test" { Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.1/04.02-Инициализация-Terraform-провайдера-DECORT.md) и [пример](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.1/02.-Пример-работы.md)). -После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` +После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора сети следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` diff --git a/wiki/4.7.2/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.7.2/04.01-Установка-Terraform-провайдера-DECORT.md index 3572ae3..7bf8662 100644 --- a/wiki/4.7.2/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.7.2/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.7.2 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.2" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.2" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.2" source = "basis/decort/decort" } } diff --git a/wiki/4.7.2/07.02.31-Resource_decort_cb_dpdknet.md b/wiki/4.7.2/07.02.31-Resource_decort_cb_dpdknet.md index 1fa16a4..a2672fb 100644 --- a/wiki/4.7.2/07.02.31-Resource_decort_cb_dpdknet.md +++ b/wiki/4.7.2/07.02.31-Resource_decort_cb_dpdknet.md @@ -92,4 +92,4 @@ output "test" { Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.2/04.02-Инициализация-Terraform-провайдера-DECORT.md) и [пример](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.2/02.-Пример-работы.md)). -После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` +После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора сети следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` diff --git a/wiki/4.7.3/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.7.3/04.01-Установка-Terraform-провайдера-DECORT.md index 100329c..e6a7c7e 100644 --- a/wiki/4.7.3/04.01-Установка-Terraform-провайдера-DECORT.md +++ b/wiki/4.7.3/04.01-Установка-Terraform-провайдера-DECORT.md @@ -18,13 +18,13 @@ chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash -DECORT provider version 4.3.0 has been successfully installed +DECORT provider version 4.7.2 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.3" source = "basis/decort/decort" } } @@ -40,7 +40,7 @@ terraform { terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.3" source = "basis/decort/decort" } } @@ -114,7 +114,7 @@ Windows: terraform { required_providers { decort = { - version = "4.3.0" + version = "4.7.3" source = "basis/decort/decort" } } diff --git a/wiki/4.7.3/07.02.31-Resource_decort_cb_dpdknet.md b/wiki/4.7.3/07.02.31-Resource_decort_cb_dpdknet.md index 7041e87..d8decbd 100644 --- a/wiki/4.7.3/07.02.31-Resource_decort_cb_dpdknet.md +++ b/wiki/4.7.3/07.02.31-Resource_decort_cb_dpdknet.md @@ -92,4 +92,4 @@ output "test" { Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.3/04.02-Инициализация-Terraform-провайдера-DECORT.md) и [пример](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.3/02.-Пример-работы.md)). -После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` +После успешного завершения такого вызова **decort_cb_dpdknet** в переменной `data.decort_cb_dpdknet.dpdk` будут сохранены возвращаемые значения. В частности, для получения идентификатора сети следует использовать конструкцию `data.decort_cb_dpdknet.dpdk.id` diff --git a/wiki/4.7.4/01.-Введение.md b/wiki/4.7.4/01.-Введение.md new file mode 100644 index 0000000..f3d1294 --- /dev/null +++ b/wiki/4.7.4/01.-Введение.md @@ -0,0 +1,7 @@ +DECORT Terraform Provider версии 4.7.x позволяет управлять облачными ресурсами на платформе Digital Energy Cloud Orchestration Technology (DECORT) версии 4.1.x и выше посредством Terraform. + +С помощью данного провайдера можно организовать программное управление вычислительными ресурсами (_compute_), ресурсными группами, сетевыми и дисковыми ресурсами, образами дисков, кластером, а также другими параметрами облачной платформы DECORT. + +Если вы хорошо знакомы с инструментом Terraform и хотите максимально быстро начать использовать платформу DECORT в своих Terraform-проектах, то можете сразу перейти к разделу [Пример работы](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/02.-Пример-работы.md), где приведён подробно откомментированный пример работы с основными видами ресурсов платформы. Если у вас всё же возникнут вопросы по облачной платформе DECORT и порядку авторизации в ней, то обратитесь к главе [«Обзор облачной платформы DECORT»](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT.md). Также может оказаться полезной глава [«Инициализация Terraform провайдера DECORT»](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/04.02-Инициализация-Terraform-провайдера-DECORT.md). + +Если вы только начинаете использовать инструмент Terraform и облачную платформу DECORT, то рекомендуем вам начать с главы [«Обзор облачной платформы DECORT»](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT.md), после чего изучить главы [«_Data source_ функции Terraform провайдера DECORT»](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/06.-Data-source-функции-Terraform-провайдера-DECORT.md) и [«_Resource_ функции Terraform провайдера DECORT»](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/07.-Resource-функции-Terraform-провайдера-DECORT.md). Примеры, приведенные в этих разделах, помогут вам быстро освоить базовые приёмы работы с инструментом Terraform и провайдером DECORT. diff --git a/wiki/4.7.4/02.-Пример-работы.md b/wiki/4.7.4/02.-Пример-работы.md new file mode 100644 index 0000000..59132ad --- /dev/null +++ b/wiki/4.7.4/02.-Пример-работы.md @@ -0,0 +1,92 @@ +Данный раздел предназначен для тех, кто хорошо знаком с инструментом Terraform, а также имеет представление об основных понятиях и способах авторизации в облачной платформе DECORT. + +Ниже приведён подробно откомментированный пример, показывающий, как создать виртуальный сервер (aka _compute_ на базе системы виртуализации KVM x86) в облачной платформе DECORT с помощью соответствующего Terraform провайдера. Сервер будет создан в новой ресурсной группе, к нему будет подключён один предварительно созданный диск, у сервера будет прямое сетевое подключение во внешнюю сеть. + +Идентификатор образа операционной системы, на базе которого должен быть создан виртуальный сервер, считывается из облачной платформы с помощью _data source_ функции `decort_image`. + +Далее мы с помощью _resource_ функции `decort_resgroup` создаём новую ресурсную группу, в которую будет помещён этот виртуальный сервер. В качестве альтернативы, для получения информации об уже имеющейся ресурсной группе можно использовать _data source_ функцию с таким же названием. + +Затем с помощью _resource_ функции `decort_disk` создаётся диск, который будет подключён к виртуальному серверу в качестве дополнительного. Помимо этого дополнительного диска у сервера будет также и загрузочный диск, на который в процессе создания сервера клонируется выбранный образ операционной системы. + +Виртуальный сервер - в данном примере на базе системы виртуализации KVM x86 - создаётся посредством _resource_ функции `decort_kvmvm`. + +Только авторизованные в контроллере облачной платформы пользователи могут управлять облачными ресурсами. Подробнее о способах авторизации см. [Обзор облачной платформы DECORT](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT.md). + +```terraform +# 1. Initialize DECORT plugin and connection to DECORT cloud controller +# NOTE: in this example credentials are expected to come from +# DECORT_APP_ID and DECORT_APP_SECRET environmental variables - set them +# in the shell before calling terraform. +# Alternatively you may define plugin parameters app_id and app_secret in +# the TF file, however, this may not be secure if you plan to share this TF +# file with others. + +provider "decort" { + authenticator = "decs3o" + controller_url = "<>" # specify correct DECORT controller URL, e.g. "https://ds1.digitalenergy.online" + oauth2_url = "<>" # specify corresponding DECORT OAUTH2 URL, e.g. "https://sso.digitalenergy.online" + app_id = "<>" # application secret to access DECORT cloud API in 'decs3o' and 'bvs' authentication mode, e.g. "ewqfrvea7s890avw804389qwguf234h0otfi3w4eiu" + app_secret = "<>" # application ID to access DECORT cloud API in 'decs3o' and 'bvs' authentication mode, e.g. "ewqfrvea7s890avw804389qwguf234h0otfi3w4eiu" + # allow_unverified_ssl = true +} + +# 2. Load account to use - new VM will belong to this account +data "decort_account" "my_account" { + account_id = # Specify account ID +} + +# 3. Load OS image to use for VM deployment +data "decort_image" "os_image" { + image_id = # Specify OS image id, e.g. 1234. You can get accessible image id from data source "decort_image_list" +} + +# 4. Create new Resource Group in the selected account, new VM will be created in this RG +resource "decort_resgroup" "my_rg" { + name = "NewRgByTF" + account_id = data.decort_account.my_account.account_id + gid = # Grid (platform) ID + # if you want to set resource quota on this Resource Group, uncomment + # the following code fragment + # quota { + # cpu = 8 # CPU limit + # ram = 8912 # RAM limit in MB + # disk = 96 # disk volume limit in GB + #} +} + +# 5. Create extra disk, which will be attached to the new VM. +# This step is optional - if you do not want extra disks on your VM, skip it +# and comment out extra_disks parameter when creating VM below. +resource "decort_disk" "extra_disk" { + disk_name = "extra-disk-for-vm" + account_id = data.decort_account.my_account.account_id + gid = # Grid (platform) ID + size_max = 5 # disk size in GB + type = "D" # disk type, always use "D" for extra disks + sep_id = data.decort_image.os_image.sep_id # use the same SEP ID as the OS image + pool = "<>" # consult your DECORT platform admin for configured storage pool names +} + +# 6. Create virtual machine (a compute of type KVM VM x86 in this example) +# Now that we have all necessary components at hand, we may create a virtual machine. +# This VM will be based on the previsouly obtained OS image, located in the specified +# Resource Group, directly connected to an external network, have a boot disk of +# specified size and one extra disk attached. +resource "decort_kvmvm" "my_new_vm" { + name = "tf-managed-vm" + driver = "KVM_X86" # Compute virtualization driver + rg_id = decort_resgroup.my_rg.id + cpu = 1 # CPU count + ram = 1024 # RAM size in MB, must be even number, ideally a power of 2 + boot_disk_size = 10 # Boot disk size in GB + image_id = data.decort_image.os_image.image_id + description = "Test KVM VM Compute managed by Terraform" + extra_disks = [ decort_disk.extra_disk.id ] + + network { + net_type = "EXTNET" + net_id = <> # specify external network ID to use, consult your DECORT platform admin for correct IDs + # ip_address = "<>" # you may optionally request a specific IP address + } +} +``` diff --git a/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT.md b/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT.md new file mode 100644 index 0000000..938223a --- /dev/null +++ b/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT.md @@ -0,0 +1,31 @@ +## Основные понятия +Ниже перечислены основные понятия с указанием соответствующих им аргументов в Terraform провайдере DECORT. +1. **Контроллер облачной платформы DECORT** – управляющее приложение, которое обеспечивает авторизацию пользователей и оркестрацию облачных ресурсов. + - Адрес контроллера задается в обязательном аргументе `controller_url` на стадии инициализации Terraform провайдера DECORT. Например, `controller_url= "https://ds1.digitalenergy.online"` +2. **Авторизационный провайдер** – приложение, работающее по протоколу Oauth2, предназначенное для выпуска и валидации токенов доступа к контроллеру облачной платформы в соответствующих режимах авторизации. Все действия в платформе должны выполняться авторизованными пользователями, и авторизационное приложение позволяет получить токен доступа, действующий некоторое ограниченное время, наличие которого подтверждает успешную авторизацию. + - Адрес авторизационного провайдера задается в аргументе`oauth2_url` на стадии инициализации Terraform провайдера DECORT. Например `oauth2_url= "https://sso.digitalenergy.online"` +3. **Подписчик** (_account_) – сущность, которая используется для группирования облачных ресурсов по принадлежности к определенному клиенту для целей учета потребления и биллинга. + - Имя подписчика задается аргументом `account_name` при вызове _resource_ или _data_ функций провайдера. Альтернативной является задание численного идентификатора подписчика в аргументе `account_id`. +4. **Пользователь** (_user_) – пользователь облачной инфраструктуры, представленный учетной записью. Чтобы получить возможность управлять облачными ресурсами (например, создавать виртуальные серверы или дискт) пользователь должен быть ассоциирован с одним или несколькими подписчиками и иметь соответствующие права, определяемые ролевой моделью, принятой в облачной платформе DECORT. Для доступа к платформе пользователь должен авторизоваться одним из способов, описанных ниже в разделе «Способы авторизации». +5. **Ресурсная группа** (_resource group_) – способ группирования вычислительных ресурсов (например, виртуальных серверов по функциональному признаку или принадлежности к одному и тому же проекту). Ресурсную группу можно рассматривать как небольшой персональный дата-центр, в котором размещаются один или несколько серверов и виртуальных сетевых сегментов. Ресурсная группа идентифицируется по комбинации параметров `account` и `name`. Обратите внимание, что имя имя ресурсной группы уникально только в рамках одного и того же `account`. +6. **Вычислительный ресурс** (_compute_) - универсальная абстракция пользовательского сервера в платформе DECORT. Благодаря использованию такой абстракции можно, например, создать одну виртуальную машину на базе KVM Intel x86, а другую - на базе KVM IBM Power, а потом управлять ими - изменять количество CPU/RAM, подключать/отключать диски и т.п. - одинаковым образом, не задумываясь об их архитектурных различиях. В то же время, так как типизация ресурсов в Terraform не поддерживает наследование, различные типы вычислительных ресурсов, доступных на платформе DECORT и абстрагируемых через понятие унифицированный _compute_, в Terraform представлены разными типами (напр., свой тип для виртуальных серверов на базе KVM и свой тип для перспективных x86-совместимых bare metal серверов). +7. **Ресурс хранения** (_disk_) - универсальная абстракция дискового ресурса в платформе DECORT. Платформа поддерживает различные типы систем хранения данных, но при этом управление созданными на разных системах хранения дисками осуществляется посредством унифицированного набора действий, например, "подключить диск к _compute_", "увеличить размер диска", "сделать мгновенный снимок диска", "настроить параметры быстродействия диска". +8. **Виртуальный сервер** – экземпляр _compute_, в основе технической реализации которого лежит виртуальная машина, работающая в облаке DECORT и доступна по сети. Виртуальный сервер характеризуется количеством выделенных ему CPU (аргумент`cpu`), объемом ОЗУ (`ram`), размером загрузочного диска (`boot_disk size`). При создании виртуального сервера на загрузочный диск устанавливается образ операционной системы, заданный в аргументе `image_id`. Помимо загрузочного диска к виртуальному серверу можно подключить несколько дисков для хранения прикладных данных, список которых задается аргументами `extra_disks`. Виртуальный сервер идентифицируется по комбинации аргументов `name` (имя сервера) и `rgid` (идентификатор ресурсной группы). Обратите внимание, что имя виртуального сервера `name` уникально только в рамках одной и той же ресурсной группы. +9. **Виртуальный сетевой сегмент** (_Virtual Network Segment_ или _ViNS_) - сетевой сегмент и обеспечивающая его функционирование виртуальная инфраструктура, которые пользователь может создавать для своих нужд на уровне ресурсной группы или подписчика (_account_). ViNS можно создать полностью изолированным от внешних сетей (см. ниже _External Network_) или с подключением во внешнюю сеть. Внутри ViNS работает DHCP-сервис, обеспечивающий управление IP адресами экземпляров _compute_, подключённых в этот ViNS. +10. **Внешняя сеть** (_External Network_) - сетевой сегмент, через который платформа DECORT взаимодействует с внешними по отношению к ней сетевыми ресурсами. Например, в случае с публичным облаком на базе DECORT в качестве внешней сети выступает сеть Интернет. В отличие от ViNS платформа не управляет внешней сетью, а лишь пользуется её ресурсами. В платформе может быть настроено несколько внешних сетей с различными диапазонами IP адресов, и существует механизм управления доступом пользователей к внешним сетям. +11. Сетевой доступ к экземпляру _compute_ (виртуальному серверу) реализуется через его подключение к ViNS и/или прямое подключение во внешнюю сеть (External Network). Один и тот же экземпляр _compute_ может одновременно иметь несколько подключений в разные ViNS и/или различные внешние сети. + +## Способы авторизации +Облачная платформа DECORT поддерживает три базовых типа авторизации: +1. С использованием авторизационного провайдера, работающего по протоколу _Oauth2_. Данный способ является предпочтительным, так как обеспечивает бОльшую гибкость и безопасность. Для авторизации в этом режиме при инициализации Terrafrom провайдера DECORT необходимо указать параметры `oauth2_url` и `controller_url`, а также предоставить одно из нижеперечисленного: + - Комбинация Application ID & Application secret, соответствующих пользователю, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии. В процессе проверки предоставленных Application ID & Application secret модуль получает от авторизационного провайдера токен (JSON Web Token, JWT), который затем используется для доступа к указанному контроллеру DECORT. Для авторизации по данному варианту, при инициализации Terraform провайдера DECORT следует установить аргумент `authenticator=decs3o` и задать аргументы `app_id` и `app_secret` (или определить соответствующие переменные окружения `DECORT_APP_ID` и `DECORT_APP_SECRET`). + - JSON Web Token – заранее полученный от авторизационного провайдера токен доступа, ассоциированный с определенным пользователем, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии. Для авторизации по данному варианту, при инициализации Terraform провайдера DECORT следует установить аргумент `authenticator=jwt` и задать аргумент `jwt` (или определить переменную окружения `DECORT_JWT`). +2. С использованием комбинации _имя пользователя : пароль_. Данный режим не использует внешних авторизационных провайдеров и подразумевает, что пользователь с такой комбинацией зарегистрирован непосредственно на указанном в параметре `controller_url` контроллере облачной платформы DECORT. + - Чтобы провайдер авторизовался по данному варианту, при его инициализации следует установить аргумент `authenticator=legacy` и задать аргументы `user` и `password` (или определить соответствующие переменные окружения `DECORT_USER` и `DECORT_PASSWORD`). +3. С использованием авторизационного провайдера, работающего по протоколу _Oauth2_oidc_. Для авторизации в этом режиме при инициализации Terrafrom провайдера DECORT необходимо указать параметры `oauth2_url` и `controller_url`, а также Application ID & Application secret, _имя пользователя и пароль_, соответствующих пользователю, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии, и _имя домена_. В процессе проверки предоставленных Application ID & Application secret и пары _имя пользователя-пароль_ модуль получает от авторизационного провайдера токен (JSON Web Token, JWT), который затем используется для доступа к указанному контроллеру DECORT. Для авторизации по данному варианту, при инициализации Terraform провайдера DECORT следует установить аргумент `authenticator=bvs`, задать аргументы `app_id` и `app_secret` (или определить соответствующие переменные окружения `DECORT_APP_ID` и `DECORT_APP_SECRET`), `bvs_user` и `bvs_password` (или определить соответствующие переменные окружения `DECORT_BVS_USER` и `DECORT_BVS_PASSWORD`), а также указать `domain` (или определить соответствующие переменные окружения `DECORT_DOMAIN`). + +После успешной авторизации пользователь (или приложение-клиент) получает доступ к ресурсам, находящимся под управлением соответствующего DECORT контроллера. Доступ предоставляется в рамках подписчиков (_account_), с которыми ассоциирован данный пользователь (_user_), и в соответствии с присвоенными ему ролями. + +## Пользовательская и административная группы API +Пользовательская группа API - группа API платформы DECORT, которая позволяет выполнять операции с платформой с правами обычного пользователя. Покрывает большую часть задач. +Административная группа API - группа API платформы DECORT, которая позволяет выполнять операции с платформой с расширенными правами. Данные права подразумевают расширенный перечень операций над ресурсами, расширенный перечень ресурсов, расширенную информацию. Требуются права администратора для взаимодействия с этой группой API. diff --git a/wiki/4.7.4/04.-Начало-работы-с-terraform-провайдером-DECORT.md b/wiki/4.7.4/04.-Начало-работы-с-terraform-провайдером-DECORT.md new file mode 100644 index 0000000..edaa664 --- /dev/null +++ b/wiki/4.7.4/04.-Начало-работы-с-terraform-провайдером-DECORT.md @@ -0,0 +1,6 @@ +Данный раздел описывает: +- Системные требования +- Установку провайдера +- Инициализацию провайдера +- Переключение режима работы между разными группами API +- Получение gid/grid_id площадки diff --git a/wiki/4.7.4/04.01-Установка-Terraform-провайдера-DECORT.md b/wiki/4.7.4/04.01-Установка-Terraform-провайдера-DECORT.md new file mode 100644 index 0000000..ed461a1 --- /dev/null +++ b/wiki/4.7.4/04.01-Установка-Terraform-провайдера-DECORT.md @@ -0,0 +1,150 @@ +## Системные требования + +Для запуска провайдера вам потребуется машина, на которой установлен Terraform. + +Кроме того, в связи с тем, что начиная с версии 0.12 Terraform изменил алгоритм поиска и инициализации локальных провайдеров, настройка данного провайдера для работы с Terraform 0.12 или более новыми версиями потребует выполнения ряда дополнительных действий. Подробнее см. [8.3 Настройка локального провайдера для работы с новыми версиями Terraform](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/08.-Полезные-советы#user-content-8-3-настройка-локального-провайдера-для-работы-с-новыми-версиями-terraform.md). + +## Установка +Начиная с версии провайдера `4.3.0` в релизном архиве находятся скрипты-инсталляторы. +Чтобы выполнить установку, необходимо: +1. Перейти по адресу: https://repository.basistech.ru/BASIS/terraform-provider-decort/releases +2. Выбрать необходимую версию провайдера подходящую под операционную систему. +3. Скачать архив. +4. Распаковать архив. +5. Выполнить скрипт установщика, `install.sh` или `install.bat` для Windows.
+*Для запуска `install.sh` не забудьте изменить права доступа к файлу* +```bash +chmod u+x install.sh +``` +6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его +```bash +DECORT provider version 4.3.0 has been successfully installed + +Copy this provider configuration to main.tf file: +terraform { + required_providers { + decort = { + version = "4.3.0" + source = "basis/decort/decort" + } + } +} +``` +7. После этого, создайте файл `main.tf` в рабочей директории, которая может находится в любом удобном для пользователя месте. +В данном примере, рабочая директория с файлом main.tf находится по пути: +```bash +~/work/tfdir/main.tf +``` +8. Вставьте в `main.tf` блок конфигурации провайдера, который был выведен на экран установщиком: +```terraform +terraform { + required_providers { + decort = { + version = "4.3.0" + source = "basis/decort/decort" + } + } +} +``` +9. Добавьте в файл блок с инициализацией провайдера. +```terraform +provider "decort" { + authenticator = "decs3o" + controller_url = "https://mr4.digitalenergy.online" + oauth2_url = "https://sso.digitalenergy.online" + allow_unverified_ssl = true +} +``` + +10. В консоли выполните команду +```bash +terraform init +``` + +11. В случае успешной установки, Terraform инициализирует провайдер и будет готов к дальнейшей работе. + +## Установка из релизов +Terraform провайдер DECORT имеет скомпилированные релизные версии, которые расположены по адресу: [Релизы](https://repository.basistech.ru/BASIS/terraform-provider-decort/releases). +Чтобы выполнить установку из релиза, необходимо: +1. Перейти по адресу: https://repository.basistech.ru/BASIS/terraform-provider-decort/releases +2. Выбрать необходимую версию провайдера подходящую под операционную систему. +3. Скачать архив. +4. Распаковать архив. +5. Полученный файл (в директории `bin/`) необходимо поместить: +Linux: +```bash +~/.terraform.d/plugins/${host_name}/${namespace}/${type}/${version}/${target} +``` +Windows: +```powershell +%APPDATA%\terraform.d\plugins\${host_name}\${namespace}\${type}\${version}\${target} +``` +Где: +- host_name - имя хоста, держателя провайдера, например, basis +- namespace - пространство имен хоста, например decort +- type - тип провайдера, может совпадать с пространством имен, например, decort +- version - версия провайдера, например 4.3.0 +- target - архитектура операционной системы, например windows_amd64 + +В примере ниже используется путь до провайдера на машине с ОС Linux: + +```bash +~/.terraform.d/plugins/basis/decort/decort/4.3.0/linux_amd64/tf-provider + ^ ^ ^ ^ ^ ^ + host_name | | | | | | + | | | | | + namespace | | | | | + | | | | + type | | | | + | | | + version | | | + | | + target | | + | + исполняемый файл | +``` + +6. После этого, создайте файл `main.tf` в рабочей директории, которая может находится в любом удобном для пользователя месте. +В данном примере, рабочая директория с файлом main.tf находится по пути: +```bash +~/work/tfdir/main.tf +``` +7. Добавьте в `main.tf` следующий блок +```terraform +terraform { + required_providers { + decort = { + version = "4.3.0" + source = "basis/decort/decort" + } + } +} +``` +В поле `version` указывается версия провайдера. +
+**ВНИМАНИЕ: Версии в блоке и в пути к исполняемому файлу провайдера должны совпадать!** + +В поле `source` помещается путь до репозитория с версией вида: + +```bash +${host_name}/${namespace}/${type} +``` + +**ВНИМАНИЕ: Версии в блоке и в пути к исполняемому файлу провайдера должны совпадать!** + +8. Добавьте в файл блок с инициализацией провайдера. +```terraform +provider "decort" { + authenticator = "decs3o" + controller_url = "https://mr4.digitalenergy.online" + oauth2_url = "https://sso.digitalenergy.online" + allow_unverified_ssl = true +} +``` + +9. В консоли выполните команду +```bash +terraform init +``` + +10. В случае успешной установки, Terraform инициализирует провайдер и будет готов к дальнейшей работе. diff --git a/wiki/4.7.4/04.02-Инициализация-Terraform-провайдера-DECORT.md b/wiki/4.7.4/04.02-Инициализация-Terraform-провайдера-DECORT.md new file mode 100644 index 0000000..b75875b --- /dev/null +++ b/wiki/4.7.4/04.02-Инициализация-Terraform-провайдера-DECORT.md @@ -0,0 +1,64 @@ +## Список аргументов для инициализации +Перед началом использования любой Terraform провайдер должен быть инициализирован. + +В процессе инициализации Terraform провайдера DECORT проверяется корректность переданных аргументов и выполняется авторизация в указанном контроллере облачной инфраструктуры. Подробнее о способах авторизации в платформе DECORT смотри соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.4/03.-Обзор-облачной-платформы-DECORT#user-content-способы-авторизации.md). + +При инициализации Terraform провайдера DECORT используются следующие аргументы: + +| Аргумент | Переменная окружения | Описание | +| --- | --- | --- | +| allow_unverified_ssl | - | Если данный аргумент явно установлен в `true`, то провайдер **не будет** проверять SSL сертификаты при взаимодействии с авторизационным сервисом OAuth2 и контроллером облачной платформы.
Отключение проверок может быть полезным при работе в доверенной среде, использующей самоподписанные SSL сертификаты. Однако, так как отключение проверок несёт потенциальные риски безопасности, данную настройку следует использовать с осторожностью.
Разрешённые значения: `false` (значение по умолчанию) и `true`. | +| app_id | DECORT_APP_ID | Идентификатор приложения (клиента) для авторизации в контроллере облачной платформы в режиме `decs3o` или `bvs`.
Аргументы `app_id` и `app_secret` являются обязательными для режимов авторизации `authenticator=decs3o` и `authenticator=bvs`.
Если `app_id` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_APP_ID`. | +| app_secret | DECORT_APP_SECRET | Секретный код приложения (клиента) для авторизации в контроллере облачной платформы в режиме `decs3o` или `bvs`.
Аргументы `app_id` и `app_secret` являются обязательными для режимов авторизации `authenticator=decs3o` и `authenticator=bvs`.
Если `app_secret` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_APP_SECRET`. | +| authenticator | - | Режим авторизации при подключении к контроллеру облачной платформы.
Доступные режимы: `decs3o`, `legacy`, `jwt` или `bvs`.
Данный аргумент является обязательным. | +| bvs_user | DECORT_BVS_USER | Имя пользователя для авторизации в контроллере облачной платформы в режиме `bvs`.
Аргументы `bvs_password` и `bvs_user` являются обязательными для режима авторизации `authenticator=bvs`.
Если `bvs_user` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_BVS_USER`. | +| bvs_password | DECORT_BVS_PASSWORD | Пароль пользователя для авторизации в контроллере облачной платформы в режиме `bvs`.
Аргументы `bvs_user` и `bvs_password` являются обязательными для режима авторизации `authenticator=bvs`.
Если `bvs_password` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_BVS_PASSWORD`. | +| domain | DECORT_DOMAIN | Имя домена в контроллере облачной платформы в режиме `bvs`.
Данный аргумент является обязательным.
Если `domain` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_DOMAIN`. | +| controller_url | DECORT_CONTROLLER_URL | URL контроллера облачной платформы, через который будет осуществляться управление облачными ресурсами.
Данный аргумент является обязательным. | +| jwt | DECORT_JWT | JSON Web Token (JWT), который используется для авторизации в контроллере облачной платформы в режиме `jwt`.
Данный аргумент является обязательным для режима авторизации `authenticator=jwt`.
Если `jwt` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_JWT` | +| oauth2_url | DECORT_OAUTH2_URL | URL авторизационного сервиса OAuth2, который используется для управления доступом пользователей (или программных клиентов) к контроллеру облачной платформы.
Данный аргумент является обязательным для режимов авторизации `authenticator=decs3o`, `authenticator=bvs` и `authenticator=jwt`.
Если `oauth2_url` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_OAUTH2_URL` | +| password | DECORT_PASSWORD | Пароль для авторизации в контроллере облачной платформы в режиме `legacy`.
Аргументы `password` и `user` являются обязательными для режима авторизации `authenticator=legacy`.
Если `password` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_PASSWORD`. | +| user | DECORT_USER | Имя пользователя для авторизации в контроллере облачной платформы в режиме `legacy`.
Аргументы `user` и `password` являются обязательными для режима авторизации `authenticator=legacy`.
Если `user` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DECORT_USER`. | + +## Пример инициализации в режиме авторизации `decs3o` +Пример инициализации Terraform провайдера DECORT: +```terraform +provider "decort" { + authenticator = "decs3o" + controller_url = "https://ctrl.decort.online" + oauth2_url = "https://oauth2.decort.online:7777" +} +``` + +В данном примере используется режим авторизации `decs3o`. + +Как отмечено выше, в данном режиме требуется указать аргументы `app_id` и `app_secret`, идентифицирующие пользователя (или приложение-клиент), от лица которого будут выполняться дальнейшие действия. Однако, так как данная информация является конфиденциальной (по сути, она эквивалентна паре _имя пользователя : пароль_), то в общем случае заносить такого рода данные в tf-файл не следует. Рекомендуется определять в среде запуска Terraform переменные окружения `DECORT_APP_ID` и `DECORT_APP_SECRET`, из которых провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения. + +Пользователь, от лица которого Terrafrom будет выполнять действия в облачной платформе, должен заранее создать пару _Application ID_ и _Application Secret_ в авторизационном приложении OAuth2. Именно эти значения, а также URL авторизационного приложения Oauth2, должны присваиваться аргументам `app_id`, `app_secret` и `oauth2_url` соответственно для успешной инициализации провайдера. + +Также обратите внимание на формат задания аргументов `controller_url` и `oauth2_url`. В общем случае они должны содержать идентификатор протокола (_https://_) и сетевой порт, если он отличается от порта по умолчанию (в примере для авторизационного сервиса OAuth2 указан порт _7777_). Эту информацию вы можете узнать у администратора вашей облачной инфраструктуры DECORT. + +## Пример инициализации в режиме авторизации `bvs` +Пример инициализации Terraform провайдера DECORT: +```terraform +provider "decort" { + authenticator = "bvs" + controller_url = "https://delta.qa.loc" + oauth2_url = "https://bvs-delta.qa.loc:8443" + app_id = "delta" + app_secret = "" + bvs_password = "" + bvs_user = "" + domain = "dynamix" +} +``` + +В данном примере используется режим авторизации `bvs`. + +Как отмечено выше, в данном режиме требуется указать аргументы `app_id` - идентификатор площадки - delta, alpha, poc, etc. Можно найти на странице администратора по следующему пути: вкладка безопасность - клиентские сервисы - наименование площадки. `app_secret` - пароль площадки. Можно найти на странице администратора по следующему пути: вкладка безопасность - клиентские сервисы - наименование площадки (символ i) - поле "Пароль". Однако, так как данная информация является конфиденциальной, то в общем случае заносить такого рода данные в tf-файл не следует. Рекомендуется определять в среде запуска Terraform переменные окружения `DECORT_APP_ID` и `DECORT_APP_SECRET`, из которых провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения. +Также обязательными аргументами являются: `bvs_user` - имя пользователя, `bvs_password` - пароль пользователя. Рекомендуется не заносить их в tf-файл, а определять в среде запуска Terraform переменные окружения `DECORT_BVS_USER` и `DECORT_BVS_PASSWORD`, из которых провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения. +Домен для подключения `domain` - указывается наименование площадки. Данный аргумент является обязательным. Рекомендуется не заносить его в tf-файл, а определять в среде запуска Terraform переменную окружения `DECORT_DOMAIN`, из которой провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения. + +Пользователь, от лица которого Terrafrom будет выполнять действия в облачной платформе, должен заранее получить от администратора _Application ID_ и _Application Secret_, _bvs user_ и _bvs password_, а также _domain_. А также осуществить первичный вход на платформу посредством браузера. + +Также обратите внимание на формат задания аргументов `controller_url` и `oauth2_url`. В общем случае они должны содержать идентификатор протокола (_https://_) и сетевой порт, если он отличается от порта по умолчанию (в примере для авторизационного сервиса OAuth2 указан порт _8443_). Эту информацию вы можете узнать у администратора вашей облачной инфраструктуры DECORT. diff --git a/wiki/4.7.4/04.03-Переключение-между-группами-API.md b/wiki/4.7.4/04.03-Переключение-между-группами-API.md new file mode 100644 index 0000000..fb722ac --- /dev/null +++ b/wiki/4.7.4/04.03-Переключение-между-группами-API.md @@ -0,0 +1,38 @@ +Так как платформа DECORT предоставляет для работы две группы API, то terraform провайдер позволяет свободно переключать режимы работы между этими группами. +По умолчанию стоит пользовательская группа API. Ее можно сменить на административную группу. +Если прав у пользователя будет достаточно, то запрос будет выполнен, если нет, то будет ошибка: +```bash +Permission denied +``` +Которая говорит о том, что прав недостаточно. Тогда для выполнения операции обратитесь к администратору платформы. +Установка режима взаимодействия с группами API осуществляется через установку переменной окружения _DECORT_ADMIN_MODE_. +Для более подробного описания возможностей каждой группы API см. соответствующий раздел. + +## Переключение режима работы в Windows +Используйте сл. команду: +```Powershell +$Env:DECORT_ADMIN_MODE=1 +``` +Для отключения: +```Powershell +$Env:DECORT_ADMIN_MODE=0 +``` +## Переключение режима работы в Linux +Используйте сл. команду: +```bash +DECORT_ADMIN_MODE=1 +``` +или +```bash +export DECORT_ADMIN_MODE=1 +``` +Для отключения: +```bash +DECORT_ADMIN_MODE=0 +``` +или +```bash +export DECORT_ADMIN_MODE=0 +``` +**ОБРАТИТЕ ВНИМАНИЕ** +Переменные окружения создаются для терминальной сессии. В сл. раз их придется задавать еще раз, если требуется режим, отличный от пользовательского. diff --git a/wiki/4.7.4/04.04-Получение-gid-или-grid_id.md b/wiki/4.7.4/04.04-Получение-gid-или-grid_id.md new file mode 100644 index 0000000..4b316ac --- /dev/null +++ b/wiki/4.7.4/04.04-Получение-gid-или-grid_id.md @@ -0,0 +1,31 @@ +Платформа может располагаться на нескольких площадках(grid). +Такие площадки имеют свой id. +Для создания некоторых ресурсов требуется ввести grid_id или gid площадки. +Получение gid различается для пользовательского и административного API. + +## Получение gid для пользовательского API +Для получения gid с помощью пользовательского API, необходимо получить информацию из _data_source_ функции _decort_locations_list_, как указано ниже: +```terraform +data "decort_locations_list" "ll" { + +} + +output "test" { + value = data.decort_locations_list.ll +} +``` +В файл состояния будет сохранен результат, где можно посмотреть доступные для работы площадки. + +## Получение gid для административного API +Для получения gid с помощью административного API, необходимо получить информацию из _data_source_ функции _decort_grid_list_, как указано ниже: +```terraform +data "decort_grid_list" "gl" { + +} + +output "test" { + value = data.decort_grid_list.gl +} + +``` +В файл состояния будет сохранен результат, где можно посмотреть доступные для работы площадки. diff --git a/wiki/4.7.4/04.05-Сборка-terraform-провайдера-в-образ.md b/wiki/4.7.4/04.05-Сборка-terraform-провайдера-в-образ.md new file mode 100644 index 0000000..02bc8b7 --- /dev/null +++ b/wiki/4.7.4/04.05-Сборка-terraform-провайдера-в-образ.md @@ -0,0 +1,43 @@ +Образ приложения - современный способ запуска приложений. Образ приложения представляет собой контейнер, в который входит ОС и необходимые для работы приложения пакеты. +Способов создать образ приложения довольно много, для этого существуют программы контейнеризации: +- Docker +- Podman +- и другие +Образ представляет собой "зафиксированную" версию приложения, что означает, что никакие изменения в приложения внесены быть не могут. Так же означает то, что приложение не может создавать побочные файлы при работе. +Контейнер - это запущенный экземпляр образа. То есть, один образ может порождать множество контейнеров, каждый из которых будет включать в себя отдельный экземпляр приложения. +Одно из преимуществ работы приложения в контейнере - кроссплатформенность. Это преимущество обуславливается тем, что образ приложения уже включает в себя все необходимое для успешной работы приложения, в том числе операционную систему. Поэтому, пользователю достаточно установить на вычислительной машине программу, которая обеспечивает работу с образами приложений. + +## Docker +Docker является одной из самых популярных программ для работы с образами. +Docker позволяет: +- Создавать образы +- Запускать контейнеры +- Управлять контейнерами +- Управлять образами +Скачать и установить Docker можно по ссылке https://docs.docker.com/get-docker/ + +## Сборка terraform провайдера +### Требования: +- Docker +- git +- Компилятор языка GO += make +### Установка необходимых программ +1. Компилятор языка GO можно скачать и установить по ссылке: https://go.dev/dl/ +2. Docker можно скачать и установить по ссылке выше. +3. Git можно скачать и установить по ссылке: https://git-scm.com/ +4. Программа make входит в пакет установленных программ для ОС Linux. Для Windows можно воспользоваться инструкцией со stack overflow: https://stackoverflow.com/questions/32127524/how-to-install-and-use-make-in-windows +### Порядок действий +1. Склонировать репозиторий с провайдером: +```bash +git clone https://github.com/rudecs/terraform-provider-decort.git +``` +2. Перейти в директорию со скачанным кодом: +```bash +cd terraform-provider-decort +``` +3. Выполнить команду: +```bash +make image +``` +В результате выполнения данной последовательности, будет создан docker образ, который содержит в себе приложение terraform, terraform провайдер. diff --git a/wiki/4.7.4/05.-Работа-с-terraform.md b/wiki/4.7.4/05.-Работа-с-terraform.md new file mode 100644 index 0000000..675f2ea --- /dev/null +++ b/wiki/4.7.4/05.-Работа-с-terraform.md @@ -0,0 +1,4 @@ +Раздел описывает некоторые практики работы с terraform, которые могут быть полезны пользователю. +Раздел включает в себя следующие статьи: +- Импортирование ресурсов +- Работа с таймаутами diff --git a/wiki/4.7.4/05.01-Импортирование-ресурсов.md b/wiki/4.7.4/05.01-Импортирование-ресурсов.md new file mode 100644 index 0000000..8a419d3 --- /dev/null +++ b/wiki/4.7.4/05.01-Импортирование-ресурсов.md @@ -0,0 +1,75 @@ +Импортирование ресурсов в terraform позволяет привести в соответствие состояние terraform (.tfstate) к состоянию ресурса в платформе. +Необходимость такого приведения возникает в нескольких случаях: +- Ресурс был создан через портал платформы, работа продолжается через terraform провайдер, +- Ресурс был создан через terraform провайдер, однако был изменен через портал платформы, +- Ресурс был создан через terraform провайдер, однако был изменен другим пользователем через terraform провайдер, +- И так далее + +Такие расхождения в состоянии ресурсов нередки, путей их решения несколько: +- Использовать импортирование ресурсов, +- Использовать общие файлы состояний ресурсов, к которым будут иметь доступ все участники, занятые в работе с платформой. +В текущем разделе рассматривается первый вариант. + +## Импортирование ресурсов +Импортирование ресурсов позволяет совершить запрос к платформе, чтобы сформировать файл состояния. +Чтобы совершить импортирование ресурсов необходимо ввести сл. команду: +```bash +terraform import . +``` +## Пример +Предположим, что у нас ресурс, описывающий диск: +```terraform +resource "decort_disk" "disk" { + account_id = 121212 + gid = 3333 + disk_name = "mySuperDisk" + size_max = 100500 +} +``` +Если запустить команду: +```bash +terraform apply +``` +То у нас будет создан новый диск. +Но, такой диск уже есть на площадке и мы хотели бы сформировать .tfstate для этого ресурса. +Поэтому, для начала, необходимо получить список дисков: +```terraform +data "decort_disk_list" "dl"{ + +} +output "test" { + value = data.decort_disk_list.dl +} +``` +В полученных данных необходимо найти требуемый диск, получить его id - параметр disk_id. Пусть это будет - 777777 +Теперь можно выполнить импортирование: +```bash +terraform import decort_disk.disk 777777 +``` +Команда должна успешно завершиться, появиться файл состояний, который позволит манипулировать ресурсом. + +## Ошибки при импортировании +При импортировании ресурса может возникнуть сл. ошибка: +```bash +Error: : required field is not set +``` +Где - наименование поля. +Ошибка возникает в том случае, если в описании ресурса отсутствует обязательное поле. +Например: +```terraform +resource "decort_disk" "disk" { + account_id = 121212 + gid = 3333 + size_max = 100500 +} +``` +В приведенном выше описании отсутствует поле disk_name, поэтому, при попытке импортирования возникнет ошибка. +Для ее устранения, необходимо выполнить запрос на получение списка дисков, найти недостающее поле, после чего добавить его в описание ресурса. +После этого повторить попытку импортирования. + +## Общий алгоритм устранения ошибок +1. Выполнить запрос импортирования +2. В случае ошибки - внести недостающие поля. +3. Повторить п.1. + + diff --git a/wiki/4.7.4/05.02-Работа-с-таймаутами.md b/wiki/4.7.4/05.02-Работа-с-таймаутами.md new file mode 100644 index 0000000..9a739b4 --- /dev/null +++ b/wiki/4.7.4/05.02-Работа-с-таймаутами.md @@ -0,0 +1,100 @@ +Terraform провайдер DECORT поддерживает тонкую настройку таймаутов выполнения запросов к платформе. Таймауты необходимы для определения максимального времени выполнения запроса. При превышении этого времени соединение рвется и запрос считается невыполненным. +Таймауты применяются при работе с _resource_ функциями провайдера. _Data source_ функции по-умолчанию имеют таймаут в 20 минут и изменяться не может. + +## Стандартные таймауты terraform +| Операция | Время | Описание | +| --- | --- | --- | +| create | 20 минут | Создание ресурса | +| read | 20 минут | Чтение ресурса | +| update | 20 минут | Обновление ресурса | +| delete | 20 минут | Удаление ресурса | +| default | 20 минут | Значение по умолчанию. Устанавливает значение для всех операций | + +## Стандартные таймауты провайдера DECORT +В провайдере DECORT таймауты переопределены для того, чтобы уменьшить нагрузку на платформу. +| Операция | Время | Описание | +| --- | --- | --- | +| create | 10 минут | Создание ресурса | +| read | 5 минут | Чтение ресурса | +| update | 5 минут | Обновление ресурса | +| delete | 5 минут | Удаление ресурса | +| default | 5 минут | Значение по умолчанию. Устанавливает значение для всех операций | + +## Установка таймаутов +Все таймауты можно установить самостоятельно для каждого ресурса. +Для этого используется блок _timeouts_, который имеется в каждом ресурсе провайдера. +Пример: +```terraform +resource "decort_res" "res_name" { + timeouts { + create = "10m" + update = "1m" + delete = "2m" + read = "7m" + #default = "15m" + } +} +``` +Где: +- create - операция создания ресурса +- read - операция чтения ресурса +- update - операция обновления ресурса +- delete - операция удаления ресурса +- default - установит заданное время для всех операций +## Формат установления времени +Как видно из примера выше, провайдер принимает на вход строку вида: +``` +"" +``` +Где: +- time-num - число +- time-val - сокращенная запись значения временного отрезка. + +Таблица с временными отрезками: + +| Отрезок | Значение | +| --- | --- | +| n | наносекунда | +| ms | миллисекунда | +| s | секунда | +| m | минута | +| h | час | + +Примеры: +``` +"10m" +"1s" +"1h10m" +``` +И так далее + +## Работа с таймером через .tf-файл +В .tf-файле, в блоке ресурса можно задавать таймауты для операций над ресурсом, однако, при работе с таймаутом, следует помнить о правиле: +__В случае изменения таймаутов в .tf-файле, операции с новыми таймаутами будут производиться только после apply/plan/destroy__ +То есть, если изменить таймауты и выполнить операцию, то она выполнится со старыми таймаутами, а сл. операция уже будет выполнена с новыми таймаутами. +Это объясняется тем, что значения таймаутов считываются из файла состояний .tfstate при выполнении операции, и новые значения таймаутов попадут туда только при успешно выполненной операции. + +## Ошибки при работе с таймаутом +### context deadline exceeded +Если время таймаута слишком короткое, то можно получить сл. ошибку: +``` +context deadline exceeded +``` +Которая говорит, что было выполнено прерывание работы программы из-за истечения времени на операцию. +Для исправления можно увеличить размер окна таймаута и выполнить успешный запрос (например, с помощью терминала), чтобы новое значения таймаутов было добавлено в .tfstate. В противном случае, файл состояния придется править в ручную, либо удалить его и импортировать ресурс для формирования .tfstate. + +### 504 ошибка +Данная ошибка говорит о том, что сервер принудительно разорвал соединения из-за истечения времени на ответ. +В случае получения данной ошибки, обратитесь в службу технической поддержки. + +## Работа с таймаутами через терминал +Сл. команда выполнит операцию terraform с заданным таймаутом: +```bash +timeout