Compare commits

...

1 Commits
1.2.0 ... main

Author SHA1 Message Date
Алексей Фетисов b8f118097e 1.2.1
5 days ago

@ -1,35 +1,9 @@
## Version 1.2.0 ## Version 1.2.1
### Добавлено ### Добавлено
#### extnet
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BATF-671 | Data source `decort_extnet_reserved_ip_list` в cloudapi/extnet |
| BATF-672 | Вычисляемое поле `account_id` в блоке `reservations` в data sources `dynamix_extnet` в cloudapi/extnet |
#### kvmvm #### kvmvm
| Идентификатор<br>задачи | Описание | | Идентификатор<br>задачи | Описание |
| --- | --- | | --- | --- |
| BATF-674 | Вычисляемое поле `vnc_password` в resources `dynamix_kvmvm` и data sources `dynamix_kvmvm` в cloudapi/kvmvm | | BATF-692 | Опциональное поле `preferred_cpu`в resource `dynamix_kvmvm` в cloudapi/kvmvm |
| BATF-673 | Опциональное поле `auto_start_w_node`в resources `dynamix_kvmvm` в cloudapi/kvmvm | | BATF-692 | Вычисляемое поле `preferred_cpu`в data_sources `dynamix_kvmvm, dynamix_kvmvm_list, dynamix_kvmvm_list_deleted` в cloudapi/kvmvm |
| BATF-673 | Вычисляемое поле `auto_start_w_node`в data_sources `dynamix_kvmvm, dynamix_kvmvm_list, dynamix_kvmvm_list_deleted` в cloudapi/kvmvm |
#### vins
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BATF-676 | Вычисляемое поле `account_id` в блоке `reservations` в resource `dynamix_vins` и data source `dynamix_vins` в cloudapi/vins |
| BATF-675 | Вычисляемое поле `vnc_password` в блоке `vnf_dev` в resources `dynamix_vins` и data sources `dynamix_vins` в cloudapi/vins |
#### общее
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BATF-679 | Добавлена поддержка работы с режимом аутентификации `bvs` |
### Удалено
#### vins
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BATF-676 | Вычисляемые поля `client_type, description, domain_name, hostname` в блоке `reservations` в resources `dynamix_vins` и data sources `dynamix_vins` в cloudapi/vins|
| BATF-680 | Опциональное поле `compute_ids` в resource `decort_vins_static_route` в cloudapi/vins |

@ -8,7 +8,7 @@ ZIPDIR = ./zip
BINARY=${NAME} BINARY=${NAME}
WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${SECONDNAMESPACE}/${VERSION}/${OS_ARCH} WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${SECONDNAMESPACE}/${VERSION}/${OS_ARCH}
MAINPATH = ./cmd/dynamix/ MAINPATH = ./cmd/dynamix/
VERSION=1.2.0 VERSION=1.2.1
OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH) OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH)
FILES = ${BINARY}_${VERSION}_darwin_amd64\ FILES = ${BINARY}_${VERSION}_darwin_amd64\
@ -31,7 +31,7 @@ BINS = $(addprefix bin/, $(FILES))
default: install default: install
image: image:
GOOS=linux GOARCH=amd64 go build -o terraform-provider-dynamix ./cmd/basis/ GOOS=linux GOARCH=amd64 go build -o terraform-provider-dynamix ./cmd/dynamix/
docker build . -t rudecs/tf:3.2.2 docker build . -t rudecs/tf:3.2.2
rm terraform-provider-dynamix rm terraform-provider-dynamix

@ -76,6 +76,7 @@ description: |-
- `os_users` (Attributes List) (see [below for nested schema](#nestedatt--os_users)) - `os_users` (Attributes List) (see [below for nested schema](#nestedatt--os_users))
- `pci_devices` (List of Number) - `pci_devices` (List of Number)
- `pinned` (Boolean) - `pinned` (Boolean)
- `preferred_cpu` (List of Number)
- `ram` (Number) - `ram` (Number)
- `reference_id` (String) - `reference_id` (String)
- `registered` (Boolean) - `registered` (Boolean)

@ -96,6 +96,7 @@ Read-Only:
- `numa_affinity` (String) - `numa_affinity` (String)
- `numa_node_id` (Number) - `numa_node_id` (Number)
- `pinned` (Boolean) - `pinned` (Boolean)
- `preferred_cpu` (List of Number)
- `ram` (Number) - `ram` (Number)
- `reference_id` (String) - `reference_id` (String)
- `registered` (Boolean) - `registered` (Boolean)

@ -94,6 +94,7 @@ Read-Only:
- `numa_affinity` (String) - `numa_affinity` (String)
- `numa_node_id` (Number) - `numa_node_id` (Number)
- `pinned` (Boolean) - `pinned` (Boolean)
- `preferred_cpu` (List of Number)
- `ram` (Number) - `ram` (Number)
- `reference_id` (String) - `reference_id` (String)
- `registered` (Boolean) - `registered` (Boolean)

@ -55,6 +55,7 @@ description: |-
- `pin_to_stack` (Boolean) - `pin_to_stack` (Boolean)
- `pool` (String) Pool to use if sepId is set, can be also empty if needed to be chosen by system. - `pool` (String) Pool to use if sepId is set, can be also empty if needed to be chosen by system.
- `port_forwarding` (Attributes Set) (see [below for nested schema](#nestedatt--port_forwarding)) - `port_forwarding` (Attributes Set) (see [below for nested schema](#nestedatt--port_forwarding))
- `preferred_cpu` (List of Number) Recommended isolated CPUs. Field is ignored if compute.cpupin=False or compute.pinned=False
- `reset` (Boolean) - `reset` (Boolean)
- `restore` (Boolean) - `restore` (Boolean)
- `rollback` (Attributes) (see [below for nested schema](#nestedatt--rollback)) - `rollback` (Attributes) (see [below for nested schema](#nestedatt--rollback))

@ -9,7 +9,7 @@ require (
github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 github.com/hashicorp/terraform-plugin-framework-validators v0.12.0
github.com/hashicorp/terraform-plugin-log v0.9.0 github.com/hashicorp/terraform-plugin-log v0.9.0
github.com/sirupsen/logrus v1.9.3 github.com/sirupsen/logrus v1.9.3
repository.basistech.ru/BASIS/decort-golang-sdk v1.10.0 repository.basistech.ru/BASIS/decort-golang-sdk v1.10.1
) )
require ( require (

@ -100,5 +100,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 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 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
repository.basistech.ru/BASIS/decort-golang-sdk v1.10.0 h1:/Q5MB07rqqv1m1XcAsU3f1ybMRYOgF908+PKEfcHzPs= repository.basistech.ru/BASIS/decort-golang-sdk v1.10.1 h1:Z6drv1seHY6nkyEdjGp2LoNKbne1ihrNRs32q93UhcM=
repository.basistech.ru/BASIS/decort-golang-sdk v1.10.0/go.mod h1:OaUynHHuSjWMzpfyoL4au6oLcUogqUkPPBKA15pbHWo= repository.basistech.ru/BASIS/decort-golang-sdk v1.10.1/go.mod h1:OaUynHHuSjWMzpfyoL4au6oLcUogqUkPPBKA15pbHWo=

@ -50,7 +50,9 @@ func DataSourceCompute(ctx context.Context, state *models.RecordComputeModel, c
AutoStartWithNode: types.BoolValue(computeRecord.AutoStart), AutoStartWithNode: types.BoolValue(computeRecord.AutoStart),
Chipset: types.StringValue(computeRecord.Chipset), Chipset: types.StringValue(computeRecord.Chipset),
BootDiskSize: types.Int64Value(int64(computeRecord.BootDiskSize)), BootDiskSize: types.Int64Value(int64(computeRecord.BootDiskSize)),
BootOrder: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &computeRecord.BootOrder),
CdImageId: types.Int64Value(int64(computeRecord.CdImageId)), CdImageId: types.Int64Value(int64(computeRecord.CdImageId)),
Clones: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &computeRecord.Clones),
CloneReference: types.Int64Value(int64(computeRecord.CloneReference)), CloneReference: types.Int64Value(int64(computeRecord.CloneReference)),
ComputeCIID: types.Int64Value(int64(computeRecord.ComputeCIID)), ComputeCIID: types.Int64Value(int64(computeRecord.ComputeCIID)),
CPU: types.Int64Value(int64(computeRecord.CPU)), CPU: types.Int64Value(int64(computeRecord.CPU)),
@ -86,11 +88,13 @@ func DataSourceCompute(ctx context.Context, state *models.RecordComputeModel, c
NumaNodeId: types.Int64Value(int64(computeRecord.NumaNodeId)), NumaNodeId: types.Int64Value(int64(computeRecord.NumaNodeId)),
OSUsers: flattenOSUsers(ctx, &computeRecord.OSUsers), OSUsers: flattenOSUsers(ctx, &computeRecord.OSUsers),
Pinned: types.BoolValue(computeRecord.Pinned), Pinned: types.BoolValue(computeRecord.Pinned),
PreferredCPU: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &computeRecord.PreferredCPU),
PCIDevices: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, flattenPCI(ctx, pciDevicesList)), PCIDevices: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, flattenPCI(ctx, pciDevicesList)),
RAM: types.Int64Value(int64(computeRecord.RAM)), RAM: types.Int64Value(int64(computeRecord.RAM)),
ReferenceID: types.StringValue(computeRecord.ReferenceID), ReferenceID: types.StringValue(computeRecord.ReferenceID),
Registered: types.BoolValue(computeRecord.Registered), Registered: types.BoolValue(computeRecord.Registered),
ResName: types.StringValue(computeRecord.ResName), ResName: types.StringValue(computeRecord.ResName),
ReservedNodeCpus: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &computeRecord.ReservedNodeCpus),
RGID: types.Int64Value(int64(computeRecord.RGID)), RGID: types.Int64Value(int64(computeRecord.RGID)),
RGName: types.StringValue(computeRecord.RGName), RGName: types.StringValue(computeRecord.RGName),
SnapSets: flattenSnapSet(ctx, &computeRecord.SnapSets), SnapSets: flattenSnapSet(ctx, &computeRecord.SnapSets),
@ -105,27 +109,14 @@ func DataSourceCompute(ctx context.Context, state *models.RecordComputeModel, c
VirtualImageID: types.Int64Value(int64(computeRecord.VirtualImageID)), VirtualImageID: types.Int64Value(int64(computeRecord.VirtualImageID)),
VirtualImageName: types.StringValue(computeRecord.VirtualImageName), VirtualImageName: types.StringValue(computeRecord.VirtualImageName),
VNCPassword: types.StringValue(computeRecord.VNCPassword), VNCPassword: types.StringValue(computeRecord.VNCPassword),
VGPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &computeRecord.VGPUs),
} }
state.BootOrder, diags = types.ListValueFrom(ctx, types.StringType, computeRecord.BootOrder)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error FlattenDataSourceCompute", diags))
}
state.Clones, diags = types.ListValueFrom(ctx, types.Int64Type, computeRecord.Clones)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error FlattenDataSourceCompute", diags))
}
state.Tags, diags = types.MapValueFrom(ctx, types.StringType, computeRecord.Tags) state.Tags, diags = types.MapValueFrom(ctx, types.StringType, computeRecord.Tags)
if diags != nil { if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error FlattenDataSourceCompute", diags)) tflog.Error(ctx, fmt.Sprint("Error FlattenDataSourceCompute", diags))
} }
state.ReservedNodeCpus, diags = types.ListValueFrom(ctx, types.Int64Type, computeRecord.ReservedNodeCpus)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error FlattenDataSourceCompute", diags))
}
state.VGPUs, diags = types.ListValueFrom(ctx, types.Int64Type, computeRecord.VGPUs)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error FlattenDataSourceCompute", diags))
}
tflog.Info(ctx, "End FlattenDataSourceCompute") tflog.Info(ctx, "End FlattenDataSourceCompute")
return nil return nil
} }

@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-log/tflog"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client" "repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/flattens"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/models" "repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/utilities" "repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/utilities"
) )
@ -74,7 +75,9 @@ func flattenItemsList(ctx context.Context, computes *compute.ListComputes) []mod
Architecture: types.StringValue(item.Architecture), Architecture: types.StringValue(item.Architecture),
AutoStartWithNode: types.BoolValue(item.AutoStart), AutoStartWithNode: types.BoolValue(item.AutoStart),
BootDiskSize: types.Int64Value(int64(item.BootDiskSize)), BootDiskSize: types.Int64Value(int64(item.BootDiskSize)),
BootOrder: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.BootOrder),
CdImageId: types.Int64Value(int64(item.CdImageId)), CdImageId: types.Int64Value(int64(item.CdImageId)),
Clones: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.Clones),
CloneReference: types.Int64Value(int64(item.CloneReference)), CloneReference: types.Int64Value(int64(item.CloneReference)),
Chipset: types.StringValue(item.Chipset), Chipset: types.StringValue(item.Chipset),
ComputeCIID: types.Int64Value(int64(item.ComputeCIID)), ComputeCIID: types.Int64Value(int64(item.ComputeCIID)),
@ -105,10 +108,12 @@ func flattenItemsList(ctx context.Context, computes *compute.ListComputes) []mod
NumaAffinity: types.StringValue(item.NumaAffinity), NumaAffinity: types.StringValue(item.NumaAffinity),
NumaNodeId: types.Int64Value(int64(item.NumaNodeId)), NumaNodeId: types.Int64Value(int64(item.NumaNodeId)),
Pinned: types.BoolValue(item.Pinned), Pinned: types.BoolValue(item.Pinned),
PreferredCPU: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.PreferredCPU),
RAM: types.Int64Value(int64(item.RAM)), RAM: types.Int64Value(int64(item.RAM)),
ReferenceID: types.StringValue(item.ReferenceID), ReferenceID: types.StringValue(item.ReferenceID),
Registered: types.BoolValue(item.Registered), Registered: types.BoolValue(item.Registered),
ResName: types.StringValue(item.ResName), ResName: types.StringValue(item.ResName),
ReservedNodeCpus: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.ReservedNodeCpus),
RGID: types.Int64Value(int64(item.RGID)), RGID: types.Int64Value(int64(item.RGID)),
RGName: types.StringValue(item.RGName), RGName: types.StringValue(item.RGName),
SnapSets: flattenSnapSetInList(ctx, &item.SnapSets), SnapSets: flattenSnapSetInList(ctx, &item.SnapSets),
@ -122,28 +127,13 @@ func flattenItemsList(ctx context.Context, computes *compute.ListComputes) []mod
UserManaged: types.BoolValue(item.UserManaged), UserManaged: types.BoolValue(item.UserManaged),
VINSConnected: types.Int64Value(int64(item.VINSConnected)), VINSConnected: types.Int64Value(int64(item.VINSConnected)),
VirtualImageID: types.Int64Value(int64(item.VirtualImageID)), VirtualImageID: types.Int64Value(int64(item.VirtualImageID)),
VGPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.VGPUs),
} }
temp.BootOrder, diags = types.ListValueFrom(ctx, types.StringType, item.BootOrder)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags))
}
temp.Clones, diags = types.ListValueFrom(ctx, types.Int64Type, item.Clones)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags))
}
temp.Tags, diags = types.MapValueFrom(ctx, types.StringType, item.Tags) temp.Tags, diags = types.MapValueFrom(ctx, types.StringType, item.Tags)
if diags != nil { if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags)) tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags))
} }
temp.ReservedNodeCpus, diags = types.ListValueFrom(ctx, types.Int64Type, item.ReservedNodeCpus)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags))
}
temp.VGPUs, diags = types.ListValueFrom(ctx, types.Int64Type, item.VGPUs)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags))
}
res = append(res, temp) res = append(res, temp)
} }

@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-log/tflog"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client" "repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/flattens"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/models" "repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/utilities" "repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/kvmvm/utilities"
) )
@ -72,7 +73,9 @@ func flattenItemsListDeleted(ctx context.Context, computes *compute.ListComputes
Architecture: types.StringValue(item.Architecture), Architecture: types.StringValue(item.Architecture),
AutoStartWithNode: types.BoolValue(item.AutoStart), AutoStartWithNode: types.BoolValue(item.AutoStart),
BootDiskSize: types.Int64Value(int64(item.BootDiskSize)), BootDiskSize: types.Int64Value(int64(item.BootDiskSize)),
BootOrder: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.BootOrder),
CdImageId: types.Int64Value(int64(item.CdImageId)), CdImageId: types.Int64Value(int64(item.CdImageId)),
Clones: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.Clones),
Chipset: types.StringValue(item.Chipset), Chipset: types.StringValue(item.Chipset),
CloneReference: types.Int64Value(int64(item.CloneReference)), CloneReference: types.Int64Value(int64(item.CloneReference)),
ComputeCIID: types.Int64Value(int64(item.ComputeCIID)), ComputeCIID: types.Int64Value(int64(item.ComputeCIID)),
@ -103,10 +106,12 @@ func flattenItemsListDeleted(ctx context.Context, computes *compute.ListComputes
NumaAffinity: types.StringValue(item.NumaAffinity), NumaAffinity: types.StringValue(item.NumaAffinity),
NumaNodeId: types.Int64Value(int64(item.NumaNodeId)), NumaNodeId: types.Int64Value(int64(item.NumaNodeId)),
Pinned: types.BoolValue(item.Pinned), Pinned: types.BoolValue(item.Pinned),
PreferredCPU: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.PreferredCPU),
RAM: types.Int64Value(int64(item.RAM)), RAM: types.Int64Value(int64(item.RAM)),
ReferenceID: types.StringValue(item.ReferenceID), ReferenceID: types.StringValue(item.ReferenceID),
Registered: types.BoolValue(item.Registered), Registered: types.BoolValue(item.Registered),
ResName: types.StringValue(item.ResName), ResName: types.StringValue(item.ResName),
ReservedNodeCpus: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.ReservedNodeCpus),
RGID: types.Int64Value(int64(item.RGID)), RGID: types.Int64Value(int64(item.RGID)),
RGName: types.StringValue(item.RGName), RGName: types.StringValue(item.RGName),
SnapSets: flattenSnapSetInListDeleted(ctx, &item.SnapSets), SnapSets: flattenSnapSetInListDeleted(ctx, &item.SnapSets),
@ -120,28 +125,13 @@ func flattenItemsListDeleted(ctx context.Context, computes *compute.ListComputes
UserManaged: types.BoolValue(item.UserManaged), UserManaged: types.BoolValue(item.UserManaged),
VINSConnected: types.Int64Value(int64(item.VINSConnected)), VINSConnected: types.Int64Value(int64(item.VINSConnected)),
VirtualImageID: types.Int64Value(int64(item.VirtualImageID)), VirtualImageID: types.Int64Value(int64(item.VirtualImageID)),
VGPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.VGPUs),
} }
temp.BootOrder, diags = types.ListValueFrom(ctx, types.StringType, item.BootOrder)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsListDeleted", diags))
}
temp.Clones, diags = types.ListValueFrom(ctx, types.Int64Type, item.Clones)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsListDeleted", diags))
}
temp.Tags, diags = types.MapValueFrom(ctx, types.StringType, item.Tags) temp.Tags, diags = types.MapValueFrom(ctx, types.StringType, item.Tags)
if diags != nil { if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsListDeleted", diags)) tflog.Error(ctx, fmt.Sprint("Error flattenItemsListDeleted", diags))
} }
temp.ReservedNodeCpus, diags = types.ListValueFrom(ctx, types.Int64Type, item.ReservedNodeCpus)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsList", diags))
}
temp.VGPUs, diags = types.ListValueFrom(ctx, types.Int64Type, item.VGPUs)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenItemsListDeleted", diags))
}
res = append(res, temp) res = append(res, temp)
} }

@ -121,6 +121,7 @@ func ComputeResource(ctx context.Context, plan *models.ResourceComputeModel, c *
NumaNodeId: types.Int64Value(int64(recordItemCompute.NumaNodeId)), NumaNodeId: types.Int64Value(int64(recordItemCompute.NumaNodeId)),
OSUsers: flattenResourceOSUsers(ctx, &recordItemCompute.OSUsers), OSUsers: flattenResourceOSUsers(ctx, &recordItemCompute.OSUsers),
Pinned: types.BoolValue(recordItemCompute.Pinned), Pinned: types.BoolValue(recordItemCompute.Pinned),
PreferredCPU: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, recordItemCompute.PreferredCPU),
ReferenceID: types.StringValue(recordItemCompute.ReferenceID), ReferenceID: types.StringValue(recordItemCompute.ReferenceID),
Registered: types.BoolValue(recordItemCompute.Registered), Registered: types.BoolValue(recordItemCompute.Registered),
ResName: types.StringValue(recordItemCompute.ResName), ResName: types.StringValue(recordItemCompute.ResName),

@ -61,6 +61,7 @@ type RecordComputeModel struct {
OSUsers []ItemOSUserModel `tfsdk:"os_users"` OSUsers []ItemOSUserModel `tfsdk:"os_users"`
PCIDevices types.List `tfsdk:"pci_devices"` PCIDevices types.List `tfsdk:"pci_devices"`
Pinned types.Bool `tfsdk:"pinned"` Pinned types.Bool `tfsdk:"pinned"`
PreferredCPU types.List `tfsdk:"preferred_cpu"`
RAM types.Int64 `tfsdk:"ram"` RAM types.Int64 `tfsdk:"ram"`
ReferenceID types.String `tfsdk:"reference_id"` ReferenceID types.String `tfsdk:"reference_id"`
Registered types.Bool `tfsdk:"registered"` Registered types.Bool `tfsdk:"registered"`

@ -73,6 +73,7 @@ type ItemComputeModel struct {
NumaAffinity types.String `tfsdk:"numa_affinity"` NumaAffinity types.String `tfsdk:"numa_affinity"`
NumaNodeId types.Int64 `tfsdk:"numa_node_id"` NumaNodeId types.Int64 `tfsdk:"numa_node_id"`
Pinned types.Bool `tfsdk:"pinned"` Pinned types.Bool `tfsdk:"pinned"`
PreferredCPU types.List `tfsdk:"preferred_cpu"`
RAM types.Int64 `tfsdk:"ram"` RAM types.Int64 `tfsdk:"ram"`
ReferenceID types.String `tfsdk:"reference_id"` ReferenceID types.String `tfsdk:"reference_id"`
Registered types.Bool `tfsdk:"registered"` Registered types.Bool `tfsdk:"registered"`

@ -71,6 +71,7 @@ type ItemListDeletedComputeModel struct {
NumaAffinity types.String `tfsdk:"numa_affinity"` NumaAffinity types.String `tfsdk:"numa_affinity"`
NumaNodeId types.Int64 `tfsdk:"numa_node_id"` NumaNodeId types.Int64 `tfsdk:"numa_node_id"`
Pinned types.Bool `tfsdk:"pinned"` Pinned types.Bool `tfsdk:"pinned"`
PreferredCPU types.List `tfsdk:"preferred_cpu"`
RAM types.Int64 `tfsdk:"ram"` RAM types.Int64 `tfsdk:"ram"`
ReferenceID types.String `tfsdk:"reference_id"` ReferenceID types.String `tfsdk:"reference_id"`
Registered types.Bool `tfsdk:"registered"` Registered types.Bool `tfsdk:"registered"`

@ -38,6 +38,7 @@ type ResourceComputeModel struct {
Rollback types.Object `tfsdk:"rollback"` Rollback types.Object `tfsdk:"rollback"`
CD types.Object `tfsdk:"cd"` CD types.Object `tfsdk:"cd"`
PinToStack types.Bool `tfsdk:"pin_to_stack"` PinToStack types.Bool `tfsdk:"pin_to_stack"`
PreferredCPU types.List `tfsdk:"preferred_cpu"`
Description types.String `tfsdk:"description"` Description types.String `tfsdk:"description"`
CloudInit types.String `tfsdk:"cloud_init"` CloudInit types.String `tfsdk:"cloud_init"`
Enabled types.Bool `tfsdk:"enabled"` Enabled types.Bool `tfsdk:"enabled"`

@ -94,6 +94,11 @@ func (r *resourceCompute) Create(ctx context.Context, req resource.CreateRequest
// because additional settings failure is not critical. If errors were added instead of warnings, terraform // because additional settings failure is not critical. If errors were added instead of warnings, terraform
// framework would mark resource as tainted and delete it, which would be unwanted behaviour. // framework would mark resource as tainted and delete it, which would be unwanted behaviour.
// pin to stack if needed, warnings added to resp.Diagnostics in case of failure.
if plan.PinToStack.ValueBool() {
resp.Diagnostics.Append(utilities.ComputeResourcePinToStack(ctx, &plan, r.client)...)
}
// enable or disable Compute, warnings added to resp.Diagnostics in case of failure. // enable or disable Compute, warnings added to resp.Diagnostics in case of failure.
resp.Diagnostics.Append(utilities.ComputeResourceEnableDisable(ctx, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourceEnableDisable(ctx, &plan, r.client)...)
@ -146,11 +151,6 @@ func (r *resourceCompute) Create(ctx context.Context, req resource.CreateRequest
resp.Diagnostics.Append(utilities.ComputeResourcePCIDevice(ctx, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourcePCIDevice(ctx, &plan, r.client)...)
} }
// pin to stack if needed, warnings added to resp.Diagnostics in case of failure.
if plan.PinToStack.ValueBool() {
resp.Diagnostics.Append(utilities.ComputeResourcePinToStack(ctx, &plan, r.client)...)
}
// set auto start_w_node if pin_to_stack == false // set auto start_w_node if pin_to_stack == false
if !plan.PinToStack.ValueBool() && plan.AutoStartWithNode.ValueBool() { if !plan.PinToStack.ValueBool() && plan.AutoStartWithNode.ValueBool() {
resp.Diagnostics.Append(utilities.ComputeResourceAutoStartWithNode(ctx, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourceAutoStartWithNode(ctx, &plan, r.client)...)
@ -319,20 +319,20 @@ func (r *resourceCompute) Update(ctx context.Context, req resource.UpdateRequest
} }
} }
// Network(s) update if needed // PCI device(s) update if needed
if !plan.Network.Equal(state.Network) && !plan.Network.IsUnknown() { if !plan.PCIDevices.Equal(state.PCIDevices) {
resp.Diagnostics.Append(utilities.ComputeResourceNetworkUpdate(ctx, &state, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourcePCIDeviceUpdate(ctx, &state, &plan, r.client)...)
if resp.Diagnostics.HasError() { if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceCompute: Error update network(s)") tflog.Error(ctx, "Update resourceCompute: Error update PCI device(s) list")
return return
} }
} }
// PCI device(s) update if needed // pin to stack if needed
if !plan.PCIDevices.Equal(state.PCIDevices) { if !plan.PinToStack.Equal(state.PinToStack) {
resp.Diagnostics.Append(utilities.ComputeResourcePCIDeviceUpdate(ctx, &state, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourcePinToStackUpdate(ctx, &plan, r.client)...)
if resp.Diagnostics.HasError() { if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceCompute: Error update PCI device(s) list") tflog.Error(ctx, "Update resourceCompute: Error pin/unpin to stack compute")
return return
} }
} }
@ -340,7 +340,7 @@ func (r *resourceCompute) Update(ctx context.Context, req resource.UpdateRequest
// Compute parameters update if needed // Compute parameters update if needed
if (!plan.Description.IsUnknown() && !plan.Description.Equal(state.Description)) || !plan.Name.Equal(state.Name) || if (!plan.Description.IsUnknown() && !plan.Description.Equal(state.Description)) || !plan.Name.Equal(state.Name) ||
!plan.NumaAffinity.Equal(state.NumaAffinity) || !plan.CPUPin.Equal(state.CPUPin) || !plan.HPBacked.Equal(state.HPBacked) || (!plan.Chipset.IsUnknown() && !plan.Chipset.Equal(state.Chipset)) || !plan.NumaAffinity.Equal(state.NumaAffinity) || !plan.CPUPin.Equal(state.CPUPin) || !plan.HPBacked.Equal(state.HPBacked) || (!plan.Chipset.IsUnknown() && !plan.Chipset.Equal(state.Chipset)) ||
!plan.AutoStartWithNode.Equal(state.AutoStartWithNode) { !plan.AutoStartWithNode.Equal(state.AutoStartWithNode) || (!plan.PreferredCPU.IsUnknown() && !plan.PreferredCPU.Equal(state.Description)) {
resp.Diagnostics.Append(utilities.ComputeResourceComputeUpdate(ctx, &state, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourceComputeUpdate(ctx, &state, &plan, r.client)...)
if resp.Diagnostics.HasError() { if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceCompute: Error update compute parameters") tflog.Error(ctx, "Update resourceCompute: Error update compute parameters")
@ -348,6 +348,15 @@ func (r *resourceCompute) Update(ctx context.Context, req resource.UpdateRequest
} }
} }
// Network(s) update if needed
if !plan.Network.Equal(state.Network) && !plan.Network.IsUnknown() {
resp.Diagnostics.Append(utilities.ComputeResourceNetworkUpdate(ctx, &state, &plan, r.client)...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceCompute: Error update network(s)")
return
}
}
// Affinity label update if needed // Affinity label update if needed
if !plan.AffinityLabel.Equal(state.AffinityLabel) && !plan.AffinityLabel.IsUnknown() { if !plan.AffinityLabel.Equal(state.AffinityLabel) && !plan.AffinityLabel.IsUnknown() {
resp.Diagnostics.Append(utilities.ComputeResourceAffinityLabelUpdate(ctx, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourceAffinityLabelUpdate(ctx, &plan, r.client)...)
@ -429,15 +438,6 @@ func (r *resourceCompute) Update(ctx context.Context, req resource.UpdateRequest
} }
} }
// pin to stack if needed
if !plan.PinToStack.Equal(state.PinToStack) {
resp.Diagnostics.Append(utilities.ComputeResourcePinToStackUpdate(ctx, &plan, r.client)...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceCompute: Error pin/unpin to stack compute")
return
}
}
// compute pause if need // compute pause if need
if !plan.Pause.Equal(state.Pause) && !plan.Pause.IsNull() { if !plan.Pause.Equal(state.Pause) && !plan.Pause.IsNull() {
resp.Diagnostics.Append(utilities.ComputeResourcePauseResumeCompute(ctx, &plan, r.client)...) resp.Diagnostics.Append(utilities.ComputeResourcePauseResumeCompute(ctx, &plan, r.client)...)

@ -631,6 +631,10 @@ func MakeSchemaDataSourceCompute() map[string]schema.Attribute {
"pinned": schema.BoolAttribute{ "pinned": schema.BoolAttribute{
Computed: true, Computed: true,
}, },
"preferred_cpu": schema.ListAttribute{
Computed: true,
ElementType: types.Int64Type,
},
"ram": schema.Int64Attribute{ "ram": schema.Int64Attribute{
Computed: true, Computed: true,
}, },

@ -391,6 +391,10 @@ func MakeSchemaDataSourceComputeList() map[string]schema.Attribute {
"pinned": schema.BoolAttribute{ "pinned": schema.BoolAttribute{
Computed: true, Computed: true,
}, },
"preferred_cpu": schema.ListAttribute{
Computed: true,
ElementType: types.Int64Type,
},
"ram": schema.Int64Attribute{ "ram": schema.Int64Attribute{
Computed: true, Computed: true,
}, },

@ -383,6 +383,10 @@ func MakeSchemaDataSourceComputeListDeleted() map[string]schema.Attribute {
"pinned": schema.BoolAttribute{ "pinned": schema.BoolAttribute{
Computed: true, Computed: true,
}, },
"preferred_cpu": schema.ListAttribute{
Computed: true,
ElementType: types.Int64Type,
},
"ram": schema.Int64Attribute{ "ram": schema.Int64Attribute{
Computed: true, Computed: true,
}, },

@ -390,6 +390,12 @@ func MakeSchemaResourceCompute() map[string]schema.Attribute {
Default: booldefault.StaticBool(false), Default: booldefault.StaticBool(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.", 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": schema.ListAttribute{
Optional: true,
Computed: true,
ElementType: types.Int64Type,
Description: "Recommended isolated CPUs. Field is ignored if compute.cpupin=False or compute.pinned=False",
},
"pci_devices": schema.SetAttribute{ "pci_devices": schema.SetAttribute{
Optional: true, Optional: true,
ElementType: types.Int64Type, ElementType: types.Int64Type,

@ -191,6 +191,15 @@ func CreateResourceCompute(ctx context.Context, plan *models.ResourceComputeMode
createReqX86.HPBacked = true createReqX86.HPBacked = true
} }
if !plan.PreferredCPU.IsUnknown() {
preferredCPUList := plan.PreferredCPU.Elements()
preferredCPU := make([]int64, 0, len(preferredCPUList))
for _, elem := range preferredCPUList {
preferredCPU = append(preferredCPU, elem.(types.Int64).ValueInt64())
}
createReqX86.PreferredCPU = preferredCPU
}
tflog.Info(ctx, fmt.Sprintf("CreateResourceCompute: creating Compute of type KVM VM x86")) tflog.Info(ctx, fmt.Sprintf("CreateResourceCompute: creating Compute of type KVM VM x86"))
id, err := c.CloudAPI().KVMX86().Create(ctx, createReqX86) id, err := c.CloudAPI().KVMX86().Create(ctx, createReqX86)
if err != nil { if err != nil {

@ -47,6 +47,20 @@ func ComputeResourceResize(ctx context.Context, state *models.ResourceComputeMod
resizeReq.CPU = uint64(plan.CPU.ValueInt64()) resizeReq.CPU = uint64(plan.CPU.ValueInt64())
} }
if resizeReq.CPU != 0 {
if !plan.PreferredCPU.IsUnknown() {
preferredCPUList := plan.PreferredCPU.Elements()
preferredCPU := make([]int64, 0, len(preferredCPUList))
for _, elem := range preferredCPUList {
preferredCPU = append(preferredCPU, elem.(types.Int64).ValueInt64())
}
resizeReq.PreferredCPU = preferredCPU
}
if len(state.PreferredCPU.Elements()) != 0 && len(resizeReq.PreferredCPU) == 0 {
resizeReq.PreferredCPU = []int64{-1}
}
}
if !plan.RAM.Equal(state.RAM) { if !plan.RAM.Equal(state.RAM) {
resizeReq.RAM = uint64(plan.RAM.ValueInt64()) resizeReq.RAM = uint64(plan.RAM.ValueInt64())
} }
@ -288,7 +302,7 @@ func ComputeResourceNetworkUpdate(ctx context.Context, state *models.ResourceCom
needStart := false needStart := false
// need stop to attach first network // need stop to attach first network
if len(detachMap) == len(state.Network.Elements()) || (len(state.Network.Elements()) < 1) && len(attachMap) > 0 || hasDPDKnetwork(attachMap) { if len(detachMap) == len(state.Network.Elements()) || (len(state.Network.Elements()) < 1) && len(attachMap) > 0 {
tflog.Info(ctx, "ComputeResourceNetworkUpdate: stop compute", map[string]any{"compute_id": computeId}) tflog.Info(ctx, "ComputeResourceNetworkUpdate: stop compute", map[string]any{"compute_id": computeId})
_, err = c.CloudAPI().Compute().Stop(ctx, compute.StopRequest{ComputeID: computeId}) _, err = c.CloudAPI().Compute().Stop(ctx, compute.StopRequest{ComputeID: computeId})
if err != nil { if err != nil {
@ -336,6 +350,10 @@ func ComputeResourceNetworkUpdate(ctx context.Context, state *models.ResourceCom
} }
} }
if diags.HasError() {
return diags
}
if needStart { if needStart {
diags = ComputeResourceStartStop(ctx, plan, c) diags = ComputeResourceStartStop(ctx, plan, c)
} }
@ -349,15 +367,6 @@ func ComputeResourceNetworkUpdate(ctx context.Context, state *models.ResourceCom
return nil return nil
} }
func hasDPDKnetwork(networkAttachMap []map[string]attr.Value) bool {
for _, elem := range networkAttachMap {
if elem["net_type"].(types.String).ValueString() == "DPDK" {
return true
}
}
return false
}
func ComputeResourceComputeUpdate(ctx context.Context, state *models.ResourceComputeModel, plan *models.ResourceComputeModel, c *client.Client) diag.Diagnostics { func ComputeResourceComputeUpdate(ctx context.Context, state *models.ResourceComputeModel, plan *models.ResourceComputeModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "ComputeResourceComputeUpdate: start update compute parameters", map[string]any{"compute_id": plan.ID.ValueString()}) tflog.Info(ctx, "ComputeResourceComputeUpdate: start update compute parameters", map[string]any{"compute_id": plan.ID.ValueString()})
diags := diag.Diagnostics{} diags := diag.Diagnostics{}
@ -392,11 +401,23 @@ func ComputeResourceComputeUpdate(ctx context.Context, state *models.ResourceCom
req.Chipset = plan.Chipset.ValueString() req.Chipset = plan.Chipset.ValueString()
} }
if !plan.PreferredCPU.IsUnknown() {
preferredCPUList := plan.PreferredCPU.Elements()
preferredCPU := make([]int64, 0, len(preferredCPUList))
for _, elem := range preferredCPUList {
preferredCPU = append(preferredCPU, elem.(types.Int64).ValueInt64())
}
req.PreferredCPU = preferredCPU
}
if len(state.PreferredCPU.Elements()) != 0 && len(req.PreferredCPU) == 0 {
req.PreferredCPU = []int64{-1}
}
// Note bene: numa_affinity, cpu_pin and hp_backed are not allowed to be changed for compute in STARTED tech status. // 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 // If STARTED, we need to stop it before update
var isStopRequred bool var isStopRequred bool
if !plan.NumaAffinity.Equal(state.NumaAffinity) || !plan.CPUPin.Equal(state.CPUPin) || !plan.HPBacked.Equal(state.HPBacked) || !plan.Chipset.Equal(state.Chipset) { if !plan.NumaAffinity.Equal(state.NumaAffinity) || !plan.CPUPin.Equal(state.CPUPin) || !plan.HPBacked.Equal(state.HPBacked) || !plan.Chipset.Equal(state.Chipset) || (len(req.PreferredCPU) != 0) {
isStopRequred = true isStopRequred = true
tflog.Info(ctx, "ComputeResourceComputeUpdate: stop compute", map[string]any{"compute_id": computeId}) tflog.Info(ctx, "ComputeResourceComputeUpdate: stop compute", map[string]any{"compute_id": computeId})
_, err = c.CloudAPI().Compute().Stop(ctx, compute.StopRequest{ComputeID: computeId}) _, err = c.CloudAPI().Compute().Stop(ctx, compute.StopRequest{ComputeID: computeId})

@ -2,6 +2,7 @@ package flattens
import ( import (
"context" "context"
"fmt"
"strconv" "strconv"
"github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/diag"
@ -35,19 +36,25 @@ func NodeDataSource(ctx context.Context, state *models.DataSourceNode, c *client
Consumption: flattenConsumpion(ctx, &recordNode.Consumption), Consumption: flattenConsumpion(ctx, &recordNode.Consumption),
CpuInfo: flattenCpuInfo(ctx, &recordNode.CpuInfo), CpuInfo: flattenCpuInfo(ctx, &recordNode.CpuInfo),
CPUAllocationRatio: types.Int64Value(int64(recordNode.CPUAllocationRatio)), CPUAllocationRatio: types.Int64Value(int64(recordNode.CPUAllocationRatio)),
DPDK: flattenDPDK(ctx, &recordNode.DPDK),
GID: types.Int64Value(int64(recordNode.GID)), GID: types.Int64Value(int64(recordNode.GID)),
ID: types.StringValue(strconv.Itoa(int(recordNode.ID))), ID: types.StringValue(strconv.Itoa(int(recordNode.ID))),
IPAddr: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &recordNode.IPAddr), IPAddr: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &recordNode.IPAddr),
IsolatedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &recordNode.IsolatedCpus), IsolatedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &recordNode.IsolatedCpus),
Name: types.StringValue(recordNode.Name), Name: types.StringValue(recordNode.Name),
NeedReboot: types.BoolValue(recordNode.NeedReboot), NeedReboot: types.BoolValue(recordNode.NeedReboot),
NetworkMode: types.StringValue(recordNode.NetworkMode),
NicInfo: flattenNicInfo(ctx, recordNode.NicInfo), NicInfo: flattenNicInfo(ctx, recordNode.NicInfo),
NumaTopology: flattenNumaTopology(ctx, &recordNode.NumaTopology), NumaTopology: flattenNumaTopology(ctx, &recordNode.NumaTopology),
ReservedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &recordNode.ReservedCPUs), ReservedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &recordNode.ReservedCPUs),
Roles: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &recordNode.Roles), Roles: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &recordNode.Roles),
SriovEnabled: types.BoolValue(recordNode.SriovEnabled), SriovEnabled: types.BoolValue(recordNode.SriovEnabled),
StackId: types.Int64Value(int64(recordNode.StackID)), StackId: types.Int64Value(int64(recordNode.StackID)),
Status: types.StringValue(recordNode.Status), Status: types.StringValue(recordNode.Status),
ToActive: flattenRole(ctx, &recordNode.ToActive),
ToInstalling: flattenRole(ctx, &recordNode.ToInstalling),
ToMaintenance: flattenRole(ctx, &recordNode.ToMaintenance),
ToRestricted: flattenRole(ctx, &recordNode.ToRestricted),
Version: types.StringValue(recordNode.Version), Version: types.StringValue(recordNode.Version),
} }
@ -125,7 +132,7 @@ func flattenVFList(ctx context.Context, vfMap []interface{}) []models.VFList {
for _, item := range vfMap { for _, item := range vfMap {
itemMap := item.(map[string]interface{}) itemMap := item.(map[string]interface{})
vf := models.VFList{ vf := models.VFList{
FnID: types.Int64Value(itemMap["fnId"].(int64)), FnID: types.Int64Value(int64(itemMap["fnId"].(float64))),
PCISlot: types.StringValue(itemMap["pciSlot"].(string)), PCISlot: types.StringValue(itemMap["pciSlot"].(string)),
} }
vfList = append(vfList, vf) vfList = append(vfList, vf)
@ -167,3 +174,37 @@ func flattenNumaTopologyNodes(ctx context.Context, nodes map[string]node.NodeInf
tflog.Info(ctx, "End flattenNumaTopologyNodes") tflog.Info(ctx, "End flattenNumaTopologyNodes")
return res return res
} }
func flattenDPDK(ctx context.Context, dpdk *node.DPDK) *models.DPDKModel {
tflog.Info(ctx, "Start flattenDPDK")
hpMemory, diags := types.MapValueFrom(ctx, types.Int64Type, dpdk.HPMemory)
if diags != nil {
tflog.Error(ctx, fmt.Sprint("Error flattenDPDK", diags))
}
res := models.DPDKModel{
Bridges: &models.Bridges{
Backplane1: &models.Backplane1{
Interfaces: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &dpdk.Bridges.Backplane1.Interfaces),
NumaNode: types.Int64Value(int64(dpdk.Bridges.Backplane1.NumaNode)),
},
},
HPMemory: hpMemory,
PMDCPU: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &dpdk.PMDCPU),
}
tflog.Info(ctx, "End flattenDPDK")
return &res
}
func flattenRole(ctx context.Context, role *node.Role) *models.Role {
tflog.Info(ctx, "Start flattenRole")
res := models.Role{
Actor: types.StringValue(role.Actor),
Reason: types.StringValue(role.Reason),
Time: types.Int64Value(int64(role.Time)),
}
tflog.Info(ctx, "End flattenRole")
return &res
}

@ -57,44 +57,46 @@ func flattenItemsList(ctx context.Context, recordList *node.ListNodes) []models.
for _, item := range recordList.Data { for _, item := range recordList.Data {
temp := models.ItemNodeModel{ temp := models.ItemNodeModel{
AdditionalPkgs: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.AdditionalPkgs), AdditionalPkgs: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.AdditionalPkgs),
CpuInfo: flattenCpuInfo(ctx, &item.CpuInfo), CpuInfo: flattenCpuInfo(ctx, &item.CpuInfo),
Description: types.StringValue(item.Description), Description: types.StringValue(item.Description),
GID: types.Int64Value(int64(item.GID)), DPDK: flattenDPDK(ctx, &item.DPDK),
GUID: types.StringValue(item.GUID), GID: types.Int64Value(int64(item.GID)),
HostKey: types.StringValue(item.HostKey), GUID: types.StringValue(item.GUID),
IPAddr: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.IPAddr), HostKey: types.StringValue(item.HostKey),
IsolatedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.IsolatedCpus), IPAddr: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.IPAddr),
LastCheck: types.Int64Value(int64(item.LastCheck)), IsolatedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.IsolatedCpus),
MachineGUID: types.StringValue(item.MachineGUID), LastCheck: types.Int64Value(int64(item.LastCheck)),
MainboardSN: types.StringValue(item.MainboardSN), MachineGUID: types.StringValue(item.MachineGUID),
Memory: types.Int64Value(int64(item.Memory)), MainboardSN: types.StringValue(item.MainboardSN),
Milestones: types.Int64Value(int64(item.Milestones)), Memory: types.Int64Value(int64(item.Memory)),
Model: types.StringValue(item.Model), Milestones: types.Int64Value(int64(item.Milestones)),
Name: types.StringValue(item.Name), Model: types.StringValue(item.Model),
NeedReboot: types.BoolValue(item.NeedReboot), Name: types.StringValue(item.Name),
NetAddr: flattenNetAddr(ctx, item.NetAddr), NeedReboot: types.BoolValue(item.NeedReboot),
NetworkMode: types.StringValue(item.NetworkMode), NetAddr: flattenNetAddr(ctx, item.NetAddr),
NicInfo: flattenNicInfo(ctx, item.NicInfo), NetworkMode: types.StringValue(item.NetworkMode),
NodeUUID: types.StringValue(item.NodeUUID), NicInfo: flattenNicInfo(ctx, item.NicInfo),
NodeID: types.Int64Value(int64(item.ID)), NodeUUID: types.StringValue(item.NodeUUID),
NumaTopology: flattenNumaTopology(ctx, &item.NumaTopology), NodeID: types.Int64Value(int64(item.ID)),
PeerBackup: types.Int64Value(int64(item.PeerBackup)), NumaTopology: flattenNumaTopology(ctx, &item.NumaTopology),
PeerLog: types.Int64Value(int64(item.PeerLog)), PeerBackup: types.Int64Value(int64(item.PeerBackup)),
PeerStats: types.Int64Value(int64(item.PeerStats)), PeerLog: types.Int64Value(int64(item.PeerLog)),
Pgpus: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.Pgpus), PeerStats: types.Int64Value(int64(item.PeerStats)),
PublicKeys: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.PublicKeys), Pgpus: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.Pgpus),
Release: types.StringValue(item.Release), PublicKeys: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.PublicKeys),
ReservedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.ReservedCPUs), Release: types.StringValue(item.Release),
Roles: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.Roles), ReservedCPUs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.ReservedCPUs),
SEPs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.Seps), Roles: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.Roles),
SerialNum: types.StringValue(item.SerialNum), SEPs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, &item.Seps),
SriovEnabled: types.BoolValue(item.SriovEnabled), SerialNum: types.StringValue(item.SerialNum),
StackId: types.Int64Value(int64(item.StackID)), SriovEnabled: types.BoolValue(item.SriovEnabled),
Status: types.StringValue(item.Status), StackId: types.Int64Value(int64(item.StackID)),
Tags: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.Tags), Status: types.StringValue(item.Status),
Type: types.StringValue(item.Type), Tags: flattens.FlattenSimpleTypeToList(ctx, types.StringType, &item.Tags),
Version: types.StringValue(item.Version), Type: types.StringValue(item.Type),
UEFIFirmwareFile: types.StringValue(item.UEFIFirmwareFile),
Version: types.StringValue(item.Version),
} }
res = append(res, temp) res = append(res, temp)
} }

@ -14,12 +14,14 @@ type DataSourceNode struct {
Consumption *ConsumptionModel `tfsdk:"consumption"` Consumption *ConsumptionModel `tfsdk:"consumption"`
CpuInfo *CpuInfoModel `tfsdk:"cpu_info"` CpuInfo *CpuInfoModel `tfsdk:"cpu_info"`
CPUAllocationRatio types.Int64 `tfsdk:"cpu_allocation_ratio"` CPUAllocationRatio types.Int64 `tfsdk:"cpu_allocation_ratio"`
DPDK *DPDKModel `tfsdk:"dpdk"`
GID types.Int64 `tfsdk:"gid"` GID types.Int64 `tfsdk:"gid"`
ID types.String `tfsdk:"id"` ID types.String `tfsdk:"id"`
IPAddr types.List `tfsdk:"ipaddr"` IPAddr types.List `tfsdk:"ipaddr"`
IsolatedCPUs types.List `tfsdk:"isolated_cpus"` IsolatedCPUs types.List `tfsdk:"isolated_cpus"`
Name types.String `tfsdk:"name"` Name types.String `tfsdk:"name"`
NeedReboot types.Bool `tfsdk:"need_reboot"` NeedReboot types.Bool `tfsdk:"need_reboot"`
NetworkMode types.String `tfsdk:"network_mode"`
NicInfo []NicInfoModel `tfsdk:"nic_info"` NicInfo []NicInfoModel `tfsdk:"nic_info"`
NumaTopology *NumaTopologyModel `tfsdk:"numa_topology"` NumaTopology *NumaTopologyModel `tfsdk:"numa_topology"`
ReservedCPUs types.List `tfsdk:"reserved_cpus"` ReservedCPUs types.List `tfsdk:"reserved_cpus"`
@ -27,6 +29,10 @@ type DataSourceNode struct {
SriovEnabled types.Bool `tfsdk:"sriov_enabled"` SriovEnabled types.Bool `tfsdk:"sriov_enabled"`
StackId types.Int64 `tfsdk:"stack_id"` StackId types.Int64 `tfsdk:"stack_id"`
Status types.String `tfsdk:"status"` Status types.String `tfsdk:"status"`
ToActive *Role `tfsdk:"to_active"`
ToInstalling *Role `tfsdk:"to_installing"`
ToMaintenance *Role `tfsdk:"to_maintenance"`
ToRestricted *Role `tfsdk:"to_restricted"`
Version types.String `tfsdk:"version"` Version types.String `tfsdk:"version"`
} }
@ -85,3 +91,24 @@ type NumaTopologyNodesMemory struct {
TwoM types.Int64 `tfsdk:"two_m"` TwoM types.Int64 `tfsdk:"two_m"`
Total types.Int64 `tfsdk:"total"` Total types.Int64 `tfsdk:"total"`
} }
type DPDKModel struct {
Bridges *Bridges `tfsdk:"bridges"`
HPMemory types.Map `tfsdk:"hp_memory"`
PMDCPU types.List `tfsdk:"pmd_cpu"`
}
type Bridges struct {
Backplane1 *Backplane1 `tfsdk:"backplane1"`
}
type Backplane1 struct {
Interfaces types.List `tfsdk:"interfaces"`
NumaNode types.Int64 `tfsdk:"numa_node"`
}
type Role struct {
Actor types.String `tfsdk:"actor"`
Reason types.String `tfsdk:"reason"`
Time types.Int64 `tfsdk:"time"`
}

@ -25,44 +25,46 @@ type DataSourceNodeList struct {
} }
type ItemNodeModel struct { type ItemNodeModel struct {
AdditionalPkgs types.List `tfsdk:"additional_pkgs"` AdditionalPkgs types.List `tfsdk:"additional_pkgs"`
CpuInfo *CpuInfoModel `tfsdk:"cpu_info"` CpuInfo *CpuInfoModel `tfsdk:"cpu_info"`
Description types.String `tfsdk:"description"` Description types.String `tfsdk:"description"`
GID types.Int64 `tfsdk:"gid"` DPDK *DPDKModel `tfsdk:"dpdk"`
GUID types.String `tfsdk:"guid"` GID types.Int64 `tfsdk:"gid"`
HostKey types.String `tfsdk:"hostkey"` GUID types.String `tfsdk:"guid"`
IPAddr types.List `tfsdk:"ipaddr"` HostKey types.String `tfsdk:"hostkey"`
IsolatedCPUs types.List `tfsdk:"isolated_cpus"` IPAddr types.List `tfsdk:"ipaddr"`
LastCheck types.Int64 `tfsdk:"lastcheck"` IsolatedCPUs types.List `tfsdk:"isolated_cpus"`
MachineGUID types.String `tfsdk:"machine_guid"` LastCheck types.Int64 `tfsdk:"lastcheck"`
MainboardSN types.String `tfsdk:"mainboard_sn"` MachineGUID types.String `tfsdk:"machine_guid"`
Memory types.Int64 `tfsdk:"memory"` MainboardSN types.String `tfsdk:"mainboard_sn"`
Milestones types.Int64 `tfsdk:"milestones"` Memory types.Int64 `tfsdk:"memory"`
Model types.String `tfsdk:"model"` Milestones types.Int64 `tfsdk:"milestones"`
Name types.String `tfsdk:"name"` Model types.String `tfsdk:"model"`
NeedReboot types.Bool `tfsdk:"need_reboot"` Name types.String `tfsdk:"name"`
NetAddr []NetAddrModel `tfsdk:"net_addr"` NeedReboot types.Bool `tfsdk:"need_reboot"`
NetworkMode types.String `tfsdk:"network_mode"` NetAddr []NetAddrModel `tfsdk:"net_addr"`
NicInfo []NicInfoModel `tfsdk:"nic_info"` NetworkMode types.String `tfsdk:"network_mode"`
NodeUUID types.String `tfsdk:"node_uuid"` NicInfo []NicInfoModel `tfsdk:"nic_info"`
NodeID types.Int64 `tfsdk:"node_id"` NodeUUID types.String `tfsdk:"node_uuid"`
NumaTopology *NumaTopologyModel `tfsdk:"numa_topology"` NodeID types.Int64 `tfsdk:"node_id"`
PeerBackup types.Int64 `tfsdk:"peer_backup"` NumaTopology *NumaTopologyModel `tfsdk:"numa_topology"`
PeerLog types.Int64 `tfsdk:"peer_log"` PeerBackup types.Int64 `tfsdk:"peer_backup"`
PeerStats types.Int64 `tfsdk:"peer_stats"` PeerLog types.Int64 `tfsdk:"peer_log"`
Pgpus types.List `tfsdk:"pgpus"` PeerStats types.Int64 `tfsdk:"peer_stats"`
PublicKeys types.List `tfsdk:"public_keys"` Pgpus types.List `tfsdk:"pgpus"`
Release types.String `tfsdk:"release"` PublicKeys types.List `tfsdk:"public_keys"`
ReservedCPUs types.List `tfsdk:"reserved_cpus"` Release types.String `tfsdk:"release"`
Roles types.List `tfsdk:"roles"` ReservedCPUs types.List `tfsdk:"reserved_cpus"`
SEPs types.List `tfsdk:"seps"` Roles types.List `tfsdk:"roles"`
SerialNum types.String `tfsdk:"serial_num"` SEPs types.List `tfsdk:"seps"`
SriovEnabled types.Bool `tfsdk:"sriov_enabled"` SerialNum types.String `tfsdk:"serial_num"`
StackId types.Int64 `tfsdk:"stack_id"` SriovEnabled types.Bool `tfsdk:"sriov_enabled"`
Status types.String `tfsdk:"status"` StackId types.Int64 `tfsdk:"stack_id"`
Tags types.List `tfsdk:"tags"` Status types.String `tfsdk:"status"`
Type types.String `tfsdk:"type"` Tags types.List `tfsdk:"tags"`
Version types.String `tfsdk:"version"` Type types.String `tfsdk:"type"`
UEFIFirmwareFile types.String `tfsdk:"uefi_firmware_file"`
Version types.String `tfsdk:"version"`
} }
type NetAddrModel struct { type NetAddrModel struct {

@ -76,6 +76,36 @@ func MakeSchemaDataSourceNode() map[string]schema.Attribute {
"cpu_allocation_ratio": schema.Int64Attribute{ "cpu_allocation_ratio": schema.Int64Attribute{
Computed: true, Computed: true,
}, },
"dpdk": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"bridges": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"backplane1": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"interfaces": schema.ListAttribute{
Computed: true,
ElementType: types.StringType,
},
"numa_node": schema.Int64Attribute{
Computed: true,
},
},
},
},
},
"hp_memory": schema.MapAttribute{
Computed: true,
ElementType: types.Int64Type,
},
"pmd_cpu": schema.ListAttribute{
Computed: true,
ElementType: types.Int64Type,
},
},
},
"gid": schema.Int64Attribute{ "gid": schema.Int64Attribute{
Computed: true, Computed: true,
}, },
@ -88,7 +118,7 @@ func MakeSchemaDataSourceNode() map[string]schema.Attribute {
}, },
"isolated_cpus": schema.ListAttribute{ "isolated_cpus": schema.ListAttribute{
Computed: true, Computed: true,
ElementType: types.StringType, ElementType: types.Int64Type,
}, },
"name": schema.StringAttribute{ "name": schema.StringAttribute{
Computed: true, Computed: true,
@ -96,6 +126,9 @@ func MakeSchemaDataSourceNode() map[string]schema.Attribute {
"need_reboot": schema.BoolAttribute{ "need_reboot": schema.BoolAttribute{
Computed: true, Computed: true,
}, },
"network_mode": schema.StringAttribute{
Computed: true,
},
"nic_info": schema.ListNestedAttribute{ "nic_info": schema.ListNestedAttribute{
Computed: true, Computed: true,
NestedObject: schema.NestedAttributeObject{ NestedObject: schema.NestedAttributeObject{
@ -169,7 +202,7 @@ func MakeSchemaDataSourceNode() map[string]schema.Attribute {
}, },
"reserved_cpus": schema.ListAttribute{ "reserved_cpus": schema.ListAttribute{
Computed: true, Computed: true,
ElementType: types.StringType, ElementType: types.Int64Type,
}, },
"roles": schema.ListAttribute{ "roles": schema.ListAttribute{
Computed: true, Computed: true,
@ -184,6 +217,62 @@ func MakeSchemaDataSourceNode() map[string]schema.Attribute {
"status": schema.StringAttribute{ "status": schema.StringAttribute{
Computed: true, Computed: true,
}, },
"to_active": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"actor": schema.StringAttribute{
Computed: true,
},
"reason": schema.StringAttribute{
Computed: true,
},
"time": schema.Int64Attribute{
Computed: true,
},
},
},
"to_installing": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"actor": schema.StringAttribute{
Computed: true,
},
"reason": schema.StringAttribute{
Computed: true,
},
"time": schema.Int64Attribute{
Computed: true,
},
},
},
"to_maintenance": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"actor": schema.StringAttribute{
Computed: true,
},
"reason": schema.StringAttribute{
Computed: true,
},
"time": schema.Int64Attribute{
Computed: true,
},
},
},
"to_restricted": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"actor": schema.StringAttribute{
Computed: true,
},
"reason": schema.StringAttribute{
Computed: true,
},
"time": schema.Int64Attribute{
Computed: true,
},
},
},
"version": schema.StringAttribute{ "version": schema.StringAttribute{
Computed: true, Computed: true,
}, },

@ -75,6 +75,36 @@ func MakeSchemaDataSourceNodeList() map[string]schema.Attribute {
"description": schema.StringAttribute{ "description": schema.StringAttribute{
Computed: true, Computed: true,
}, },
"dpdk": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"bridges": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"backplane1": schema.SingleNestedAttribute{
Computed: true,
Attributes: map[string]schema.Attribute{
"interfaces": schema.ListAttribute{
Computed: true,
ElementType: types.StringType,
},
"numa_node": schema.Int64Attribute{
Computed: true,
},
},
},
},
},
"hp_memory": schema.MapAttribute{
Computed: true,
ElementType: types.Int64Type,
},
"pmd_cpu": schema.ListAttribute{
Computed: true,
ElementType: types.Int64Type,
},
},
},
"gid": schema.Int64Attribute{ "gid": schema.Int64Attribute{
Computed: true, Computed: true,
}, },
@ -93,7 +123,7 @@ func MakeSchemaDataSourceNodeList() map[string]schema.Attribute {
}, },
"isolated_cpus": schema.ListAttribute{ "isolated_cpus": schema.ListAttribute{
Computed: true, Computed: true,
ElementType: types.StringType, ElementType: types.Int64Type,
}, },
"lastcheck": schema.Int64Attribute{ "lastcheck": schema.Int64Attribute{
Computed: true, Computed: true,
@ -245,7 +275,7 @@ func MakeSchemaDataSourceNodeList() map[string]schema.Attribute {
}, },
"reserved_cpus": schema.ListAttribute{ "reserved_cpus": schema.ListAttribute{
Computed: true, Computed: true,
ElementType: types.StringType, ElementType: types.Int64Type,
}, },
"roles": schema.ListAttribute{ "roles": schema.ListAttribute{
Computed: true, Computed: true,
@ -274,6 +304,9 @@ func MakeSchemaDataSourceNodeList() map[string]schema.Attribute {
"type": schema.StringAttribute{ "type": schema.StringAttribute{
Computed: true, Computed: true,
}, },
"uefi_firmware_file": schema.StringAttribute{
Computed: true,
},
"version": schema.StringAttribute{ "version": schema.StringAttribute{
Computed: true, Computed: true,
}, },

@ -337,10 +337,11 @@ func flattenReservations(ctx context.Context, items *vins.ListReservations) type
tempSlice := make([]types.Object, 0, len(*items)) tempSlice := make([]types.Object, 0, len(*items))
for _, item := range *items { for _, item := range *items {
temp := models.ReservationModel{ temp := models.ReservationModel{
IP: types.StringValue(item.IP), AccountID: types.Int64Value(int64(item.AccountID)),
MAC: types.StringValue(item.MAC), IP: types.StringValue(item.IP),
Type: types.StringValue(item.Type), MAC: types.StringValue(item.MAC),
VMID: types.Int64Value(int64(item.VMID)), Type: types.StringValue(item.Type),
VMID: types.Int64Value(int64(item.VMID)),
} }
obj, diags := types.ObjectValueFrom(ctx, models.ItemReservations, temp) obj, diags := types.ObjectValueFrom(ctx, models.ItemReservations, temp)

@ -175,10 +175,11 @@ type RecordDHCPConfigModel struct {
} }
type ReservationModel struct { type ReservationModel struct {
IP types.String `tfsdk:"ip"` AccountID types.Int64 `tfsdk:"account_id""`
MAC types.String `tfsdk:"mac"` IP types.String `tfsdk:"ip"`
Type types.String `tfsdk:"type"` MAC types.String `tfsdk:"mac"`
VMID types.Int64 `tfsdk:"vm_id"` Type types.String `tfsdk:"type"`
VMID types.Int64 `tfsdk:"vm_id"`
} }
type RecordNATModel struct { type RecordNATModel struct {
@ -375,10 +376,11 @@ var ItemDHCPConfig = map[string]attr.Type{
} }
var ItemReservations = map[string]attr.Type{ var ItemReservations = map[string]attr.Type{
"ip": types.StringType, "account_id": types.Int64Type,
"mac": types.StringType, "ip": types.StringType,
"type": types.StringType, "mac": types.StringType,
"vm_id": types.Int64Type, "type": types.StringType,
"vm_id": types.Int64Type,
} }
var ItemGW = map[string]attr.Type{ var ItemGW = map[string]attr.Type{

@ -333,6 +333,9 @@ func MakeSchemaDataSourceVINS() map[string]schema.Attribute {
Computed: true, Computed: true,
NestedObject: schema.NestedAttributeObject{ NestedObject: schema.NestedAttributeObject{
Attributes: map[string]schema.Attribute{ Attributes: map[string]schema.Attribute{
"account_id": schema.Int64Attribute{
Computed: true,
},
"ip": schema.StringAttribute{ "ip": schema.StringAttribute{
Computed: true, Computed: true,
}, },

@ -229,7 +229,7 @@ resource "dynamix_kvmvm" "comp" {
#тип сети #тип сети
#обязательный параметр #обязательный параметр
#тип - строка #тип - строка
#возможные значения - "VINS", "EXTNET", "VFNIC", "DPDK" #возможные значения - "VINS", "EXTNET", "VFNIC", "DPDK" (при выборе типа DPDK, необходимо указать hp_backed = true)
net_type = "VINS" net_type = "VINS"
#id сети #id сети
@ -345,6 +345,12 @@ resource "dynamix_kvmvm" "comp" {
cdrom_id = 344 cdrom_id = 344
} }
#список ядер для использования в механизме vcpupinning. Количество указанных ядер должно быть равно количеству виртуальных процессоров ВМ
#игнорируется если cpu_pin=false или pin_to_stack=false
#опциональный параметр
#тип - массив целых чисел
preferred_cpu = [1234, 456]
#добавить компьют на стэк #добавить компьют на стэк
#опциональный параметр #опциональный параметр
#тип - булев #тип - булев

@ -0,0 +1,7 @@
DYNAMIX Terraform Provider версии 1.2.x позволяет управлять облачными ресурсами на платформе DYNAMIX версии 4.2.x и выше посредством Terraform.
С помощью данного провайдера можно организовать программное управление вычислительными ресурсами (_compute_), ресурсными группами, сетевыми и дисковыми ресурсами, образами дисков, кластером, а также другими параметрами облачной платформы DYNAMIX.
Если вы хорошо знакомы с инструментом Terraform и хотите максимально быстро начать использовать платформу DYNAMIX в своих Terraform-проектах, то можете сразу перейти к разделу [Пример работы](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/02.-Пример-работы.md), где приведён подробно откомментированный пример работы с основными видами ресурсов платформы. Если у вас всё же возникнут вопросы по облачной платформе DYNAMIX и порядку авторизации в ней, то обратитесь к главе [«Обзор облачной платформы DYNAMIX»](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/03.-Обзор-облачной-платформы-DYNAMIX.md). Также может оказаться полезной глава [«Инициализация Terraform провайдера DYNAMIX»](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md).
Если вы только начинаете использовать инструмент Terraform и облачную платформу DYNAMIX, то рекомендуем вам начать с главы [«Обзор облачной платформы DYNAMIX»](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/03.-Обзор-облачной-платформы-DYNAMIX.md), после чего изучить главы [«_Data source_ функции Terraform провайдера DYNAMIX»](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.-Data-source-функции-Terraform-провайдера-DYNAMIX.md) и [«_Resource_ функции Terraform провайдера DYNAMIX»](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/07.-Resource-функции-Terraform-провайдера-dynamix.md). Примеры, приведенные в этих разделах, помогут вам быстро освоить базовые приёмы работы с инструментом Terraform и провайдером DYNAMIX.

@ -0,0 +1,92 @@
Данный раздел предназначен для тех, кто хорошо знаком с инструментом Terraform, а также имеет представление об основных понятиях и способах авторизации в облачной платформе DYNAMIX.
Ниже приведён подробно откомментированный пример, показывающий, как создать виртуальный сервер (aka _compute_ на базе системы виртуализации KVM x86) в облачной платформе DYNAMIX с помощью соответствующего Terraform провайдера. Сервер будет создан в новой ресурсной группе, к нему будет подключён один предварительно созданный диск, у сервера будет прямое сетевое подключение во внешнюю сеть.
Идентификатор образа операционной системы, на базе которого должен быть создан виртуальный сервер, считывается из облачной платформы с помощью _data source_ функции `dynamix_image`.
Далее мы с помощью _resource_ функции `dynamix_resgroup` создаём новую ресурсную группу, в которую будет помещён этот виртуальный сервер. В качестве альтернативы, для получения информации об уже имеющейся ресурсной группе можно использовать _data source_ функцию с таким же названием.
Затем с помощью _resource_ функции `dynamix_disk` создаётся диск, который будет подключён к виртуальному серверу в качестве дополнительного. Помимо этого дополнительного диска у сервера будет также и загрузочный диск, на который в процессе создания сервера клонируется выбранный образ операционной системы.
Виртуальный сервер - в данном примере на базе системы виртуализации KVM x86 - создаётся посредством _resource_ функции `dynamix_kvmvm`.
Только авторизованные в контроллере облачной платформы пользователи могут управлять облачными ресурсами. Подробнее о способах авторизации см. [Обзор облачной платформы DYNAMIX](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/03.-Обзор-облачной-платформы-DYNAMIX.md).
```terraform
# 1. Initialize DYNAMIX plugin and connection to DYNAMIX cloud controller
# NOTE: in this example credentials are expected to come from
# DYNAMIX_APP_ID and DYNAMIX_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 "dynamix" {
authenticator = "decs3o"
controller_url = "<<DYNAMIX_CONTROLLER_URL>>" # specify correct DYNAMIX controller URL, e.g. "https://ds1.digitalenergy.online"
oauth2_url = "<<DYNAMIX_OAUTH2_URL>>" # specify corresponding DYNAMIX OAUTH2 URL, e.g. "https://sso.digitalenergy.online"
app_id = "<<DYNAMIX_APP_ID>>" # application secret to access DYNAMIX cloud API in 'decs3o' and 'bvs' authentication mode, e.g. "ewqfrvea7s890avw804389qwguf234h0otfi3w4eiu"
app_secret = "<<DYNAMIX_APP_SECRET>>" # application ID to access DYNAMIX 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 "dynamix_account" "my_account" {
account_id = <ACCOUNT_ID> # Specify account ID
}
# 3. Load OS image to use for VM deployment
data "dynamix_image" "os_image" {
image_id = <OS_IMAGE_ID> # Specify OS image id, e.g. 1234. You can get accessible image id from data source "dynamix_image_list"
}
# 4. Create new Resource Group in the selected account, new VM will be created in this RG
resource "dynamix_resgroup" "my_rg" {
name = "NewRgByTF"
account_id = data.dynamix_account.my_account.account_id
gid = <GRID_ID> # 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 "dynamix_disk" "extra_disk" {
disk_name = "extra-disk-for-vm"
account_id = data.dynamix_account.my_account.account_id
gid = <GRID_ID> # Grid (platform) ID
size_max = 5 # disk size in GB
type = "D" # disk type, always use "D" for extra disks
sep_id = data.dynamix_image.os_image.sep_id # use the same SEP ID as the OS image
pool = "<<DATA_POOL_NAME>>" # consult your DYNAMIX 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 "dynamix_kvmvm" "my_new_vm" {
name = "tf-managed-vm"
driver = "KVM_X86" # Compute virtualization driver
rg_id = dynamix_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.dynamix_image.os_image.image_id
description = "Test KVM VM Compute managed by Terraform"
extra_disks = [ dynamix_disk.extra_disk.id ]
network {
net_type = "EXTNET"
net_id = <<EXT_NET_ID>> # specify external network ID to use, consult your DYNAMIX platform admin for correct IDs
# ip_address = "<<SOME VALID AND FREE IP ADDRESS>>" # you may optionally request a specific IP address
}
}
```

@ -0,0 +1,32 @@
## Основные понятия
Ниже перечислены основные понятия с указанием соответствующих им аргументов в Terraform провайдере DYNAMIX.
1. **Контроллер облачной платформы DYNAMIX** управляющее приложение, которое обеспечивает авторизацию пользователей и оркестрацию облачных ресурсов.
- Адрес контроллера задается в обязательном аргументе `controller_url` на стадии инициализации Terraform провайдера DYNAMIX. Например, `controller_url= "https://ds1.digitalenergy.online"`
2. **Авторизационный провайдер** приложение, работающее по протоколу Oauth2, предназначенное для выпуска и валидации токенов доступа к контроллеру облачной платформы в соответствующих режимах авторизации. Все действия в платформе должны выполняться авторизованными пользователями, и авторизационное приложение позволяет получить токен доступа, действующий некоторое ограниченное время, наличие которого подтверждает успешную авторизацию.
- Адрес авторизационного провайдера задается в аргументе`oauth2_url` на стадии инициализации Terraform провайдера DYNAMIX. Например `oauth2_url= "https://sso.digitalenergy.online"`
3. **Подписчик** (_account_) сущность, которая используется для группирования облачных ресурсов по принадлежности к определенному клиенту для целей учета потребления и биллинга.
- Имя подписчика задается аргументом `account_name` при вызове _resource_ или _data_ функций провайдера. Альтернативной является задание численного идентификатора подписчика в аргументе `account_id`.
4. **Пользователь** (_user_) пользователь облачной инфраструктуры, представленный учетной записью. Чтобы получить возможность управлять облачными ресурсами (например, создавать виртуальные серверы или дискт) пользователь должен быть ассоциирован с одним или несколькими подписчиками и иметь соответствующие права, определяемые ролевой моделью, принятой в облачной платформе DYNAMIX. Для доступа к платформе пользователь должен авторизоваться одним из способов, описанных ниже в разделе «Способы авторизации».
5. **Ресурсная группа** (_resource group_) способ группирования вычислительных ресурсов (например, виртуальных серверов по функциональному признаку или принадлежности к одному и тому же проекту). Ресурсную группу можно рассматривать как небольшой персональный дата-центр, в котором размещаются один или несколько серверов и виртуальных сетевых сегментов. Ресурсная группа идентифицируется по комбинации параметров `account` и `name`. Обратите внимание, что имя имя ресурсной группы уникально только в рамках одного и того же `account`.
6. **Вычислительный ресурс** (_compute_) - универсальная абстракция пользовательского сервера в платформе DYNAMIX. Благодаря использованию такой абстракции можно, например, создать одну виртуальную машину на базе KVM Intel x86, а другую - на базе KVM IBM Power, а потом управлять ими - изменять количество CPU/RAM, подключать/отключать диски и т.п. - одинаковым образом, не задумываясь об их архитектурных различиях. В то же время, так как типизация ресурсов в Terraform не поддерживает наследование, различные типы вычислительных ресурсов, доступных на платформе DYNAMIX и абстрагируемых через понятие унифицированный _compute_, в Terraform представлены разными типами (напр., свой тип для виртуальных серверов на базе KVM и свой тип для перспективных x86-совместимых bare metal серверов).
7. **Ресурс хранения** (_disk_) - универсальная абстракция дискового ресурса в платформе DYNAMIX. Платформа поддерживает различные типы систем хранения данных, но при этом управление созданными на разных системах хранения дисками осуществляется посредством унифицированного набора действий, например, "подключить диск к _compute_", "увеличить размер диска", "сделать мгновенный снимок диска", "настроить параметры быстродействия диска".
8. **Виртуальный сервер** экземпляр _compute_, в основе технической реализации которого лежит виртуальная машина, работающая в облаке и доступна по сети. Виртуальный сервер характеризуется количеством выделенных ему 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_) - сетевой сегмент, через который платформа DYNAMIX взаимодействует с внешними по отношению к ней сетевыми ресурсами. Например, в случае с публичным облаком на базе DYNAMIX в качестве внешней сети выступает сеть Интернет. В отличие от ViNS платформа не управляет внешней сетью, а лишь пользуется её ресурсами. В платформе может быть настроено несколько внешних сетей с различными диапазонами IP адресов, и существует механизм управления доступом пользователей к внешним сетям.
11. Сетевой доступ к экземпляру _compute_ (виртуальному серверу) реализуется через его подключение к ViNS и/или прямое подключение во внешнюю сеть (External Network). Один и тот же экземпляр _compute_ может одновременно иметь несколько подключений в разные ViNS и/или различные внешние сети.
## Способы авторизации
Облачная платформа DYNAMIX поддерживает три базовых типа авторизации:
1. С использованием авторизационного провайдера, работающего по протоколу _Oauth2_. Данный способ является предпочтительным, так как обеспечивает бОльшую гибкость и безопасность. Для авторизации в этом режиме при инициализации Terrafrom провайдера DYNAMIX необходимо указать параметры `oauth2_url` и `controller_url`, а также предоставить одно из нижеперечисленного:
- Комбинация Application ID & Application secret, соответствующих пользователю, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии. В процессе проверки предоставленных Application ID & Application secret модуль получает от авторизационного провайдера токен (JSON Web Token, JWT), который затем используется для доступа к указанному контроллеру DYNAMIX. Для авторизации по данному варианту, при инициализации Terraform провайдера DYNAMIX следует установить аргумент `authenticator=decs3o` и задать аргументы `app_id` и `app_secret` (или определить соответствующие переменные окружения `DYNAMIX_APP_ID` и `DYNAMIX_APP_SECRET`).
- JSON Web Token заранее полученный от авторизационного провайдера токен доступа, ассоциированный с определенным пользователем, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии. Для авторизации по данному варианту, при инициализации Terraform провайдера DYNAMIX следует установить аргумент `authenticator=jwt` и задать аргумент `jwt` (или определить переменную окружения `DYNAMIX_JWT`).
2. С использованием комбинации _имя пользователя : пароль_. Данный режим не использует внешних авторизационных провайдеров и подразумевает, что пользователь с такой комбинацией зарегистрирован непосредственно на указанном в параметре `controller_url` контроллере облачной платформы DYNAMIX.
- Чтобы провайдер авторизовался по данному варианту, при его инициализации следует установить аргумент `authenticator=legacy` и задать аргументы `user` и `password` (или определить соответствующие переменные окружения `DYNAMIX_USER` и `DYNAMIX_PASSWORD`).
3. С использованием авторизационного провайдера, работающего по протоколу _Oauth2_oidc_. Для авторизации в этом режиме при инициализации Terrafrom провайдера DYNAMIX необходимо указать параметры `oauth2_url` и `controller_url`, а также Application ID & Application secret, _имя пользователя и пароль_, соответствующих пользователю, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии, и _имя домена_. В процессе проверки предоставленных Application ID & Application secret и пары _имя пользователя-пароль_ модуль получает от авторизационного провайдера токен (JSON Web Token, JWT), который затем используется для доступа к указанному контроллеру DYNAMIX. Для авторизации по данному варианту, при инициализации Terraform провайдера DYNAMIX следует установить аргумент `authenticator=bvs`, задать аргументы `app_id` и `app_secret` (или определить соответствующие переменные окружения `DYNAMIX_APP_ID` и `DYNAMIX_APP_SECRET`), `bvs_user` и `bvs_password` (или определить соответствующие переменные окружения `DYNAMIX_BVS_USER` и `DYNAMIX_BVS_PASSWORD`), а также указать `domain` (или определить соответствующие переменные окружения `DYNAMIX_DOMAIN`).
После успешной авторизации пользователь (или приложение-клиент) получает доступ к ресурсам, находящимся под управлением соответствующего DYNAMIX контроллера. Доступ предоставляется в рамках подписчиков (_account_), с которыми ассоциирован данный пользователь (_user_), и в соответствии с присвоенными ему ролями.
## Пользовательская и административная группы API
Пользовательская группа API - группа API платформы DYNAMIX, которая позволяет выполнять операции с платформой с правами обычного пользователя. Покрывает большую часть задач.
Административная группа API - группа API платформы DYNAMIX, которая позволяет выполнять операции с платформой с расширенными правами. Данные права подразумевают расширенный перечень операций над ресурсами, расширенный перечень ресурсов, расширенную информацию. Требуются права администратора для взаимодействия с этой группой API.
В Terraform провайдере DYNAMIX версии 1.2.1 реализованы функции только пользовательской группа API.

@ -0,0 +1,6 @@
Данный раздел описывает:
- Системные требования
- Установку провайдера
- Инициализацию провайдера
- Переключение режима работы между разными группами API
- Получение gid/grid_id площадки

@ -0,0 +1,147 @@
## Системные требования
Для запуска провайдера вам потребуется машина, на которой установлен Terraform.
Кроме того, в связи с тем, что начиная с версии 0.12 Terraform изменил алгоритм поиска и инициализации локальных провайдеров, настройка данного провайдера для работы с Terraform 0.12 или более новыми версиями потребует выполнения ряда дополнительных действий. Подробнее см. [8.3 Настройка локального провайдера для работы с новыми версиями Terraform](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/08.-Полезные-советы.md#8-3-настройка-локального-провайдера-для-работы-с-новыми-версиями-terraform).
## Установка
В релизном архиве находятся скрипты-инсталляторы.
Чтобы выполнить установку, необходимо:
1. Перейти по адресу: https://repository.basistech.ru/BASIS/terraform-provider-dynamix/releases
2. Выбрать необходимую версию провайдера подходящую под операционную систему.
3. Скачать архив.
4. Распаковать архив.
5. Выполнить скрипт установщика, `install.sh` или `install.bat` для Windows.<br/>
*Для запуска `install.sh` не забудьте изменить права доступа к файлу*
```bash
chmod u+x install.sh
```
6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его
```bash
terraform {
required_providers {
dynamix = {
version = "1.2.1"
source = "basistech.ru/tf/dynamix"
}
}
}
```
7. После этого, создайте файл `main.tf` в рабочей директории, которая может находится в любом удобном для пользователя месте.
В данном примере, рабочая директория с файлом main.tf находится по пути:
```bash
~/work/tfdir/main.tf
```
8. Вставьте в `main.tf` блок конфигурации провайдера, который был выведен на экран установщиком:
```terraform
terraform {
required_providers {
dynamix = {
version = "1.2.1"
source = "basistech.ru/tf/dynamix"
}
}
}
```
9. Добавьте в файл блок с инициализацией провайдера.
```terraform
provider "dynamix" {
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 провайдер DYNAMIX имеет скомпилированные релизные версии, которые расположены по адресу: [Релизы](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/releases).
Чтобы выполнить установку из релиза, необходимо:
1. Перейти по адресу: https://repository.basistech.ru/BASIS/terraform-provider-dynamix/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/basistech.ru/tf/dynamix/1.2.1/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 {
dynamix = {
source = "basistech.ru/tf/dynamix"
version = "1.2.1"
}
}
}
```
В поле `version` указывается версия провайдера.
<br/>
**ВНИМАНИЕ: Версии в блоке и в пути к исполняемому файлу провайдера должны совпадать!**
В поле `source` помещается путь до репозитория с версией вида:
```bash
${host_name}/${namespace}/${type}
```
**ВНИМАНИЕ: Версии в блоке и в пути к исполняемому файлу провайдера должны совпадать!**
8. Добавьте в файл блок с инициализацией провайдера.
```terraform
provider "dynamix" {
authenticator = "decs3o"
controller_url = "https://mr4.digitalenergy.online"
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
```
9. В консоли выполните команду
```bash
terraform init
```
10. В случае успешной установки, Terraform инициализирует провайдер и будет готов к дальнейшей работе.

@ -0,0 +1,64 @@
## Список аргументов для инициализации
Перед началом использования любой Terraform провайдер должен быть инициализирован.
В процессе инициализации Terraform провайдера DYNAMIX проверяется корректность переданных аргументов и выполняется авторизация в указанном контроллере облачной инфраструктуры. Подробнее о способах авторизации в платформе DYNAMIX смотри соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/03.-Обзор-облачной-платформы-DYNAMIX.md#способы-авторизации).
При инициализации Terraform провайдера DYNAMIX используются следующие аргументы:
| Аргумент | Переменная окружения | Описание |
| --- | --- | --- |
| allow_unverified_ssl | - | Если данный аргумент явно установлен в `true`, то провайдер **не будет** проверять SSL сертификаты при взаимодействии с авторизационным сервисом OAuth2 и контроллером облачной платформы.<br>Отключение проверок может быть полезным при работе в доверенной среде, использующей самоподписанные SSL сертификаты. Однако, так как отключение проверок несёт потенциальные риски безопасности, данную настройку следует использовать с осторожностью.<br/>Разрешённые значения: `false` (значение по умолчанию) и `true`. |
| app_id | DYNAMIX_APP_ID | Идентификатор приложения (клиента) для авторизации в контроллере облачной платформы в режиме `decs3o` или `bvs`.<br> Аргументы `app_id` и `app_secret` являются обязательными для режимов авторизации `authenticator=decs3o` и `authenticator=bvs`.<br>Если `app_id` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_APP_ID`. |
| app_secret | DYNAMIX_APP_SECRET | Секретный код приложения (клиента) для авторизации в контроллере облачной платформы в режиме `decs3o` или `bvs`.<br> Аргументы `app_id` и `app_secret` являются обязательными для режимов авторизации `authenticator=decs3o` и `authenticator=bvs`.<br>Если `app_secret` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_APP_SECRET`. |
| authenticator | - | Режим авторизации при подключении к контроллеру облачной платформы.<br/>Доступные режимы: `decs3o`, `legacy`, `jwt` или `bvs`.<br>Данный аргумент является обязательным. |
| bvs_user | DYNAMIX_BVS_USER | Имя пользователя для авторизации в контроллере облачной платформы в режиме `bvs`.<br>Аргументы `bvs_password` и `bvs_user` являются обязательными для режима авторизации `authenticator=bvs`.<br>Если `bvs_user` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_BVS_USER`. |
| bvs_password | DYNAMIX_BVS_PASSWORD | Пароль пользователя для авторизации в контроллере облачной платформы в режиме `bvs`.<br>Аргументы `bvs_user` и `bvs_password` являются обязательными для режима авторизации `authenticator=bvs`.<br>Если `bvs_password` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_BVS_PASSWORD`. |
| domain | DYNAMIX_DOMAIN | Имя домена в контроллере облачной платформы в режиме `bvs`.<br>Данный аргумент является обязательным.<br>Если `domain` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_DOMAIN`. |
| controller_url | DYNAMIX_CONTROLLER_URL | URL контроллера облачной платформы, через который будет осуществляться управление облачными ресурсами.<br>Данный аргумент является обязательным. |
| jwt | DYNAMIX_JWT | JSON Web Token (JWT), который используется для авторизации в контроллере облачной платформы в режиме `jwt`.<br>Данный аргумент является обязательным для режима авторизации `authenticator=jwt`.<br>Если `jwt` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_JWT` |
| oauth2_url | DYNAMIX_OAUTH2_URL | URL авторизационного сервиса OAuth2, который используется для управления доступом пользователей (или программных клиентов) к контроллеру облачной платформы.<br>Данный аргумент является обязательным для режимов авторизации `authenticator=decs3o`, `authenticator=bvs` и `authenticator=jwt`.<br>Если `oauth2_url` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_OAUTH2_URL` |
| password | DYNAMIX_PASSWORD | Пароль для авторизации в контроллере облачной платформы в режиме `legacy`.<br> Аргументы `password` и `user` являются обязательными для режима авторизации `authenticator=legacy`.<br>Если `password` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_PASSWORD`. |
| user | DYNAMIX_USER | Имя пользователя для авторизации в контроллере облачной платформы в режиме `legacy`.<br> Аргументы `user` и `password` являются обязательными для режима авторизации `authenticator=legacy`.<br>Если `user` не задан в tf-файле, то провайдер будет использовать значение из переменной окружения `DYNAMIX_USER`. |
## Пример инициализации в режиме авторизации `decs3o`
Пример инициализации Terraform провайдера DYNAMIX:
```terraform
provider "dynamix" {
authenticator = "decs3o"
controller_url = "https://ctrl.decort.online"
oauth2_url = "https://oauth2.decort.online:7777"
}
```
В данном примере используется режим авторизации `decs3o`.
Как отмечено выше, в данном режиме требуется указать аргументы `app_id` и `app_secret`, идентифицирующие пользователя (или приложение-клиент), от лица которого будут выполняться дальнейшие действия. Однако, так как данная информация является конфиденциальной (по сути, она эквивалентна паре _имя пользователя : пароль_), то в общем случае заносить такого рода данные в tf-файл не следует. Рекомендуется определять в среде запуска Terraform переменные окружения `DYNAMIX_APP_ID` и `DYNAMIX_APP_SECRET`, из которых провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения.
Пользователь, от лица которого Terrafrom будет выполнять действия в облачной платформе, должен заранее создать пару _Application ID_ и _Application Secret_ в авторизационном приложении OAuth2. Именно эти значения, а также URL авторизационного приложения Oauth2, должны присваиваться аргументам `app_id`, `app_secret` и `oauth2_url` соответственно для успешной инициализации провайдера.
Также обратите внимание на формат задания аргументов `controller_url` и `oauth2_url`. В общем случае они должны содержать идентификатор протокола (_https://_) и сетевой порт, если он отличается от порта по умолчанию (в примере для авторизационного сервиса OAuth2 указан порт _7777_). Эту информацию вы можете узнать у администратора вашей облачной инфраструктуры.
## Пример инициализации в режиме авторизации `bvs`
Пример инициализации Terraform провайдера DYNAMIX:
```terraform
provider "dynamix" {
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 переменные окружения `DYNAMIX_APP_ID` и `DYNAMIX_APP_SECRET`, из которых провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения.
Также обязательными аргументами являются: `bvs_user` - имя пользователя, `bvs_password` - пароль пользователя. Рекомендуется не заносить их в tf-файл, а определять в среде запуска Terraform переменные окружения `DYNAMIX_BVS_USER` и `DYNAMIX_BVS_PASSWORD`, из которых провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения.
Домен для подключения `domain` - указывается наименование площадки. Данный аргумент является обязательным. Рекомендуется не заносить его в tf-файл, а определять в среде запуска Terraform переменную окружения `DYNAMIX_DOMAIN`, из которой провайдер извлечёт нужные данные. Приведенный пример подразумевает, что нужная информация будет получена из этих переменных окружения.
Пользователь, от лица которого Terrafrom будет выполнять действия в облачной платформе, должен заранее получить от администратора _Application ID_ и _Application Secret_, _bvs user_ и _bvs password_, а также _domain_. А также осуществить первичный вход на платформу посредством браузера.
Также обратите внимание на формат задания аргументов `controller_url` и `oauth2_url`. В общем случае они должны содержать идентификатор протокола (_https://_) и сетевой порт, если он отличается от порта по умолчанию (в примере для авторизационного сервиса OAuth2 указан порт _8443_). Эту информацию вы можете узнать у администратора вашей облачной инфраструктуры.

@ -0,0 +1,38 @@
Так как платформа DYNAMIX предоставляет для работы две группы 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
```
**ОБРАТИТЕ ВНИМАНИЕ**
Переменные окружения создаются для терминальной сессии. В сл. раз их придется задавать еще раз, если требуется режим, отличный от пользовательского.

@ -0,0 +1,17 @@
Платформа может располагаться на нескольких площадках(grid).
Такие площадки имеют свой id.
Для создания некоторых ресурсов требуется ввести grid_id или gid площадки.
Получение gid различается для пользовательского и административного API.
## Получение gid для пользовательского API
Для получения gid с помощью пользовательского API, необходимо получить информацию из _data_source_ функции _dynamix_locations_list_, как указано ниже:
```terraform
data "dynamix_locations_list" "ll" {
}
output "test" {
value = data.dynamix_locations_list.ll
}
```
В файл состояния будет сохранен результат, где можно посмотреть доступные для работы площадки.

@ -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://repository.basistech.ru/BASIS/terraform-provider-dynamix
```
2. Перейти в директорию со скачанным кодом:
```bash
cd terraform-provider-dynamix
```
3. Выполнить команду:
```bash
make image
```
В результате выполнения данной последовательности, будет создан docker образ, который содержит в себе приложение terraform, terraform провайдер.

@ -0,0 +1,4 @@
Раздел описывает некоторые практики работы с terraform, которые могут быть полезны пользователю.
Раздел включает в себя следующие статьи:
- Импортирование ресурсов
- Работа с таймаутами

@ -0,0 +1,75 @@
Импортирование ресурсов в terraform позволяет привести в соответствие состояние terraform (.tfstate) к состоянию ресурса в платформе.
Необходимость такого приведения возникает в нескольких случаях:
- Ресурс был создан через портал платформы, работа продолжается через terraform провайдер,
- Ресурс был создан через terraform провайдер, однако был изменен через портал платформы,
- Ресурс был создан через terraform провайдер, однако был изменен другим пользователем через terraform провайдер,
- И так далее
Такие расхождения в состоянии ресурсов нередки, путей их решения несколько:
- Использовать импортирование ресурсов,
- Использовать общие файлы состояний ресурсов, к которым будут иметь доступ все участники, занятые в работе с платформой.
В текущем разделе рассматривается первый вариант.
## Импортирование ресурсов
Импортирование ресурсов позволяет совершить запрос к платформе, чтобы сформировать файл состояния.
Чтобы совершить импортирование ресурсов необходимо ввести сл. команду:
```bash
terraform import <resource-name>.<resource-variable> <resource-id>
```
## Пример
Предположим, что у нас ресурс, описывающий диск:
```terraform
resource "dynamix_disk" "disk" {
account_id = 121212
gid = 3333
disk_name = "mySuperDisk"
size_max = 100500
}
```
Если запустить команду:
```bash
terraform apply
```
То у нас будет создан новый диск.
Но, такой диск уже есть на площадке и мы хотели бы сформировать .tfstate для этого ресурса.
Поэтому, для начала, необходимо получить список дисков:
```terraform
data "dynamix_disk_list" "dl"{
}
output "test" {
value = data.dynamix_disk_list.dl
}
```
В полученных данных необходимо найти требуемый диск, получить его id - параметр disk_id. Пусть это будет - 777777
Теперь можно выполнить импортирование:
```bash
terraform import dynamix_disk.disk 777777
```
Команда должна успешно завершиться, появиться файл состояний, который позволит манипулировать ресурсом.
## Ошибки при импортировании
При импортировании ресурса может возникнуть сл. ошибка:
```bash
Error: <field-name>: required field is not set
```
Где <field-name> - наименование поля.
Ошибка возникает в том случае, если в описании ресурса отсутствует обязательное поле.
Например:
```terraform
resource "dynamix_disk" "disk" {
account_id = 121212
gid = 3333
size_max = 100500
}
```
В приведенном выше описании отсутствует поле disk_name, поэтому, при попытке импортирования возникнет ошибка.
Для ее устранения, необходимо выполнить запрос на получение списка дисков, найти недостающее поле, после чего добавить его в описание ресурса.
После этого повторить попытку импортирования.
## Общий алгоритм устранения ошибок
1. Выполнить запрос импортирования
2. В случае ошибки - внести недостающие поля.
3. Повторить п.1.

@ -0,0 +1,100 @@
Terraform провайдер DYNAMIX поддерживает тонкую настройку таймаутов выполнения запросов к платформе. Таймауты необходимы для определения максимального времени выполнения запроса. При превышении этого времени соединение рвется и запрос считается невыполненным.
Таймауты применяются при работе с _resource_ функциями провайдера. _Data source_ функции по-умолчанию имеют таймаут в 20 минут и изменяться не может.
## Стандартные таймауты terraform
| Операция | Время | Описание |
| --- | --- | --- |
| create | 20 минут | Создание ресурса |
| read | 20 минут | Чтение ресурса |
| update | 20 минут | Обновление ресурса |
| delete | 20 минут | Удаление ресурса |
| default | 20 минут | Значение по умолчанию. Устанавливает значение для всех операций |
## Стандартные таймауты провайдера DYNAMIX
В провайдере DYNAMIX таймауты переопределены для того, чтобы уменьшить нагрузку на платформу.
| Операция | Время | Описание |
| --- | --- | --- |
| create | 10 минут | Создание ресурса |
| read | 5 минут | Чтение ресурса |
| update | 5 минут | Обновление ресурса |
| delete | 5 минут | Удаление ресурса |
| default | 5 минут | Значение по умолчанию. Устанавливает значение для всех операций |
## Установка таймаутов
Все таймауты можно установить самостоятельно для каждого ресурса.
Для этого используется блок _timeouts_, который имеется в каждом ресурсе провайдера.
Пример:
```terraform
resource "dynamix_res" "res_name" {
timeouts {
create = "10m"
update = "1m"
delete = "2m"
read = "7m"
#default = "15m"
}
}
```
Где:
- create - операция создания ресурса
- read - операция чтения ресурса
- update - операция обновления ресурса
- delete - операция удаления ресурса
- default - установит заданное время для всех операций
## Формат установления времени
Как видно из примера выше, провайдер принимает на вход строку вида:
```
"<time-num><time-val>"
```
Где:
- 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 <time> terraform <cmd>
```
Где:
- time - время таймаута, например, 1h, 10m, и так далее
- cmd - команда terraform, например, apply, plan и так далее
## Заключение
Таймауты - мощный механизм terraform провайдера, который позволяет более тонко настраивать время выполнения операций.
Как и любой подобный механизм тонкой настройки, он требует внимательного и аккуратного использования.

@ -0,0 +1,29 @@
Ресурсы в платформе можно удалять в корзину (с возможностью восстановления), удалять сразу без возможности восстановления.
## Удаление ресурса
Для удаления ресурса применяется команда:
```bash
terraform destroy
```
После выполнения данной команды произойдет следующее:
- Будет удален файл состояния ресурса .tfstate
- Ресурс не удалится с платформы, а будет помещен в корзину, с возможностью восстановления
## Восстановление ресурсов
__Ресурс можно восстановить, если у него есть поле `restore`__, в противном случае, необходимо воспользоваться порталом для восстановления.
После удаления ресурса, он помечается как "Deleted" и его можно восстановить.
Для восстановления ресурса необходимо выполнить следующие действия:
- Создать файл .tf и описать в нем восстанавливаемый ресурс
- Импортировать ресурс
- Добавить поле restore со значением `true`
- Выполнить `terraform apply`
## Удаление ресурсов без возможности восстановления
Ресурсы можно удалять с платформы сразу, минуя корзину. Однако, такое удаление возможно только для ресурсов, имеющих поле `permanently`.
Для этого необходимо выполнить сл. шаги:
- В файле .tf добавить поле `permanently = true`
- Применить изменения `terraform apply`
- Выполнить удаление `terraform destroy`
**Проводя мгновенное удаление, ресурс восстановить будет невозможно!**

@ -0,0 +1,448 @@
Иногда требуется создать несколько ресурсов, которые будут отличаться незначительными изменениями (например, имя).
В terraform имеются специальные мета-аргументы, которые позволяют описать данную инфраструктуру максимально быстро, избегая повторений блоков.
Однако, при таком подходе стоит учитывать то, что созданная при помощи такого подхода инфраструктура является неким "монолитом" и любые изменения будут применятся для всех ресурсов, которые были созданы с помощью мета аргументов.
__ВНИМАНИЕ: СОЗДАННЫЕ ТАКИМ ОБРАЗОМ РЕСУРСЫ, УПРАВЛЯЮТСЯ КАК ОДИН РЕСУРС__
## Создание дисков. Обычный вариант
Предположим, что необходимо создать несколько дисков, которые будут иметь одинаковые поля, а отличаться только именем.
Тогда, будут использованы несколько блоков resource с описанием данных ресурсов:
```terraform
resource "dynamix_disk" "disk1" {
account_id = 777
disk_name = "disk-1"
size_max = 10
gid = 212
}
resource "dynamix_disk" "disk2" {
account_id = 777
disk_name = "disk-2"
size_max = 10
gid = 212
}
```
Все блоки повторяются и отличаются только именем. Если не планируется изменение каждого ресурса по-отдельности, то можно вынести имена дисков в отдельную переменную, и считывать их из нее.
## Рефакторинг
Вынесем значения имен дисков в блок locals:
```terraform
locals {
disk_names = [
"disk-1",
"disk-2",
]
}
resource "dynamix_disk" "disk1" {
account_id = 777
disk_name = "disk-1"
size_max = 10
gid = 212
}
resource "dynamix_disk" "disk2" {
account_id = 777
disk_name = "disk-2"
size_max = 10
gid = 212
}
```
Оставшиеся блоки resource идентичны друг другу, за исключением наименования ресурса, поэтому, их создание и работу с ними можно объединить.
## Мета аргумент for_each
Мета аргумент for_each служит для итерации по набору (set) строки, либо по мапе (map, object). Результатом работы этого мета аргумента станет так же объект, ключами которого будут либо строки, входящие в набор, либо параметры, указанные при итерировании объекта.
Мета аргумент for_each предоставляет переменную each, в которую, при каждой итерации будут ключи (если итерация идет по набору строк), либо ключи и соответствующие им значения, если итерация идет по объекту.
Обратиться к ним можно через символ ".", например:
```terraform
each.key
each.value
```
Таким образом, конфигурирование одинаковых ресурсов сократится до одного.
При добавлении в код выше, получится:
```terraform
locals {
disk_names = [
"disk-1",
"disk-2",
]
}
#обратите внимание, что ресурс был переименован
resource "dynamix_disk" "disks" {
#преобразование массива к набору строк для успешной работы for_each
for_each = toset(local.disk_names)
account_id = 777
#получение имени диска из переменной each
disk_name = each.key
size_max = 10
gid = 212
}
#блок output демонстрирует вывод работы на экран
output "test" {
value = dynamix_disk.disks
}
```
При выполнении данной конфигурации в terraform output будет следующее:
```
Changes to Outputs:
+ test = {
+ disk-1 = {
+ account_id = 777
+ account_name = (known after apply)
+ acl = (known after apply)
+ boot_partition = (known after apply)
+ compute_id = (known after apply)
+ compute_name = (known after apply)
+ created_time = (known after apply)
+ deleted_time = (known after apply)
+ desc = (known after apply)
+ destruction_time = (known after apply)
+ detach = false
+ devicename = (known after apply)
+ disk_id = (known after apply)
+ disk_name = "disk-1"
+ disk_path = (known after apply)
+ gid = 212
+ guid = (known after apply)
+ id = (known after apply)
+ image_id = (known after apply)
+ images = (known after apply)
+ iotune = (known after apply)
+ iqn = (known after apply)
+ login = (known after apply)
+ milestones = (known after apply)
+ order = (known after apply)
+ params = (known after apply)
+ parent_id = (known after apply)
+ passwd = (known after apply)
+ pci_slot = (known after apply)
+ permanently = false
+ pool = (known after apply)
+ purge_attempts = (known after apply)
+ purge_time = (known after apply)
+ reality_device_number = (known after apply)
+ reference_id = (known after apply)
+ res_id = (known after apply)
+ res_name = (known after apply)
+ restore = false
+ role = (known after apply)
+ sep_id = (known after apply)
+ sep_type = (known after apply)
+ size_max = 10
+ size_used = (known after apply)
+ snapshots = (known after apply)
+ status = (known after apply)
+ tech_status = (known after apply)
+ timeouts = null
+ type = (known after apply)
+ vmid = (known after apply)
}
+ disk-2 = {
+ account_id = 777
+ account_name = (known after apply)
+ acl = (known after apply)
+ boot_partition = (known after apply)
+ compute_id = (known after apply)
+ compute_name = (known after apply)
+ created_time = (known after apply)
+ deleted_time = (known after apply)
+ desc = (known after apply)
+ destruction_time = (known after apply)
+ detach = false
+ devicename = (known after apply)
+ disk_id = (known after apply)
+ disk_name = "disk-2"
+ disk_path = (known after apply)
+ gid = 212
+ guid = (known after apply)
+ id = (known after apply)
+ image_id = (known after apply)
+ images = (known after apply)
+ iotune = (known after apply)
+ iqn = (known after apply)
+ login = (known after apply)
+ milestones = (known after apply)
+ order = (known after apply)
+ params = (known after apply)
+ parent_id = (known after apply)
+ passwd = (known after apply)
+ pci_slot = (known after apply)
+ permanently = false
+ pool = (known after apply)
+ purge_attempts = (known after apply)
+ purge_time = (known after apply)
+ reality_device_number = (known after apply)
+ reference_id = (known after apply)
+ res_id = (known after apply)
+ res_name = (known after apply)
+ restore = false
+ role = (known after apply)
+ sep_id = (known after apply)
+ sep_type = (known after apply)
+ size_max = 10
+ size_used = (known after apply)
+ snapshots = (known after apply)
+ status = (known after apply)
+ tech_status = (known after apply)
+ timeouts = null
+ type = (known after apply)
+ vmid = (known after apply)
}
}
```
После подтверждения команды, будет создан файл состояния инфраструктуры, в который запишутся данные.
### Обращение к конфигурации, созданной с помощью for_each
Получить доступ к ресурсам, созданным с помощью for_each можно по сл. схеме:
```
<resource_type>.<resource_name>["<key>"]
```
Пример получения доступа к ресурсу disk-2:
```
dynamix_disk.disks["disk-2"]
```
Чтобы получить доступ к полям, которые содержит ресурс:
```
<resource_type>.<resource_name>["<key>"].<field_name>
```
Например, для получения account_id для disk-2:
```
dynamix_disk.disks["disk-2"].account_id
```
### Использование for_each для более сложной конфигурации
Иногда, необходимо объединить несколько ресурсов с разной конфигурацией в один ресурс, с помощью for_each. Для того, чтобы это сделать, необходимо воспользоваться функцией for для перебора информации о каждом ресурсе, в котором так же необходимо указать какое из полей будет указывать на определенный ресурс.
Рассмотрим более сложный пример создания нескольких дисков:
```terraform
#создание массива из объектов, описывающих инфраструктуру
locals {
disks = [
{
account_id = 777
diskname = "test-disk"
disk2_gb = 100
gid = 212
},
{
account_id = 778
diskname = "test-disk-1"
disk2_gb = 200
gid = 213
}
]
}
resource "dynamix_disk" "disks" {
#цикл for проходит по каждому элементы списка, превращая его в объект, где
#ключом будет - имя диска
#знаяением - сам диск
for_each = { for disk in local.disks : disk.diskname => disk }
#получение account_id каждого диска
account_id = each.value.account_id
#шаблон задания имени диска
#так же, если не надо вносить изменения, можно использовать:
#disk_name = each.value.diskname
disk_name = "${each.value.diskname}-data"
#получение размера диска
size_max = each.value.disk2_gb
#получение gid диска
gid = each.value.gid
}
```
Таким образом, будут созданы ресурсы с разной конфигурацией.
## Мета аргумент count
Мета аргумент count так же служит для множественного создания ресурсов, объединяя их в один, с тем лишь исключением, что это будет массив, а не объект.
Аргумент count принимает на вход либо число, либо выражение, которое возвращает число.
Число - количество итерацией, которые предстоит произвести.
Например:
```terraform
count = 3
count = length(some_data)
```
Рассмотрим пример:
```terraform
#без изменений
locals {
disk_names = [
"disk-1",
"disk-2",
]
}
#без изменений, ресурс так же называется - "disks"
resource "dynamix_disk" "disks" {
#Используется функция length для подсчета длины списка имен дисков
count = length(local.disk_names)
account_id = 777
#аргумент count имеет поле index, которое возвращает индекс(счетчик) текущей итерации
disk_name = local.disk_names[count.index]
size_max = 10
gid = 212
}
output "test" {
value = dynamix_disk.disks
}
```
При выполнении данной конфигурации в terraform output будет следующее:
```
Changes to Outputs:
+ test = [
+ {
+ account_id = 777
+ account_name = (known after apply)
+ acl = (known after apply)
+ boot_partition = (known after apply)
+ compute_id = (known after apply)
+ compute_name = (known after apply)
+ created_time = (known after apply)
+ deleted_time = (known after apply)
+ desc = (known after apply)
+ destruction_time = (known after apply)
+ detach = false
+ devicename = (known after apply)
+ disk_id = (known after apply)
+ disk_name = "disk-1"
+ disk_path = (known after apply)
+ gid = 212
+ guid = (known after apply)
+ id = (known after apply)
+ image_id = (known after apply)
+ images = (known after apply)
+ iotune = (known after apply)
+ iqn = (known after apply)
+ login = (known after apply)
+ milestones = (known after apply)
+ order = (known after apply)
+ params = (known after apply)
+ parent_id = (known after apply)
+ passwd = (known after apply)
+ pci_slot = (known after apply)
+ permanently = false
+ pool = (known after apply)
+ purge_attempts = (known after apply)
+ purge_time = (known after apply)
+ reality_device_number = (known after apply)
+ reference_id = (known after apply)
+ res_id = (known after apply)
+ res_name = (known after apply)
+ restore = false
+ role = (known after apply)
+ sep_id = (known after apply)
+ sep_type = (known after apply)
+ size_max = 10
+ size_used = (known after apply)
+ snapshots = (known after apply)
+ status = (known after apply)
+ tech_status = (known after apply)
+ timeouts = null
+ type = (known after apply)
+ vmid = (known after apply)
},
+ {
+ account_id = 777
+ account_name = (known after apply)
+ acl = (known after apply)
+ boot_partition = (known after apply)
+ compute_id = (known after apply)
+ compute_name = (known after apply)
+ created_time = (known after apply)
+ deleted_time = (known after apply)
+ desc = (known after apply)
+ destruction_time = (known after apply)
+ detach = false
+ devicename = (known after apply)
+ disk_id = (known after apply)
+ disk_name = "disk-2"
+ disk_path = (known after apply)
+ gid = 212
+ guid = (known after apply)
+ id = (known after apply)
+ image_id = (known after apply)
+ images = (known after apply)
+ iotune = (known after apply)
+ iqn = (known after apply)
+ login = (known after apply)
+ milestones = (known after apply)
+ order = (known after apply)
+ params = (known after apply)
+ parent_id = (known after apply)
+ passwd = (known after apply)
+ pci_slot = (known after apply)
+ permanently = false
+ pool = (known after apply)
+ purge_attempts = (known after apply)
+ purge_time = (known after apply)
+ reality_device_number = (known after apply)
+ reference_id = (known after apply)
+ res_id = (known after apply)
+ res_name = (known after apply)
+ restore = false
+ role = (known after apply)
+ sep_id = (known after apply)
+ sep_type = (known after apply)
+ size_max = 10
+ size_used = (known after apply)
+ snapshots = (known after apply)
+ status = (known after apply)
+ tech_status = (known after apply)
+ timeouts = null
+ type = (known after apply)
+ vmid = (known after apply)
},
]
```
### Обращение к конфигурации, созданной с помощью сount
Получить доступ к ресурсам, созданным с помощью count можно по сл. схеме:
```
<resource_type>.<resource_name>[<index>]
```
Пример получения доступа к ресурсу disk-2:
```
dynamix_disk.disks[1]
```
Чтобы получить доступ к полям, которые содержит ресурс:
```
<resource_type>.<resource_name>[<index>].<field_name>
```
Например, для получения account_id для disk-2:
```
dynamix_disk.disks[1].account_id
```
### Использование count для более сложной конфигурации
Иногда, необходимо объединить несколько ресурсов с разной конфигурацией в один ресурс, с помощью count. Для того, чтобы это сделать, необходимо воспользоваться функцией length для установления длины входящих параметров. После чего, обращаться к ним, получая значения, используя индекс.
Рассмотрим более сложный пример создания нескольких дисков:
```terraform
#создание массива из объектов, описывающих инфраструктуру
locals {
disks = [
{
account_id = 777
diskname = "test-disk"
disk2_gb = 100
gid = 212
},
{
account_id = 778
diskname = "test-disk-1"
disk2_gb = 200
gid = 213
}
]
}
resource "dynamix_disk" "disks" {
#получение значения длины входящих параметров
count = length(local.disks)
#получение идентификатора аккаунта
account_id = local.disks[count.index].account_id
#получение имени диска
disk_name = "${local.disks[count.index].diskname}-data"
#получение размера диска
size_max = local.disks[count.index].disk2_gb
#получение gid
gid = local.disks[count.index].gid
}
```
Таким образом, будут созданы ресурсы, с разной конфигурацией.

@ -0,0 +1,262 @@
Ресурсы в terraform можно как создавать, редактировать, так и удалять. При удалении ресурса, terraform провайдер производит необходимые действия на платформе, после чего очищает эти ресурсы из своего .tfstate - файла, в котором хранится состояние инфраструктуры.
В данном разделе рассмотрены различные способы удаления ресурсов, проблемы, которые могут возникнуть, их причины, а так же способы их решить.
## Команда destroy
Для удаления ресурса, в terraform имеется команда
```bash
terraform destroy
```
По умолчанию, эта команда производит удаление всей инфраструктуры, описанной и сохраненной в .tfstate-файле.
### Влияние конфигурационного параметра permanently
В некоторых ресурсах terraform провайдера имеется параметр permanently, который регулирует удаление ресурса:
- Если флаг имеет значение - `true` (используется по умолчанию), то ресурс будет мгновенно удален с платформы и восстановить его будет невозможно.
- Если флаг имеет значение - `false`, то ресурс будет помещен в корзину, с возможностью дальнейшего восстановления. Ресурс будет удален автоматически из корзины через 7 дней (зависит от настроек платформы).
#### Возможные проблемы
Так как terraform, при удалении ресурса, производит удаление .tfstate-файла, то при использовании фдага permanently = false, ресурс невозможно будет восстановить из конфигурационного файла инфраструктуры - при использовании `terraform apply` - будет создана новая инфраструктура. Поэтому, старую инфраструктуру необходимо импортировать, чтобы сформировать .tfstate - файл, а потом применить `terraform apply` - тогда ресурс будет восстановлен из корзины.
## Команда destroy с флагом target
Как и было сказано выше, команда `terraform destroy` производит удаление всей инфраструктуры. Для того, чтобы произвести удаление определенных ресурсов, используется флаг `-target`. Флаг, в качестве параметра, принимает название ресурса для удаления, вида
```
<тип-ресурса>.<имя-ресурса>
```
либо
```
<модуль>.<имя-ресурса>
```
для ресурсов, содержащихся в модулях.
Таким образом, общая команда выглядит так:
```
terraform destroy -target <тип-ресурса>.<имя-ресурса>
```
или
```
terraform destroy -target <модуль>.<имя-ресурса>
```
В примерах не используется модуль, поэтому, далее, в качестве примера, будет взята команда `terraform destroy -target <тип-ресурса>.<имя-ресурса>`
### Способы передачи параметра
1. `terraform destroy -target <тип-ресурса>.<имя-ресурса>`
2. `terraform destroy -target="<тип-ресурса>.<имя-ресурса>"`
### Пример использования target
В качестве примера возьмем пример конфигурации из [прошлой статьи](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/05.04-Массовое-создание-ресурсов.-Мета-аргументы.md):
```terraform
resource "dynamix_disk" "disk1" {
account_id = 777
disk_name = "disk-1"
size_max = 10
gid = 212
}
resource "dynamix_disk" "disk2" {
account_id = 777
disk_name = "disk-2"
size_max = 10
gid = 212
}
```
- Чтобы удалить всю инфраструктуру, необходимо просто выполнить в терминале команду
```bash
terraform destroy
```
- Чтобы удалить "disk2", можно воспользоваться командой:
```
terraform destroy -target dynamix_disk.disk2
```
- Чтобы удалить "disk1", можно воспользоваться другим способом удаления:
```
terraform destroy -target="dynamix_disk.disk1"
```
Таким образом, определенный ресурс можно удалить с помощью флага target.
### Использование флага target при работе с ресурсами, созданными с помощью мета аргументов.
При создании ресурсов с помощью мета аргументов, первые получают дополнительные символы в именах ресурсов, что может привести к некоторым проблемам при работе с такими ресурсами.
#### Работа с for_each
При работе с for_each, ресурс получается имя вида: `<тип-ресурса>.<общее-имя-ресурса>["<название>"]`
Таким образом, обращение к такому ресурсу будет выглядит следующим образом:
```
terraform destroy -target='<тип-ресурса>.<общее-имя-ресурса>[\"<название>\"]'
```
или
```
terraform destroy -target '<тип-ресурса>.<общее-имя-ресурса>[\"<название>\"]'
```
Пример:
Для примера рассмотрим создание ресурса с помощью мета аргумента for_each из предыдущей статьи:
```terraform
locals {
disk_names = [
"disk-1",
"disk-2",
]
}
resource "dynamix_disk" "disks" {
for_each = toset(local.disk_names)
account_id = 777
disk_name = each.key
size_max = 10
gid = 212
}
```
В результате применения команды `terrafrom apply`, будут созданы ресурсы с именами:
- dynamix_disk.disks["disk-1"]
- dynamix_disk.disks["disk-2"]
Чтобы удалить определенный ресурс, можно воспользоваться одной из команд:
```
#для удаления disk-1
terraform destroy -target='dynamix_disk.disks[\"disk-1\"]'
```
```
#для удаления disk-2
terraform destroy -target 'dynamix_disk.disks[\"disk-2\"]'
```
Либо:
```
#для удаления всей инфраструктуры
terraform destroy
```
Такая запись с экранирование кавычек обуславливается работой терминальной оболочки, через которую будет производится вызов данной команды, а так же то, что terraform в качестве параметра флага ожидает строку. Так же, есть еще одно правило - в terraform в квадратных скобках указывается либо строка в двойных кавычках (в качестве имени ключа для объекта, используется для for_each), либо число - в качестве индекса для массива (используется для count)
#### Работа с count
При работе с count, ресурс получается имя вида: `<тип-ресурса>.<общее-имя-ресурса>[<индекс>]`
Таким образом, обращение к такому ресурсу будет выглядит следующим образом:
```
terraform destroy -target="<тип-ресурса>.<общее-имя-ресурса>[<индекс>]"
```
или
```
terraform destroy -target <тип-ресурса>.<общее-имя-ресурса>[<индекс>]
```
Пример:
Для примера рассмотрим создание ресурса с помощью мета аргумента for_each из предыдущей статьи:
```terraform
locals {
disk_names = [
"disk-1",
"disk-2",
]
}
resource "dynamix_disk" "disks" {
count = length(local.disk_names)
account_id = 777
disk_name = local.disk_names[count.index]
size_max = 10
gid = 212
}
```
В результате применения команды `terrafrom apply`, будут созданы ресурсы с именами:
- dynamix_disk.disks[0]
- dynamix_disk.disks[1]
Чтобы удалить определенный ресурс, можно воспользоваться одной из команд:
```
#для удаления disk-1
terraform destroy -target="dynamix_disk.disks[0]"
```
```
#для удаления disk-2
terraform destroy -target dynamix_disk.disks[1]
```
Либо:
```
#для удаления всей инфраструктуры
terraform destroy
```
### Удаление ресурса из состояния
В ходе работы, могут возникать случаи, когда состояние (state, стейт) terraform имеет ресурсы, которые были удалены с платформы. В таком случае, можно, при выполнении команд `terraform plan/apply` получить ошибку:
```bash
Planning failed. Terraform encountered an error while generating this plan.
│ Error: The resource cannot be updated because it has been destroyed
│ with dynamix_kvmvm.instances["pgsmonsietc03"],
│ on main.tf line 33, in resource "dynamix_kvmvm" "instances":
│ 33: resource "dynamix_kvmvm" "instances" {
```
Либо, в ходе неверного выполнения может возникнуть подобная ошибка:
```bash
│ Error: Failed to read the given file as a state or plan file
│ State read error: Error loading statefile: open data.dynamix_cb_vins.vins: no such file or directory
│ Plan read error: open data.dynamix_cb_vins.vins: no such file or directory
```
Для того, чтобы этого избежать, необходимо удалить отсутствующий ресурс из стейта, выполнив команду `terraform state rm <res>.<name>`
Например, `terraform state rm dynamix_kvmvm.vm1`
В случае, если ресурс был создан путен работы генераторов count/for_each, работают те же правила, что и для команды `terraform destroy`.
## Возможные проблемы
Были обнаружены проблемы при использовании _oh my zsh_, которые заключались в том, что не считывались данные, переданные, при экранировании строки.
Рекомендация: использовать _bash_.
## Заключение
Таким образом, terraform позволяет выполнять удаление:
- всей инфраструктуры, хранящейся в файле .tfstate с помощью `terraform destroy`
- части инфраструктуры, используя флаг target. ОБщий вид команды такой: `terraform destroy -target <тип-ресурса>.<имя-ресурса>`

@ -0,0 +1,46 @@
# Установка Terraform
На момент написания инструкции, приложение Terraform по прямой ссылке с сайта-разработчика программного обеспечения невозможно скачать, по этой же причине, невозможно произвести установку с помощью разных пакетных менеджеров.
Существует два способа произвести установку приложения:
- Скачать скомпилированное приложение с зеркала компании BASIS.
- Из исходных кодов.
## Скачивание и установка скомпилированного приложения с зеркала компании BASIS
1. Перейти по ссылке https://colba.decs.online/index.php/s/JfkXWbwTqww64Tz , выбрать версию terraform для подходящей ОС.
2. Скачать архив.
3. Разархивировать приложение и переместить:
- Для Linux или MacOS: `/usr/local/bin`
- Для Windows: в любую папку, после чего добавить в $PATH в переменных окружения путь до приложения
4. Ввести в терминале `terraform -help`, в случае успеха, на экран будет информация о программе.
### Указание переменных среды окружения в Windows
Меню -> Панель управления -> Система -> Настройки -> Переменные окружения
Или
Поиск -> Изменение системных переменных среды
В открывшемся окне -> Переменные среды
Далее, необходимо выбрать переменную Path -> Изменить
Создать -> ввести путь до файла -> ОК
## Из исходных кодов
Для компилирования приложения потребуется:
- Компилятор языка программирования GO
- Система контроля версий git
- Исходные файлы приложения.
Сначала необходимо скачать и установить компилятор языка программирования GO. Для этого, необходимо перейти по ссылке https://go.dev/doc/install . На странице сайта будет автоматически представлена последняя версия компилятора подходящая операционной системе.
Далее, необходимо скачать и установить систему контроля версий git (https://git-scm.com/), на сайте будет так же автоматически предложена самая последняя и подходящая версия.
После установки компилятора и системы контроля версий, необходимо произвести клонирование исходных кодов приложения. Выполнить это можно, введя в терминале следующую команду:
```bash
git clone https://github.com/hashicorp/terraform.git
```
Обратите внимание, что клонирование будет происходить в директорию, из которой происходил вызов команды.
После клонирования, можно приступить к сборке приложения.
Для этого необходимо перейти в каталог, в который произошло клонирование исходных кодов и выполнить команду в терминале:
```bash
go install
```
Или
```bash
go build
```
Результатом выполнения данной программы станет бинарный файл terraform.
Полученный файл необходимо поместить в каталог `/usr/local/bin` для MacOS или Linux, либо в любой каталог и указать его путь в переменных окружения для ОС Windows.
После всех действий, команда `terraform -help` должна выводить информацию в терминал.
Полезные ссылки:
- https://learn.hashicorp.com/tutorials/terraform/install-cli
- https://stackoverflow.com/questions/1618280/where-can-i-set-path-to-make-exe-on-windows

@ -0,0 +1,698 @@
## Инструкция по миграции с terraform-provider-decort на terraform-provider-dynamix
### Установка terraform-provider-dynamix
В релизном архиве находятся скрипты-инсталляторы.
Чтобы выполнить установку, необходимо:
1. Перейти по адресу: https://repository.basistech.ru/BASIS/terraform-provider-dynamix/releases
2. Выбрать необходимую версию провайдера подходящую под операционную систему.
3. Скачать архив.
4. Распаковать архив.
5. Выполнить скрипт установщика, `install.sh` или `install.bat` для Windows.<br/>
*Для запуска `install.sh` не забудьте изменить права доступа к файлу*
```bash
chmod u+x install.sh
```
6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его
```bash
DYNAMIX provider version 1.2.1 has been successfully installed
Copy this provider configuration to main.tf file:
terraform {
required_providers {
dynamix = {
source = "basistech.ru/tf/dynamix"
version = "1.2.1"
}
}
}
```
7. Теперь вам необходимо отредактировать ваши конфигурационные .tf файлы terraform-provider-decort для работы с terraform-provider-dynamix.
#### Общие изменения
Измените блок подключения провайдера. Замените `decort` на `dynamix`, `source = "basis/decort/decort"` на
`source = "basistech.ru/tf/dynamix"`, укажите нужную версию.
##### Было
```go
terraform {
required_providers {
decort = {
source = "basis/decort/decort"
version = "4.6.1"
}
}
}
```
##### Стало
```go
terraform {
required_providers {
dynamix = {
source = "basistech.ru/tf/dynamix"
version = "1.2.1"
}
}
}
```
Измените блок настройки провайдера. Замените название провайдера с `decort` на `dynamix`.
##### Было
```go
provider "decort" {
authenticator = "decs3o"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://ds1.digitalenergy.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
```
##### Стало
```go
provider "dynamix" {
authenticator = "decs3o"
#controller_url = <DYNAMIX_CONTROLLER_URL>
controller_url = "https://ds1.digitalenergy.online"
#oauth2_url = <DYNAMIX_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
```
Если параметры провайдера указаны в переменных окружения, замените префикс DECORT на DYNAMIX
#### Было
`DECORT_CONTROLLER_URL`
#### Стало
`DYNAMIX_CONTROLLER_URL`
Измените блок описания самого ресурса/датасурса. Замените `decort` на `dynamix`.
##### Было
```go
data "decort_account" "a" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
}
```
##### Стало
```go
data "dynamix_account" "a" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
}
```
Не забудьте изменить название ресурса/датасурса в блоке вывода. Замените `decort` на `dynamix`.
##### Было
```go
output "test" {
value = data.decort_account.a
}
```
##### Стало
```go
output "test" {
value = data.dynamix_account.a
}
```
Для большинства конфигурационных файлов этих изменений будет достаточно. В терминале выполните команду
```bash
terraform init
```
В случае успешной установки, Terraform инициализирует провайдер и будет готов к дальнейшей работе.<br/>
Для ресурсов, которые описаны ниже необходимо сделать несколько дополнительных изменений.
#### Аккаунты account
1. data source `dynamix_account_deleted_list`
- Data source `dynamix_account_deleted_list` теперь имеет название `dynamix_account_list_deleted` и должен быть переименован. Блок `output` так же должен быть изменен.
##### Было
```go
data "dynamix_account_deleted_list" "adl" {
#фильтр по id аккаунта
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по acl
#опциональный параметр
#тип - строка
#acl = "acl"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
output "test" {
value = data.dynamix_account_deleted_list.adl
}
```
##### Стало
```go
data "dynamix_account_list_deleted" "adl" {
#фильтр по id аккаунта
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по acl
#опциональный параметр
#тип - строка
#acl = "acl"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
output "test" {
value = data.dynamix_account_list_deleted.adl
}
```
#### Ресурсная группа rg
1. resource `dynamix_resgroup`
- Блоки `def_net`, `access`, `quota` стали атрибутами и теперь их следует задавать через знак равно.
##### Было
```go
access [{
#имя юзера предоставляемому права
#обязательный параметр при использовании блока
#тип - строка
user = "user@decs3o"
#тип прав
#опциональный параметр
#тип - строка
right = "RCX"
}]
```
```go
def_net {
#тип сети
#обязательный параметр при использовании блока
#тип - строка
net_type = "PUBLIC"
#id сети
#опциональный параметр
#идентификатор сегмента сети. Если net_type — PUBLIC, а net_id — 0,
#то будет выбран сегмент внешней сети по умолчанию. Если net_type
#имеет значение PRIVATE и net_id=0, будет выбран первый vins, определенный для этой ресурсной группы
#в противном случае net_id идентифицирует либо существующий сегмент внешней сети, либо vins
#тип - целое число
net_id = 1234
}
```
```go
quota {
#максимальное количество ядер процессора
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
cpu = 5
#максимальный размер памяти в мегабайтах
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
ram = 1024
#максимальный размер объединенных виртуальных дисков в ГБ
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
disk = 180
#максимальное количество отправленных/полученных сетевых узлов
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
ext_traffic = 21
#максимальное количество назначенных общедоступных IP-адресов
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
ext_ips = 29
}
```
##### Стало
```go
access = [{
#имя юзера предоставляемому права
#обязательный параметр при использовании блока
#тип - строка
user = "user@decs3o"
#тип прав
#опциональный параметр
#тип - строка
right = "RCX"
}]
```
```go
def_net = {
#тип сети
#обязательный параметр при использовании блока
#тип - строка
net_type = "PUBLIC"
#id сети
#опциональный параметр
#идентификатор сегмента сети. Если net_type — PUBLIC, а net_id — 0,
#то будет выбран сегмент внешней сети по умолчанию. Если net_type
#имеет значение PRIVATE и net_id=0, будет выбран первый vins, определенный для этой ресурсной группы
#в противном случае net_id идентифицирует либо существующий сегмент внешней сети, либо vins
#тип - целое число
net_id = 1234
}
```
```go
quota = {
#максимальное количество ядер процессора
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
cpu = 5
#максимальный размер памяти в мегабайтах
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
ram = 1024
#максимальный размер объединенных виртуальных дисков в ГБ
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
disk = 180
#максимальное количество отправленных/полученных сетевых узлов
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
ext_traffic = 21
#максимальное количество назначенных общедоступных IP-адресов
#опциональный параметр
#значение по умолчанию: -1
#тип - целое число
ext_ips = 29
}
```
#### Внутренние сети vins
1. resource `dynamix_vins`
- В блоке `nat_rule` поля `int_ip` и `ext_port_start` стали обязательными. Ранее были опциональными. Необходимо их заполнить.
```go
nat_rule {
#ip внутренний
#обязательный параметр
#тип - строка
int_ip = "192.168.0.28"
#начало диапазона внешних портов
#обязательный параметр
#тип - целое число
ext_port_start = 8001
}
```
#### Виртуальные машины KVM KVMVM
1. resource `dynamix_kvmvm`
- Необходимо полностью удалить удалить блок `disks` из конфигурационного файла. Теперь диски нужно создавать через функцию `dynamix_disk`. В `dynamix_kvmvm` их можно указать в поле `extra_disks`
- Блоки `affinity_rules`, `anti_affinity_rules`, `network`, `tags`,`port_forwarding`, `user_access`, `snapshot`, `rollback`, `cd`, стали атрибутами и теперь их следует задавать через знак равно.
##### Было
```go
affinity_rules {
#тип правила
#обязательный параметр
#возможные значения - compute или node
#тип - строка
topology = "compute"
#строгость правила
#обязательный параметр
#возможные значения - RECOMMENDED и REQUIRED
#тип - строка
policy = "RECOMMENDED"
#режим проверки
#обязательный параметр
#возможные значения - ANY, EQ, NE
#тип - строка
mode = "ANY"
#ключ правила
#обязательный параметр
#тип - строка
key = "testkey"
#ключ правила
#необязательный параметр
#тип - строка
value = "testvalue"
}
```
##### Стало
```go
affinity_rules = [{
#тип правила
#обязательный параметр
#возможные значения - compute или node
#тип - строка
topology = "compute"
#строгость правила
#обязательный параметр
#возможные значения - RECOMMENDED и REQUIRED
#тип - строка
policy = "RECOMMENDED"
#режим проверки
#обязательный параметр
#возможные значения - ANY, EQ, NE
#тип - строка
mode = "ANY"
#ключ правила
#обязательный параметр
#тип - строка
key = "testkey"
#ключ правила
#опциональный параметр
#тип - строка
value = "testvalue"
}]
```
##### Было
```go
anti_affinity_rules {
#тип правила
#обязательный параметр
#возможные значения - compute или node
#тип - строка
topology = "compute"
#строгость правила
#обязательный параметр
#возможные значения - RECOMMENDED и REQUIRED
#тип - строка
policy = "RECOMMENDED"
#режим проверки
#обязательный параметр
#возможные значения - ANY, EQ, NE
#тип - строка
mode = "ANY"
#ключ правила
#обязательный параметр
#тип - строка
key = "testkey"
#ключ правила
#необязательный параметр
#тип -строка
value = "testvalue"
}
```
##### Стало
```go
anti_affinity_rules = [{
#тип правила
#обязательный параметр
#возможные значения - compute или node
#тип - строка
topology = "compute"
#строгость правила
#обязательный параметр
#возможные значения - RECOMMENDED и REQUIRED
#тип - строка
policy = "RECOMMENDED"
#режим проверки
#обязательный параметр
#возможные значения - ANY, EQ, NE
#тип - строка
mode = "ANY"
#ключ правила
#обязательный параметр
#тип - строка
key = "testkey"
#ключ правила
#опциональный параметр
#тип -строка
value = "testvalue"
}]
```
##### Было
```go
network {
#тип сети VINS/EXTNET (для любого драйвера) и VFNIC (для KVM_X86)
#обязательный параметр
#тип - строка
net_type = "VINS"
#id сети
#обязательный параметр
#тип - целое число
net_id = 1234
#ip адрес входящий в сеть
#опциональный параметр
#тип - строка
ip_address = "127.0.0.1"
}
```
##### Стало
```go
network = [{
#тип сети VINS/EXTNET (для любого драйвера) и VFNIC (для KVM_X86)
#обязательный параметр
#тип - строка
net_type = "VINS"
#id сети
#обязательный параметр
#тип - целое число
net_id = 1234
#ip адрес входящий в сеть
#опциональный параметр
#тип - строка
ip_address = "127.0.0.1"
}]
```
##### Было
```go
tags {
#Ключ для тэга
#Обязательный параметр
#тип - строка
key = "key"
#значения тэга
#обязательный параметр
#тип - строка
value = "value"
}
```
##### Стало
```go
tags = [{
#ключ для тэга
#обязательный параметр
#тип - строка
key = "key"
#значения тэга
#обязательный параметр
#тип - строка
value = "value"
}]
```
##### Было
```go
port_forwarding {
#номер внешнего начального порта для правила
#Обязательный параметр
#тип - целое число
public_port_start = 2023
#номер внешнего последнего порта для правила
#опциональный параметр
#тип - целое число
#по умолчанию - -1
public_port_end = 2023
#номер внутреннего базового порта
#обязательный параметр
#тип - целое число
local_port = 80
#сетевой протокол
#Обязательный параметр
#тип - строка
proto = "tcp"
}
```
##### Стало
```go
port_forwarding = [{
#номер внешнего начального порта для правила
#Обязательный параметр
#тип - целое число
public_port_start = 2023
#номер внешнего последнего порта для правила
#опциональный параметр
#тип - целое число
#по умолчанию - -1
public_port_end = 2023
#номер внутреннего базового порта
#обязательный параметр
#тип - целое число
local_port = 80
#сетевой протокол
#Обязательный параметр
#тип - строка
proto = "tcp"
}]
```
##### Было
```go
user_access {
#имя юзера, которому предоставляем доступ
#обязательный параметр
#тип - строка
username = "kasim_baybikov_1@decs3o"
#права: 'R' - только на чтение, 'RCX' - чтение/запись, 'ARCXDU' - админ
#обязательный параметр
#тип - строка
access_type = "ARCXDU"
}
```
##### Стало
```go
user_access = [{
#имя юзера, которому предоставляем доступ
#обязательный параметр
#тип - строка
username = "kasim_baybikov_1@decs3o"
#права: 'R' - только на чтение, 'RCX' - чтение/запись, 'ARCXDU' - админ
#обязательный параметр
#тип - строка
access_type = "ARCXDU"
}]
```
##### Было
```go
snapshot {
#лейбл снапшота
#обязательный параметр
#тип - строка
label = "label1"
}
```
##### Стало
```go
snapshot = [{
#лейбл снапшота
#обязательный параметр
#тип - строка
label = "label1"
}]
```
##### Было
```go
rollback {
#Лейбл снапшота
#Обязательный параметр
#тип - строка
label = "label1"
}
```
##### Стало
```go
rollback = {
#Лейбл снапшота
#Обязательный параметр
#тип - строка
label = "label1"
}
```
##### Было
```go
cd {
#id образа диска CD rom
#обязательный параметр
#тип - целое число
cdrom_id = 344
}
```
##### Стало
```go
cd = {
#id образа диска CD rom
#обязательный параметр
#тип - целое число
cdrom_id = 344
}
```

@ -0,0 +1 @@
В данном разделе представлены _data_source_ функции провайдера.

@ -0,0 +1 @@
В данном разделе представлены функции для взаимодействия с пользовательской группой API.

@ -0,0 +1,288 @@
_Data source_ функция **dynamix_kvmvm** служит для получения информации об уже существующей в облачной платформе виртуальной машине (Virtual Machine, VM), созданной на базе системы виртуализации KVM.
## Аргументы
_Data source_ функция **dynamix_kvmvm** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| compute_id | int | :heavy_check_mark: | Идентификатор экземпляра _compute_, соответствующего данной виртуальной машине (подробнее о понятии _compute_ см. в разделе [Обзор облачной платформы DYNAMIX](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/03.-Обзор-облачной-платформы-DYNAMIX.md)). |
Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанному виртуальному серверу и ресурсной группе. В противном случае возникнет ошибка доступа.
Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DYNAMIX (см. [подробности](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_kvmvm** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание
| --- | --- | --- |
| acl | []Struct [см. ниже](#описание-структуры-acl) | Cписок Acces Control |
| account_id | int | Уникальный идентификатор подписчика-владельца ("account") данной виртуальной машины |
| account_name | string | Имя подписчика, которому принадлежит данная виртуальная машина |
| affinity_label | string | Лейбл аффинити |
| affinity_rules | []Struct [см. ниже](#описание-структуры-affinity-rules) | Правила аффинити для компьютов |
| affinity_weight | int | weight аффинити |
| arch | string | Архитектура |
| auto_start_w_node | bool | Автостарт при рестарте ноды |
| boot_order | []string | Boot order |
| boot_disk_id | int | Идентификатор загрузочного диска виртуальной машины |
| boot_disk_size | int | Размер загрузочного диска в ГБ |
| chipset | string | Тип эмулируемой системы |
| cd_image_id | int | ID cd image id |
| clone_reference | int | кол-во клонов |
| clones | []int | id клонов |
| computeci_id | int | Id computeci |
| cpu_pin | bool | Необходимость запускать ВМ на выделенных CPU ядрах |
| cpus | int | Количество виртуальных CPU, выделенных данному серверу |
| created_by | string | Кем создан ресурс |
| created_time | int | Время создания ресурса |
| custom_fields | []Struct [см. ниже](#описание-структуры-custom-fields) | Кастомные поля |
| deleted_by | string | Кем удален ресурс |
| deleted_time | int | Время удаления ресурса |
| desc | string | Текстовое описание виртуальной машины |
| devices | string | Девайсы |
| disks | []Struct [см. ниже](#описание-структуры-disks) | информация о дисках компьюта |
| driver | string | Аппаратная архитектура данной виртуальной машины |
| gid | int | GID |
| guid | int | GUID |
| hp_backed | bool | Необходимость использовать для выделения RAM виртуальной машины Huge Pages ядрах |
| image_id | int | Идентификатор образа ОС, на базе которого создан загрузочный диск этой виртуальной машины |
| image_name | string | Имя образа ОС, на базе которого создан загрузочный диск этой виртуальной машины |
| interfaces | []Struct [см. ниже](#описание-структуры-interfaces) | Информация о интерфейсах компьюта |
| lock_status | string | Статус доступности |
| manager_id | int | Manager id |
| manager_type | string | Type manager |
| migrationjob | int | Migrationjob |
| milestones | int | Вехи |
| name | string | Имя виртуального сервера |
| natable_vins_id | int | NAT vins id |
| natable_vins_ip | string | NAT vins ip |
| natable_vins_name | string | NAT vins name |
| natable_vins_network | string | NAT vins network |
| natable_vins_network_name | string | NAT vins network name |
| need_reboot | bool | флаг, указывающий, что требуется перезагрузка |
| numa_affinity | string | Необходимость выравнивать ВМ по NUMA |
| numa_node_id | int | ID узла NUMA |
| os_users | []Struct [см. ниже](#описание-структуры-os-users) | Имена и пароли пользователей гостевой ОС, установленные платформой при создании виртуального сервера. Формат структуры:<br/>* (string) `login` - учётная запись в гостевой ОС.<br/>* (string) `password` - пароль к этой учётной записи. |
| pci_devices | []int | Список PCI девайсов |
| pinned | bool | добавлен ли компьют на стек |
| preferred_cpu | []int | список ядер для использования в механизме vcpupinning |
| ram | int | Объём оперативной памяти в МБ, выделенной этой виртуальной машине |
| reference_id | string | ID reference |
| registered | bool | Компьют зарегестрирован |
| res_name | string | Res name |
| reserved_node_cpus | []int | Количество зарезервированных CPU в узле |
| rg_id | int | Идентификатор ресурсной группы, к которой принадлежит виртуальная машина |
| rg_name | string | Имя ресурсной группы, к которой принадлежит виртуальная машина |
| snap_sets | []Struct [см. ниже](#описание-структуры-snap-sets) | Snap sets |
| status | string | Cтатус |
| tags | map[string]string | Тэги |
| tech_status | string | Технический статус |
| updated_by | string | Кем обновлен ресурс |
| updated_time | int | Время обновления ресурса |
| user_managed | bool | User managed |
| userdata | string | Параметры cloud_init |
| vgpus | []int | Список vgpu |
| virtual_image_id | int | ID виртуального образа |
| virtual_image_name | string | Имя образа ОС, на базе которого создан загрузочный диск этой виртуальной машины |
| vnc_password | string | VNC пароль |
### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_acl | []Struct [см. ниже](#описание-структуры-List-acl) | Информация о списке пользователей аккаунтов |
| compute_acl | []Struct [см. ниже](#описание-структуры-List-acl) | Информация о списке пользователей компьютов |
| rg_acl | []Struct [см. ниже](#описание-структуры-List-acl) | Информация о списке пользователей ресурной группы |
### Описание структуры affinity rules
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | guid |
| key | string | Ключ |
| mode | string | Режим сравнения |
| policy | string | Степень "строгости" этого правила |
| topology | string | Топология |
| value | string | Значение |
### Описание структуры List acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| explicit | bool | Явно ли указан доступ |
| guid | string | guid Ресурса |
| right | string | Права на ресурс |
| status | string | Статус ресурса |
| type | string | Тип ресурса |
| user_group_id | string | ID user group |
### Описание структуры custom fields
| Параметр | Тип | Описание |
| --- | --- | --- |
| key | string | Ключ |
| val | string | Значение |
### Описание структуры os users
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | GUID |
| login | string | Логин |
| password | string | Пароль |
| public_key | string | Публичный ssh ключ |
### Описание структуры disks
| Параметр | Тип | Описание |
| --- | --- | --- |
| _ckey | string | ckey |
| acl | string | Acces Control List |
| account_id | int | ID аккаунта |
| bus_number | int | Номер шины |
| boot_partition | int | Загрузочный раздел |
| created_time | int | Время создания диска |
| deleted_time | int | Время удаления диска |
| description | string | Описание |
| destruction_time | int | Время удаления |
| disk_path | string | Путь диска |
| gid | int | GID |
| guid | int | GUID |
| disk_id | int | ID диска |
| image_id | int | ID образа |
| images | []int | Список образов |
| iotune | []Struct [см. ниже](#описание-структуры-iotune) | Ограничения диска |
| iqn | string | iqn диска |
| login | string | Логин для доступа к диску |
| milestones | int | Вехи |
| name | string | Наименование диска |
| order | int | Номер диска |
| params | string | Параметры диска |
| parent_id | int | id родительского диска |
| passwd | string | Пароль для доступа к диску |
| pci_slot | int | id pci слота, к которому подключен диск |
| pool | string | Имя пула в системе хранения, на ресурсах которой размещён данный диск |
| present_to | []int | Список ID ресурсов, которым предоставлен диск |
| purge_time | int | Время последней попытки |
| replication | Struct{} [см. ниже](#описание-структуры-replication) | Информация о реплике диска |
| reality_device_number | int | Реальный номер устройства |
| res_id | int | id ресурса |
| role | string | Роль диска |
| sep_id | int | Идентификатор Storage Endpoint Provider (SEP). SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск |
| shareable | bool | Флаг, отвечающий за доступность диска дургим ресурсам |
| size_max | int | Размер диска в ГБ |
| size_used | float | Кол-во используемого места, в ГБ |
| snapshots | []Struct{}[см. ниже](#описание-структуры-snapshots) | Снимки состояния диска |
| status | string | Статус диска |
| tech_status | string | Технический статус диска |
| type | string | Тип диска с точки зрения его роли в составе _compute_. Может принимать одно из фиксированных значений:<br/>"B" - признак загрузочного диска ("boot").<br/>"D" - признак дополнительного диска ("data") |
| vmid | int | Идентификатор виртуальной машины (устаревшее) |
### Описание структуры iotune
| Параметр | Тип | Описание |
| --- | --- | --- |
| read_bytes_sec | int | Кол-во байт для чтения в секунду |
| read_bytes_sec_max | int | Максимальное кол-во байт для чтения |
| read_iops_sec | int | Кол-во операций чтения io в секунду | |
| read_iops_sec_max | int | Максимальное число io операций чтения |
| size_iops_sec | int | Размер io операций |
| total_bytes_sec | int | Общий размер байт в секунду |
| total_bytes_sec_max | int | Максимальный общий размер байт в секунду |
| total_iops_sec | int | Общее кол-во io операций в секунду |
| total_iops_sec_max | int | Максимальное общее кол-во io операций в секунду |
| write_bytes_sec | int | Кол-во байт для записи в секунду |
| write_bytes_sec_max | int | Максимальное кол-во байт для записи в секунду |
| write_iops_sec | int | Кол-во операций записи в секунду |
| write_iops_sec_max | int | Максимальное число операций записей |
### Описание структуры replication
| Параметр | Тип | Описание |
| --- | --- | --- |
| disk_id | int | id диска |
| pool_id | string | id пула |
| role | string | Роль диска (главный или реплика) |
| self_volume_id | string | id раздела |
| storage_id | int | id хранилища |
| volume_id | int | id раздела |
### Описание структуры snapshots
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | id снимка |
| label | string | Наименование снимка |
| res_id | string | Ссылка на снимок |
| snap_set_guid | string | Установленный id снимка |
| reference_id | int | Reference ID |
| snap_set_time | int | Установленное время снимка |
| timestamp | int | Время снимка |
### Описание структуры interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| bus_number | int | Номер шины |
| conn_id | int | ID connect |
| conn_type | string | Тип connect |
| enabled | bool | Доступность подключения |
| def_gw | string | Шлюз по умолчанию |
| flip_group_id | int | id flip group |
| guid | string | GUID |
| ip_address | string | IP адрес |
| libvirt_settings | []Struct{}[см. ниже](#описание-структуры-libvirt_settings) | Параметры libvirt virtio интерфейса |
| listen_ssh | bool | открыт ли ssh connect |
| mac | string | MAC адрес устройства |
| name | string | Имя |
| net_id | int | ID сети |
| netmask | int | Маска сети |
| net_type | string | Тип сети |
| node_id | int | ID узла |
| pci_slot | int | Pci Slot |
| qos | []Struct{}[см. ниже](#описание-структуры-qos) | QOS |
| target | string | Цель сети |
| type | string | Тип |
| vnfs | []int | VNFS |
### Описание структуры libvirt_settings
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | GUID |
| txmode | string | TX mode |
| ioeventfd | string | IO event |
| event_idx | string | Event ID |
| queues | int | Количество очередей |
| rx_queue_size | int | Длина очереди RX |
| tx_queue_size | int | Длина очереди TX |
### Описание структуры qos
| Параметр | Тип | Описание |
| --- | --- | --- |
| e_rate | int | E rate |
| guid | string | ID ресурса |
| in_brust | int | In brust |
| in_rate | int | In rate |
### Описание структуры snap sets
| Параметр | Тип | Описание |
| --- | --- | --- |
| disks | []int | Список id дисков |
| guid | string | GUID |
| label | string | Лейбл |
| timestamp | int | Время |
## Пример использования
В нижеприведённом примере посредством вызова _data source_ функции **dynamix_kvmvm** извлекается информация об уже существующем в платформе виртуальном сервере со следующими характеристиками:
* Имя сервера _MyOldVM_;
* Идентификатор ресурсной группы, в которой находится данный сервер - 123.
```terraform
data "dynamix_kvmvm" "comp" {
#получение информации по идентификатору машины - compute_id
#id виртуальной машины
#обязательный параметр
#тип - целое число
compute_id = 11346
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
Чтобы получить идентификатор ресурсной группы (аргумент `rg_id`), можно воспользоваться _data source_ функцией [dynamix_resgroup](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.12-Data_dynamix_rg_list.md).
После успешного завершения такого вызова **dynamix_kvmvm** в переменной `data.dynamix_kvmvm.comp` будут сохранены возвращаемые значения. Так, например:
* пароль для доступа в гостевую ОС, назначенный по умолчанию при создании VM - `"data.dynamix_kvmvm.comp.os_users.0.password`
* идентификатор образа ОС, на базе которого была создана данная VM - `data.dynamix_kvmvm.comp.image_id`
* текущий объём ОЗУ - `data.dynamix_kvmvm.comp.ram`

@ -0,0 +1,115 @@
_Data source_ функция **dynamix_resgroup** служит для получения информации об уже существующей ресурсной группе.
Ресурсная группа в облачной платформе DYNAMIX это способ группирования _compute_-ов (например, по функциональному признаку или принадлежности к одному и тому же проекту). Ресурсную группу можно рассматривать как небольшой персональный дата-центр, в котором размещаются один или несколько серверов и виртуальных сетевых сегментов (ViNS).
Экземпляры _compute_ (виртуальные серверы) всегда создаются в принадлежности к какой-либо ресурсной группе. Как следствие, для создания экземпляра _compute_ помимо других параметров требуется указать идентификатор целевой ресурсной группы. Для получения такого идентификатора можно воспользоваться рассматриваемой здесь _data source_ функцией **dynamix_resgroup**.
## Аргументы
_Data source_ функция **dynamix_resgroup** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| rg_id | int | :heavy_check_mark: | Идентификатор ресурсной группы, по которой требуется получить информацию. Идентификатор не может быть нулевым.<br/>Вы можете задать или `rg_id`, или `name`. Если задан параметр `rg_id`, то параметр `name` игнорируся. |
Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанному `account` и ресурсной группе. В противном случае возникнет ошибка доступа.
Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DYNAMIX (см. [подробности](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_resgroup** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание |
| --- | --- | --- |
| resources | Struct{} [см. ниже](#описание-структуры-resources) | Информация о занимаемых ресурсах |
| account_id | int | Уникальный идентификатор подписчика-владельца данной ресурсной группы. |
| account_name | string | Имя подписчика ("account"), которому принадлежит данная ресурсная группа. |
| compute_features | []string | Доступ к дополнительным функциям управления ВМ |
| acl | []Struct [см. ниже](#описание-структуры-acl) | Cписок Acces Control |
| created_by | string | Кем создан ресурс |
| created_time | int | Время создания ресурса |
| def_net_id | int | Уникальный идентификатор сети, установленной по умолчанию для данной ресурсной группы. Экземпляры _compute_, создаваемые в данной ресурсной группе, по умолчанию будут иметь подключение к данной сети, если при их создании явно не указано иное.<br/>Для `def_net_type = "EXTNET" в этом параметре указан идентификатор внешней сети. Для `def_net_type = "PRIVATE" - идентификатор ViNS. |
| def_net_type | string | Тип сети, установленной по умолчанию для данной ресурсной группы. Может принимать одно из следующих значений:<br> * EXTNET - подключение во внешнюю сеть с идентификатором `def_net_id`<br> * PRIVATE - подключение в виртуальный сетевой сегмент (ViNS ) с идентификатором `def_net_id`<br> * NONE - сеть по умолчанию не задана, экземпляры _compute_ в данной ресурсной группе будут создаваться без сетевых подключений, если при их создании явно не указано иное. |
| deleted_by | string | Кем удален ресурс |
| deleted_time | int | Время удаления ресурса |
| desc | string | Текстовое описание данной ресурсной группы. |
| dirty | bool | Dirty |
| gid | int | Идентификатор grid, которому будет принадлежать создаваемая ресурсная группа. |
| guid | int | GUID |
| lock_status | string | Lock статус |
| milestones | int | Milestones |
| name | string | Имя данной ресурсной группы. Обратите внимание, что имя ресурсной группы является уникальным только в рамках одного и того же подписчика ("account"). |
| register_computes | bool | Флаг отвечающий за то зарегестрированы ли компьюты |
| resource_limits | [см. ниже](#описание-структуры-resource-limits) | Лимиты ресурсов |
| secret | string | Секрет |
| status | string | Статус resgroup |
| updated_by | string | Кем был сделан апдейт |
| updated_time | int | Время апдейта |
| vins | []int | Список id виртуальных сетей |
| computes | []int | Список id компьютов |
| cpu_allocation_parameter | string | Параметр выделения CPU |
| cpu_allocation_ratio | float | Отношение выделения CPU |
| res_types | []string | Res types |
| uniq_pools | []string | Uniq pools |
| id | int | Идентификатор данной ресурсной группы. |
### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| explicit | bool | Явно ли указан доступ |
| guid | string | guid Ресурса |
| right | string | Права на ресурс |
| status | string | Статус ресурса |
| type | string | Тип ресурса |
| user_group_id | string | ID user group |
### Описание структуры resources
| Параметр | Тип | Описание |
| --- | --- | --- |
| current | Struct{} [см. ниже](#описание-структуры-current-и-reserved) | Информация о текуших ресурсах |
| reserved | Struct{} [см. ниже](#описание-структуры-current-и-reserved) | Информация о зарезверированных аккаунтом ресурсах |
### Описание структуры current и reserved
| Параметр | Тип | Описание |
| --- | --- | --- |
| cpu | int | Количество CPU |
| disk_size | int | Размер диска |
| disk_size_max | int | Максимальный размер диск |
| extips | int | Внешние IPs |
| exttraffic | int | Внешний Traffic |
| gpu | int | Количество GPU |
| ram | int | Количество RAM |
| seps | []Struct{} [см . ниже](#описание-структуры-seps) | Информация о seps |
### Описание структуры seps
| Параметр | Тип | Описание |
| --- | --- | --- |
| sep_id | int | ID SEP |
| data_name | string | Имя пула информации внутри SEP'а |
| disk_size | int | Количество занятого места |
| disk_size_max | int | Размер диска |
### Описание структуры resources limits
| Параметр | Тип | Описание |
| --- | --- | --- |
| cu_c | float | Количество ядер CPU |
| cu_d | float | Размер диска |
| cu_i | float | Количество публичных IP адресов |
| cu_m | float | размер RAM |
| cu_np | float | Хранилище траффика |
| gpu_units | float | количество GPU ядер |
## Пример использования
Пример вызова _data source_ функции **dynamix_resgroup**:
```terraform
data "dynamix_resgroup" "rg" {
#id ресурсной группы
#обязательный параметр
#тип - целое число
rg_id = 1535
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md) и [пример](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/02.-Пример-работы.md)).
После успешного завершения такого вызова **dynamix_resgroup** в переменной `data.dynamix_resgroup.rg` будут сохранены возвращаемые значения. В частности, для получения идентификатора ресурсной группы следует использовать конструкцию `data.dynamix_resgroup.rg.id`

@ -0,0 +1,110 @@
_Data source_ функция **dynamix_disk** служит для получения информации об уже существующем диске.
## Аргументы
_Data source_ функция **dynamix_disk** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| disk_id | int | :heavy_check_mark: | Идентификатор диска |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | Уникальный идентификатор подписчика-владельца диска |
| account_name | string | Имя подписчика ("account"), которому принадлежит данный диск |
| computes | Struct{} [см. ниже](#описание-структуры-computes) | Информация о компьютах (виртуальных машинах) |
| created_time | int | Время создания |
| deleted_time | int | Время удаления |
| desc | string | Текстовое описание диска |
| destruction_time | int | Время окончательного удаления |
| devicename | string | Наименование устройства |
| disk_id | int | Идентификатор диска. Дублирует значение параметра `id`. |
| disk_path | string | Адрес диска |
| gid | int | Идентификатор площадки (grid id) |
| id | int | Идентификатор диска |
| image_id | int | Идентификатор образа, содержимое которого было склонировано/скопировано в данный диск при его создании. 0 означает, что данный диск не создавался как клон/копия какого-либо образа |
| images | []int | Идентификаторы образов, использующих диск |
| iotune | Struct{}[см. ниже](#описание-структуры-iotune) | Информация об ограничениях IO диска |
| disk_name | string | Наименование диска |
| order | int | Номер диска |
| params | string | Параметры диска |
| parent_id | int | id родительского диска |
| pci_slot | int | id pci слота, к которому подключен диск |
| pool | string | Имя пула в системе хранения, на ресурсах которой размещён данный диск |
| present_to | []int | Список ID ресурсов, которым предоставлен диск |
| purge_time | int | Время последней попытки |
| replication | Struct{} [см. ниже](#описание-структуры-replication) | Информация о реплике диска |
| res_id | int | id ресурса |
| res_name | string | Наименование ресурса |
| role | string | Роль диска |
| sep_id | int | Идентификатор Storage Endpoint Provider (SEP). SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск |
| sep_type | string | Тип SEP. Определяет тип системы хранения и содержит одно из заданных в облачной платформе значений |
| shareable | bool | Флаг, отвечающий за доступность диска дургим ресурсам |
| size_max | int | Размер диска в ГБ |
| size_used | float | Кол-во используемого места, в ГБ |
| snapshots | []Struct{}[см. ниже](#описание-структуры-snapshots) | Снимки состояния диска |
| status | string | Статус диска |
| tech_status | string | Технический статус диска |
| type | string | Тип диска с точки зрения его роли в составе _compute_. Может принимать одно из фиксированных значений:<br/>"B" - признак загрузочного диска ("boot").<br/>"D" - признак дополнительного диска ("data") |
| vmid | int | Идентификатор виртуальной машины (устаревшее) |
### Описание структуры computes
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | Идентификатор компьюта |
| compute_name | string | Имя компьюта |
### Описание структуры iotune
| Параметр | Тип | Описание |
| --- | --- | --- |
| read_bytes_sec | int | Кол-во байт для чтения в секунду |
| read_bytes_sec_max | int | Максимальное кол-во байт для чтения |
| read_iops_sec | int | Кол-во операций чтения io в секунду |
| read_iops_sec_max | int | Максимальное число io операций чтения |
| size_iops_sec | int | Размер io операций |
| total_bytes_sec | int | Общий размер байт в секунду |
| total_bytes_sec_max | int | Максимальный общий размер байт в секунду |
| total_iops_sec | int | Общее кол-во io операций в секунду |
| total_iops_sec_max | int | Максимальное общее кол-во io операций в секунду |
| write_bytes_sec | int | Кол-во байт для записи в секунду |
| write_bytes_sec_max | int | Максимальное кол-во байт для записи в секунду |
| write_iops_sec | int | Кол-во операций записи в секунду |
| write_iops_sec_max | int | Максимальное число операций записей |
### Описание структуры replication
| Параметр | Тип | Описание |
| --- | --- | --- |
| disk_id | int | id диска |
| pool_id | string | id пула |
| role | string | Роль диска (главный или реплика) |
| self_volume_id | string | id раздела |
| storage_id | int | id хранилища |
| volume_id | int | id раздела |
### Описание структуры snapshots
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | id снимка |
| label | string | Наименование снимка |
| res_id | string | Ссылка на снимок |
| snap_set_guid | string | Установленный id снимка |
| snap_set_time | int | Установленное время снимка |
| timestamp | int | Время снимка |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk**:
```terraform
data "dynamix_disk" "acl" {
#фильтр по id диска
#обязательный параметр
#тип - целое число
disk_id = 49304
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md) и [пример](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/02.-Пример-работы.md)).
После успешного завершения такого вызова **dynamix_disk** в переменной `data.dynamix_disk.my_data_disk` будут сохранены возвращаемые значения. В частности, для получения наименования диска следует использовать конструкцию `data.dynamix_disk.my_data_disk.acl`

@ -0,0 +1,292 @@
_Data source_ функция **dynamix_vins** служит для получения информации об уже существующем виртуальном сетевом сегменте (Virtual Network Segment, ViNS).
## Аргументы
_Data source_ функция **dynamix_vins** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| vins_id | int | :heavy_check_mark: | ID виртуальной сети |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_vins** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание |
| --- | --- | --- |
| vnf_dev | []Struct{} [см. ниже](#описание-структуры-vnf_dev) | VNFDEV |
| \_ckey | string | CKey |
| account_id | int | Уникальный идентификатор подписчика-владельца ViNS. |
| account_name | string | Имя подписчика ("account"), которому принадлежит ViNS. |
| computes | []Struct{} [см. ниже](#описание-структуры-computes) | Информация о компьютах |
| default_gw | string | Шлюз по умолчанию |
| default_qos | []Struct{} [см. ниже](#описание-структуры-qos) | qos виртуальной сети |
| desc | string | Текстовое описание ViNS. |
| gid | int | Grid ID |
| guid | int | ID ресурса |
| lock_status | string | Статус доступа виртуальной сети |
| manager_id | int | ID manager |
| manager_type | string | Type of manager |
| milestones | int | Milestones |
| name | string | Имя ViNS. |
| net_mask | int | Маска подсети |
| network | string | Сеть Vins |
| pre_reservations_num | int | Кол-во зарезервированных ip адресов |
| redundant | bool | Redudant |
| rg_id | int | Идентификатор ресурсной группы, на уровне которой создан ViNS. Для ViNS, существующих на уровне "account", данный параметр будет равен 0. |
| rg_name | string | Имя ресурсной группы |
| sec_vnf_dev_id | int | ID sec vnf |
| status | string | Статус |
| user_managed | bool | Флаг user managed |
| vnfs | []Struct{} [см. ниже](#описание-структуры-vnfs) | VNFS |
| vxlan_id | int | ID vxlan |
### Описание структуры vnf_dev
| Параметр | Тип | Описание |
| --- | --- | --- |
| \_ckey | string | Ckey |
| account_id | int | ID аккаунта |
| capabilities | []string | Возможности vnf_dev |
| config | Struct{} [см. ниже](#описание-структуры-config) | Конфиг VNF |
| config_saved | bool | Флаг, отвечающий за то сохранен ли конфиг |
| custom_pre_cfg | bool | Custom |
| desc | string | Описание |
| gid | int | Grid ID |
| guid | int | ID ресурса |
| vnf_id | int | ID vnf |
| interfaces | []Struct{} [см. ниже](#описание-структуры-interfaces) | Информация о интерфейсах |
| lock_status | string | Статус доступа vnf_dev |
| milestones | int | Этапы |
| vnf_name | string | Имя VNF |
| status | string | Статус |
| tech_status | string | Технический статус |
| type | string | Тип vnf |
| vins | []int | Список виртуальных сетей |
| vnc_password | string | VNC пароль |
### Описание структуры config
| Параметр | Тип | Описание |
| --- | --- | --- |
| mgmt | Struct{} [см. ниже](#описание-структуры-mgmt) | Config Mgmt |
| resources | []Struct{} [см. ниже](#описание-структуры-resources) | Config resources |
### Описание структуры mgmt
| Параметр | Тип | Описание |
| --- | --- | --- |
| ip_addr | string | IP адрес mgmt |
| password | string | Пароль юзера |
| ssh_key | string | Публичный SSH ключ |
| user | string | Имя юзера |
### Описание структуры resources
| Параметр | Тип | Описание |
| --- | --- | --- |
| cpu | int | Кол-во cpu ресурса |
| ram | int | Кол-во ram ресурса |
| stack_id | int | ID stack ресурса |
| uuid | string | UUID ресурса |
### Описание структуры interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| bus_number | int | Номер шины |
| conn_id | int | ID коннекта |
| conn_type | string | Тип коннекта |
| def_gw | string | Шлюз по умолчанию |
| flipgroup_id | int | ID flipgroup |
| guid | string | ID ресурса |
| ip_address | string | IP адрес интерфейса |
| libvirt_settings | []Struct{}[см. ниже](#описание-структуры-libvirt_settings) | Параметры libvirt virtio интерфейса |
| listen_ssh | bool | Флаг, говорящий о том, слушается ли ssh |
| mac | string | MAC адрес интерфейса |
| mtu | int | Максимальный размер пакета, который может быть передан по сети без фрагментации |
| name | string | Имя интерфейса |
| net_id | int | ID сети |
| net_mask | int | Маска |
| net_type | string | Тип сети |
| node_id | int | ID узла |
| pci_slot | int | Слот pci |
| qos | Struct{} [см. ниже](#описание-структуры-qos) | QOS |
| target | string | Таргет интерфейса |
| type | string | Тип интерфейса |
| vnfs | []int | Список ID vnf |
### Описание структуры libvirt_settings
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | GUID |
| txmode | string | TX mode |
| ioeventfd | string | IO event |
| event_idx | string | Event ID |
| queues | int | Количество очередей |
| rx_queue_size | int | Длина очереди RX |
| tx_queue_size | int | Длина очереди TX |
### Описание структуры computes
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта |
| compute_name | string | Имя компьюта |
### Описание структуры qos
| Параметр | Тип | Описание |
| --- | --- | --- |
| e_rate | int | E rate |
| guid | string | ID ресурса |
| in_brust | int | In brust |
| in_rate | int | In rate |
### Описание структуры vnfs
| Параметр | Тип | Описание |
| --- | --- | --- |
| dhcp | []Struct{} [см. ниже](#описание-структуры-dhcp) | информаиця о DHCP |
| gw | []Struct{} [см. ниже](#описание-структуры-gw) | GW |
| nat | []Struct{} [см. ниже](#описание-структуры-nat) | NAT |
### Описание структуры dhcp
| Параметр | Тип | Описание |
| --- | --- | --- |
| \_ckey | string | CKey |
| account_id | int | Уникальный идентификатор подписчика-владельца ViNS. |
| config | Struct{} [см. ниже](#описание-структуры-dhcp-config) | Информация о DHCP конфиге |
| created_time | int | Время создания |
| devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| dhcp_id | int | ID dhcp |
| lock_status | string | Статус доступа виртуальной сети |
| milestones | int | Milestones |
| owner_id | int | ID владельца |
| owner_type | string | Тип владельца |
| pure_virtual | bool | Флаг, показывающий является ли ресурс чисто виртуальным |
| status | string | Статус |
| tech_status | string | Технический статус |
| type | string | Тип ресурса |
### Описание структуры dhcp config
| Параметр | Тип | Описание |
| --- | --- | --- |
| default_gw | string | Шлюз по умолчанию |
| dns | []string | Список dns |
| ip_end | string | Конец диапазона IP адресов |
| ip_start | string | Старт диапазона IP адресов |
| lease | int | срок |
| netmask | int | Маска сети |
| network | string | Сеть |
| reservations | []Struct{} [см. ниже](#описание-структуры-reservations) | Информация о резервациях |
### Описание структуры reservations
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | Тип ID аккаунта |
| ip | string | IP адрес |
| mac | string | MAC адрес |
| type | string | Тип |
| vm_id | int | ID виртуальной машины |
### Описание структуры devices
| Параметр | Тип | Описание |
| --- | --- | --- |
| primary | Struct{} [см. ниже](#описание-структуры-primary) | Первичная информация |
### Описание структуры primary
| Параметр | Тип | Описание |
| --- | --- | --- |
| dev_id | int | ID dev |
| iface01 | string | Интерфейс 1 |
| iface02 | string | Интерфейс 2 |
### Описание структуры gw
| Параметр | Тип | Описание |
| --- | --- | --- |
| \_ckey | string | CKey |
| account_id | int | Уникальный идентификатор подписчика-владельца ViNS. |
| config | Struct{} [см. ниже](#описание-структуры-gw-config) | Информация о конфиге |
| created_time | int | Время создания |
| devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| gw_id | int | ID GW |
| lock_status | string | Статус доступа виртуальной сети |
| milestones | int | Milestones |
| owner_id | int | ID владельца |
| owner_type | string | Тип владельца |
| pure_virtual | bool | Флаг, показывающий является ли ресурс чисто виртуальным |
| status | string | Статус |
| tech_status | string | Технический статус |
| type | string | Тип ресурса |
### Описание структуры gw config
| Параметр | Тип | Описание |
| --- | --- | --- |
| default_gw | string | Шлюз по умолчанию |
| ext_net_id | int | ID внешней сети |
| ext_net_ip | string | IP внешней сети |
| ext_netmask | int | Маска внешней сети |
| qos | Struct{} [см. ниже](#описание-структуры-qos) | QOS |
### Описание структуры nat
| Параметр | Тип | Описание |
| --- | --- | --- |
| \_ckey | string | CKey |
| account_id | int | Уникальный идентификатор подписчика-владельца ViNS. |
| created_time | int | Время создания |
| config | Struct{} [см. ниже](#описание-структуры-nat-config) | Информация о конфиге |
| devices | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| nat_id | int | ID NAT |
| lock_status | string | Статус доступа виртуальной сети |
| milestones | int | Milestones |
| owner_id | int | ID владельца |
| owner_type | string | Тип владельца |
| pure_virtual | bool | Флаг, показывающий является ли ресурс чисто виртуальным |
| status | string | Статус |
| tech_status | string | Технический статус |
| type | string | Тип ресурса |
### Описание структуры nat config
| Параметр | Тип | Описание |
| --- | --- | --- |
| net_mask | int | Маска сети |
| network | string | Сеть |
| rules | []Struct{} [см. ниже](#описание-структуры-rules) | Правила NAT |
### Описание структуры rules
| Параметр | Тип | Описание |
| --- | --- | --- |
| rule_id | int | ID правила |
| local_ip | string | Локальный IP адрес |
| local_port | int | Локальный порт |
| protocol | string | Протокол |
| public_port_end | int | Конец диапазона портов |
| public_port_start | int | Начало диапазона портов |
| vm_id | int | ID виртуальной машины |
| vm_name | string | Имя виртуальной машины |
## Пример использования
Пример вызова _data source_ функции **dynamix_vins**:
```terraform
data "dynamix_vins" "vins" {
#обязательный параметр
#id желаемого vins
#тип - целое число
vins_id = 10101
}
```
После успешного завершения такого вызова **dynamix_vins** в переменной `data.dynamix_vins.vins` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.dynamix_vins.vins.id`

@ -0,0 +1,113 @@
_Data source_ функция **dynamix_account** служит для получения информации об аккаунте.
## Аргументы
_Data source_ функция **dynamix_account** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунте |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| meta | []string | Мета информация |
| resources | Struct{} [см. ниже](#описание-структуры-resources) | Информация о ресурсах |
| acl | []Struct{} [см. ниже](#описание-структуры-acl) | Более подробная информация об аккаунтах |
| company | string | Название компании, которой принадлежит аккаунт |
| companyurl | string | url-адрес компани |
| compute_features | []string | Доступ к дополнительным функциям управления ВМ |
| created_by | string | Пользователь - создателя аккаунта |
| created_time | int | Время создания аккаунта |
| deactivation_time | float | Время деактивации аккаунта |
| deleted_by | string | Пользователь, удаливший аккаунт |
| deleted_time | int | Время удаления аккаунта |
| displayname | string | Отображаемое имя аккаунта |
| guid | int | Внутренний guid аккаунта |
| resource_limits | Struct{} [см. ниже](#описание-структуры-resource_limits) | Ограничения ресурсов |
| send_access_emails | bool | Флаг, отправлять ли на указанную почту письмо о доступе |
| service_account | bool | Флаг, является ли аккаунт аккаунтом-обслуживания |
| status | string | Статус аккаунта |
| updated_time | int | Время последнего обновления |
| version | int | Версия аккаунта |
| vins | []int | Список id виртуальных сетей |
| vinses | []int | Список id виртуальных сетей |
| cpu_allocation_parameter | string | Параметр выделения CPU |
| cpu_allocation_ratio | float | Отношение выделения CPU |
### Описание структуры resources
| Параметр | Тип | Описание |
| --- | --- | --- |
| current | Struct{} [см. ниже](#описание-структуры-current) | Информация о текуших ресурсах |
| reserved | Struct{} [см. ниже](#описание-структуры-reserved) | Информация о зарезверированных аккаунтом ресурсах |
### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| can_be_deleted | bool | Может ли быть удален |
| explicit | bool | Видимость аккаунта |
| guid | string | GUID |
| right | string | Права |
| status | string | Статус |
| type | string | Тип |
| user_group_id | string | ID группы юзеров |
### Описание структуры resource_limits
| Параметр | Тип | Описание |
| --- | --- | --- |
| cu_c | float | Количество ядер CPU |
| cu_d | float | Размер диска |
| cu_dm | float | Использованный размер хранилища виртуального диска |
| cu_i | float | Количество публичных IP адресов |
| cu_m | float | размер RAM |
| cu_np | float | Хранилище траффика |
| gpu_units | float | количество GPU ядер |
### Описание структуры computes
| Параметр | Тип | Описание |
| --- | --- | --- |
| started | int | Количество запущенных ВМ |
| stopped | int | Количество остановленных ВМ |
### Описание структуры machines
| Параметр | Тип | Описание |
| --- | --- | --- |
| halted | int | Количество остановленных ВМ |
| running | int | Количество запущенных ВМ |
### Описание структуры current и reserved
| Параметр | Тип | Описание |
| --- | --- | --- |
| cpu | int | Количество CPU |
| disksize | int | Размер диска |
| extips | int | Внешние IPs |
| exttraffic | int | Внешний Traffic |
| gpu | int | Количество GPU |
| ram | int | Количество RAM |
| seps | []Struct{} [см . ниже](#описание-структуры-seps) | Информация о seps |
### Описание структуры seps
| Параметр | Тип | Описание |
| --- | --- | --- |
| sep_id | int | ID SEP |
| data_name | string | Имя пула информации внутри SEP'а |
| disk_size | int | Количество занятого места |
| disk_size_max | int | Размер диска |
## Пример использования
Пример вызова _data source_ функции **dynamix_account**:
```terraform
data "dynamix_account" "a" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account** в переменной `data.dynamix_account.a` будут сохранены возвращаемые значения.

@ -0,0 +1,164 @@
_Data source_ функция **dynamix_image_list** служит для получения информации об имеющихся в облачной платформе образах. Образы это дисковые ресурсы, уже содержащие некоторые данные, для которых реализован механизм быстрого клонирования/копирования в новый диск.
Основной сценарий использования таких ресурсов это создание каталогов образов операционных систем (ОС), на базе которых создаются загрузочные диски для _compute_. Также с их помощью можно хранить эталонную информацию, требующуюся для работы приложений, например, файлы баз данных.
Образ ОС является основной для создания новых виртуальных серверов, так как из него формируется загрузочный диск сервера. Как следствие, для создания виртуального сервера помимо других параметров требуется указать идентификатор нужного образа ОС. Для получения всех доступных идентификаторов можно воспользоваться _data source_ функцией **dynamix_image_list**.
## Аргументы
_Data source_ функция **dynamix_image_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| sep_id | int | :x: | Фильтр по storage endpoint provider ID |
| by_id | int | :x: | Фильтр по ID |
| name | string | :x: | Фильтр по имени |
| status | string | :x: | Фильтр по статусу |
| architecture | string | :x: | Фильтр по архитектуре |
| type_image | string | :x: | Фильтр по типу |
| image_size | int | :x: | Фильтр по размеру образа |
| sep_name | string | :x: | Фильтр по имени SEP |
| pool | string | :x: | Фильтр по Pool |
| public | bool | :x: | Фильтр публичных/приватных образов |
| hot_resize | bool | :x: | Фильтр образов, разрешающих hot resize |
| bootable | bool | :x: | Фильтр загрузочных образов |
| page | int | :x: | Номер страниц |
| enabled | bool | :x: | Фильтр по доступности образа |
| size | int | :x: | Размер страницы |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_image_list** возвращает в указанную при вызове переменную, в поле _items_, массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | accountId привязки образа |
| architecture | string | Архитектура образа, возможен вариант X86_64 |
| boot_type | string | Тип запуска ОС - bios или uefi |
| bootable | bool | Является ли образ загрузочным |
| computeci_id | int | ID вычислительного ресурса |
| desc | string | Описание образа |
| drivers | []string | Список используемых драйверов |
| enabled | bool | Доступность образа |
| gid | int | ID платформы, где образ будет создан |
| guid | int | Внутренний id образа, совпадает с image_id |
| history | object{id: int, guid: int, timestamp: int} | История обновлений образа |
| hot_resize | bool | Использует ли машина горячее изменение размера образа |
| image_type | string | Тип образа: linux, windows или другой |
| last_modified | int | Дата последнего изменения |
| link_to | int | Привязка к образу, используется в виртуальных образах |
| meta | []string | Мета информация об образе |
| milestones | int | Вехи |
| name | string | Название образа |
| network_interface_naming | string | Название сетевого интерфейса |
| password | string | Пароль для образа |
| password_dl | string | Пароль для загрузки двоичных файлов |
| permanently | bool | Удаление образа: мгновенное или нет |
| pool_name | string | Пул, в котором был создан образ |
| provider_name | string | Наименование провайдера |
| purge_attempts | int | Попытки |
| reference_id | string | ID ссылки |
| res_id | string | ID ресурса |
| res_name | string | Наименование ресурса |
| rescuecd | bool | CD или нет |
| sep_id | int | storage endpoint provider ID |
| size | int | Размер образа |
| status | string | Статус образа |
| tech_status | string | Технический статус |
| unc_path | string | unc path |
| url | string | Адрес, которого осуществлялась загрузка образа |
| username | string | Имя пользователя образа |
| username_dl | string | Имя пользователя для загрузки двоичных файлов |
| version | string | Версия |
## Пример использования
Пример вызова _data source_ функции **dynamix_image_list**:
```terraform
data "dynamix_image_list" "il" {
#фильтр по id sep
#опциональный параметр
#тип - целое число
#sep_id = 1
#фильтр по id образа
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени образа
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по архитектуре
#опциональный параметр
#тип - строка
#architecture = "x86_64"
#фильтр по типу образа
#опциональный параметр
#тип - строка
#type_image = "cdrom"
#фильтр по размеру образа
#опциональный параметр
#тип - целое число
#image_size = 100
#фильтр по имени SEP
#опциональный параметр
#тип - строка
#sep_name = "test"
#фильтр по имени Pool
#опциональный параметр
#тип - строка
#pool = "test"
#фильтр по доступу
#опциональный параметр
#тип - булев
#public = "true"
#фильтр по hot_resize
#опциональный параметр
#тип - булев
#hot_resize = "true"
#фильтр по bootable
#опциональный параметр
#тип - булев
#bootable = "true"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
#фильтр по enabled
#опциональный параметр
#тип - булев
#enabled = true
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_image_list** в переменной `data.dynamix_image_list.il` будут сохранены возвращаемые значения.

@ -0,0 +1,82 @@
_Data source_ функция **dynamix_image** служит для получения информации об имеющихся в облачной платформе образах. Образы это дисковые ресурсы, уже содержащие некоторые данные ("golden image"), для которых реализован механизм быстрого клонирования/копирования в новый диск.
Основной сценарий использования таких ресурсов это создание каталогов образов операционных систем (ОС), на базе которых создаются загрузочные диски для _compute_. Также с их помощью можно хранить эталонную информацию, требующуюся для работы приложений, например, файлы баз данных.
Образ ОС является основной для создания новых виртуальных серверов, так как из него формируется загрузочный диск сервера. Как следствие, для создания виртуального сервера помимо других параметров требуется указать идентификатор нужного образа ОС. Для получения такого идентификатора можно воспользоваться _data source_ функцией **dynamix_image**.
## Аргументы
_Data source_ функция **dynamix_image** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| image_id | int | :heavy_check_mark: | ID образа, информацию по которому требуется получить. |
| show_all | bool | :x: | Скрывать / показывать информацию об удаленном образе |
ID необходимо образа можно взять вызвав [dynamix_image_list](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.06-Data_dynamix_image_list.md)
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_image** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | accountId привязки образа |
| architecture | string | Архитектура образа, возможен вариант X86_64 |
| boot_type | string | Тип запуска ОС - bios или uefi |
| bootable | bool | Является ли образ загрузочным |
| cd_presented_to | string | Каким виртуальным машинам предоставлен CD образ |
| computeci_id | int | ID вычислительного ресурса |
| desc | string | Описание образа |
| drivers | []string | Список используемых драйверов |
| enabled | bool | Доступность образа |
| gid | int | ID платформы, где образ будет создан |
| guid | int | Внутренний id образа, совпадает с image_id |
| history | object{id: int, guid: int, timestamp: int} | История обновлений образа |
| hot_resize | bool | Использует ли машина горячее изменение размера образа |
| image_type | string | Тип образа: linux, windows или другой |
| last_modified | int | Дата последнего изменения |
| link_to | int | Привязка к образу, используется в виртуальных образах |
| meta | []string | Мета информация об образе |
| milestones | int | Вехи |
| name | string | Название образа |
| network_interface_naming | string | Название сетевого интерфейса |
| password | string | Пароль для образа |
| password_dl | string | Пароль для загрузки двоичных файлов |
| permanently | bool | Удаление образа: мгновенное или нет |
| pool_name | string | Пул, в котором был создан образ |
| provider_name | string | Наименование провайдера |
| purge_attempts | int | Попытки |
| present_to | []int | Список ID ресурсов для который предоставлен образ |
| reference_id | string | ID ссылки |
| res_id | string | ID ресурса |
| res_name | string | Наименование ресурса |
| rescuecd | bool | CD или нет |
| sep_id | int | storage endpoint provider ID |
| size | int | Размер образа |
| status | string | Статус образа |
| tech_status | string | Технический статус |
| unc_path | string | unc path |
| url | string | Адрес, которого осуществлялась загрузка образа |
| username | string | Имя пользователя образа |
| username_dl | string | Имя пользователя для загрузки двоичных файлов |
| version | string | Версия |
## Пример использования
Пример вызова _data source_ функции **dynamix_image**:
```terraform
data "dynamix_image" "image" {
#id образа
#обязательный параметр
#тип - целое число
image_id = 111
#показывать ли информацию об удаленном образе
#опциональный параметр
#тип - булев
#по умолчанию - false
#show_all = false
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_image** в переменной `data.dynamix_image.image` будут сохранены возвращаемые значения. В частности, для получения идентификатора образа следует использовать конструкцию `data.dynamix_image.image.id`

@ -0,0 +1,76 @@
_Data source_ функция **dynamix_locations_list** служит для получения информации об имеющихся в облачной платформе площадках(grid). Grid это пространства, на которых возможно размещение виртуальных машин.
## Аргументы
_Data source_ функция **dynamix_locations_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| flag | string | :x: | Поиск по флагу |
| name | string | :x: | Поиск по имени |
| by_id | int | :x: | Поиск по ID |
| location_code | string | :x: | Поиск по коду локации |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_locations_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| auth_broker | []string | auth broker |
| flag | string | Флаг |
| gid | int | ID grid |
| guid | int | Внутренний id |
| id | int | ID |
| location_code | string | Код расположения grid |
| name | string | Наименование grid |
## Пример использования
Пример вызова _data source_ функции **dynamix_locations_list**:
```terraform
data "dynamix_locations_list" "ll" {
#фильтр по флагу
#опицональный параметр
#тип - строка
#flag = "some"
#фильтр по id локации
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени локации
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по коду локации
#опциональный параметр
#тип - строка
#location_code = "europe"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опицональный параметр
#тип - целое число
#page = 1
#размер страницы
#опицональный параметр
#тип - целое число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_locations_list** в переменной `data.dynamix_locations_list.ll` будут сохранены возвращаемые значения.

@ -0,0 +1,23 @@
_Data source_ функция **dynamix_location_url** служит для получения url площадки (grid/location).
## Аргументы
_Data source_ функция **dynamix_location_url** не принимает аргументы.
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_location_url** возвращает в указанную при вызове переменную, которая состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| url | string | Адрес площадки |
## Пример использования
Пример вызова _data source_ функции **dynamix_location_url**:
```terraform
data "dynamix_location_url" "lu" {
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_location_url** в переменной `data.dynamix_location_url.lu` будут сохранены возвращаемые значения.

@ -0,0 +1,34 @@
_Data source_ функция **dynamix_snapshot_list** служит для получения информации об имеющихся снапшотах у переданной в аргументах вычислительной платформы. Снапшот позволяет делать снимки данных с диска, а после этого их восстанавливать. Для успешного восстановления данных через снапшот, необходимо убедиться, что [compute](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/07.01.01-Resource_dynamix_kvmvm.md) (вычислительные мощности) остановлен.
## Аргументы
_Data source_ функция **dynamix_snapshot_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| compute_id | int | :heavy_check_mark: | ID вычислительной мощности |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_snapshot_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | Guid снапшота |
| label | string | Наименование снапшота |
| timestamp | int | Время создания снапшота |
| disks | []int | Диски снапшота |
## Пример использования
Пример вызова _data source_ функции **dynamix_snapshot_list**:
```terraform
data "dynamix_snapshot_list" "sl" {
#обязательный параметр
#id вычислительной мощности
#тип - целое число
compute_id = 24074
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_snapshot_list** в переменной `data.dynamix_snapshot_list.sl` будут сохранены возвращаемые значения.

@ -0,0 +1,122 @@
_Data source_ функция **dynamix_rg_list** служит для получения информации об имеющихся ресурсных группах.
## Аргументы
_Data source_ функция **dynamix_rg_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID |
| name | string | :x: | Фильтр по названию |
| account_id | int | :x: | Фильтр по ID аккаунта |
| account_name | string | :x: | Фильтр по имени аккаунта |
| created_after | int | :x: | Отдает все рес. группы созданные после определенного времени (unix timstamp) |
| created_before | int | :x: | Отдает все рес. группы созданные до определенного времени (unix timstamp) |
| status | string | :x: | Фильтр по статусу |
| lock_status | string | :x: | Фильтр по локстатусу |
| includedeleted | bool | :x: | Включение удаленных rg в результат поиска |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_rg_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта - владельца ресурсной группы |
| account_name | string | Имя аккаунта - владельца ресурсной группы |
| compute_features | []string | Доступ к дополнительным функциям управления ВМ |
| acl | []Struct{<br/>explicit bool<br/>guid string<br/>right string<br/>status string<br/>type string<br/>user_group_id string<br/>} | Более подробная информация об аккаунтах, имеющих доступ к ресурсной группе<br/>Явно ли указан доступ<br/>guid аккаунта<br/>Права доступа<br/>Статус аккаунта<br/>Тип аккаунта<br/>Идентификатор пользователя-владельца аккаунта<br/>&nbsp;<br/> |
| cpu_allocation_parameter | string | Параметр выделения CPU |
| cpu_allocation_ratio | float | Отношение выделения CPU |
| created_by | string | Информация о создателе группы |
| created_time | int | Время создания группы |
| def_net_id | int | id сети по-умолчанию |
| def_net_type | string | Тип сети по-умолчанию |
| deleted_by | string | Информация о том, кто удалил группу |
| deleted_time | int | Время удаления группы |
| desc | string | Описание группы |
| gid | int | Grid id |
| guid | int | Внутренний идентификатор ресурсной группы |
| rg_id | int | Идентификатор ресурсной группы |
| lock_status | string | Статус блокировки ресурсной группы |
| name | string | Название ресурсной группы |
| register_computes | bool | Имеются ли зарезервированные выч. мощности |
| resource_limits | Struct{<br/>cu_c float<br/>cu_d float<br/>cu_i float<br/>cu_m float<br/>cu_np float<br/>gpu_units float<br/>} | Ограничения ресурсов<br/>Кол-во ядер<br/>Размер диска, ГБ<br/>Число публичных ip адресов<br/>Размер RAM, МБ<br/>Объем трафика, ГБ<br/>Кол-вол графических ядер<br/>&nbsp;<br/> |
| secret | string | Секрет группы |
| status | string | Статус группы |
| updated_by | string | Кем группа была обновлена в последний раз |
| updated_time | int | Время последнего обновления |
| vins | []int | Список идентификаторов виртуальных сетей |
| vms | []int | Список идентификаторов виртуальных машин (устаревшее) |
## Пример использования
Пример вызова _data source_ функции **dynamix_rg_list**:
```terraform
data "dynamix_rg_list" "rg_list" {
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени ресурсной группы
#опциональный параметр
#тип - строка
#name = "test"
#id аккаунта для получения списка ресурсных групп
#опциональный параметр
#тип - целое число
#account_id = 11111
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#account_name = "test"
#фильтр по времени создания (после указанного времени)
#опциональный параметр
#тип - целое число
#created_after = "123"
#фильтр по времени создания (перед указанным временем)
#опциональный параметр
#тип - целое число
#created_before = "123"
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по lock status
#опциональный параметр
#тип - строка
#lock_status = "UNLOCKED"
#отображать удаленные ресурсные группы или нет
#необязательный параметр
#тип - булев
#includedeleted = false
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы
#необязательный параметр
#тип - целое число
#page = 1
#размер страницы
#необязательный параметр
#тип - целое число
#size = 2
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_rg_list** в переменной `data.dynamix_rg_list.rl` будут сохранены возвращаемые значения.

@ -0,0 +1,186 @@
_Data source_ функция **dynamix_disk_list** служит для получения информации об имеющихся дисках.
## Аргументы
_Data source_ функция **dynamix_disk_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID диска |
| name | string | :x: | Фильтр по имени диска |
| account_name | string | :x: | Фильтр по имени аккаунта |
| disk_max_size | int | :x: | Фильтр по макс. размеру диска |
| status | string | :x: | Фильтр по статусу |
| shared | bool | :x: | Фильтр по значению shared |
| account_id | int | :x: | id аккаунта для получения списка дисков |
| type | string | :x: | Тип диска. Возможные типы: "B" - boot_disk, "D" - data_disk |
| sep_id | int | :x: | Фильтр по SEP id. SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск |
| pool_name | string | :x: | Фильтр по наименованию pool |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | Уникальный идентификатор подписчика-владельца диска |
| account_name | string | Имя подписчика ("account"), которому принадлежит данный диск |
| acl | string | Acces Control List |
| computes | Struct{} [см. ниже](#описание-структуры-computes) | Информация о компьютах (виртуальных машинах) |
| created_time | int | Время создания |
| deleted_time | int | Время удаления |
| desc | string | Текстовое описание диска |
| destruction_time | int | Время окончательного удаления |
| devicename | string | Наименование устройства |
| disk_id | int | Идентификатор диска. Дублирует значение параметра `id`. |
| gid | int | Идентификатор площадки (grid id) |
| id | int | Идентификатор диска |
| image_id | int | Идентификатор образа, содержимое которого было склонировано/скопировано в данный диск при его создании. 0 означает, что данный диск не создавался как клон/копия какого-либо образа |
| images | []int | Идентификаторы образов, использующих диск |
| iotune | Struct{}[см. ниже](#описание-структуры-iotune) | Информация об ограничениях IO диска |
| machine_id | int | id машины (устаревшее) |
| machine_name | string | Наименование машины (устаревшее) |
| disk_name | string | Наименование диска |
| order | int | Номер диска |
| params | string | Параметры диска |
| parent_id | int | id родительского диска |
| pci_slot | int | id pci слота, к которому подключен диск |
| pool | string | Имя пула в системе хранения, на ресурсах которой размещён данный диск |
| present_to | []int | Список ID ресурсов, которым предоставлен диск |
| purge_time | int | Время удаления |
| replication | Struct{} [см. ниже](#описание-структуры-replication) | Информация о реплике диска |
| res_id | int | id ресурса |
| res_name | string | Наименование ресурса |
| role | string | Роль диска |
| sep_id | int | Идентификатор Storage Endpoint Provider (SEP). SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск |
| sep_type | string | Тип SEP. Определяет тип системы хранения и содержит одно из заданных в облачной платформе значений |
| shareable | bool | Флаг, отвечающий за доступность диска дургим ресурсам |
| size_max | int | Размер диска в ГБ |
| size_used | float | Кол-во используемого места, в ГБ |
| snapshots | []Struct{}[см. ниже](#описание-структуры-snapshots) | Снимки состояния диска |
| status | string | Статус диска |
| tech_status | string | Технический статус диска |
| type | string | Тип диска с точки зрения его роли в составе _compute_. Может принимать одно из фиксированных значений:<br/>"B" - признак загрузочного диска ("boot").<br/>"D" - признак дополнительного диска ("data") |
| vmid | int | Идентификатор виртуальной машины (устаревшее) |
### Описание структуры computes
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | Идентификатор компьюта |
| compute_name | string | Имя компьюта |
### Описание структуры iotune
| Параметр | Тип | Описание |
| --- | --- | --- |
| read_bytes_sec | int | Кол-во байт для чтения в секунду |
| read_bytes_sec_max | int | Максимальное кол-во байт для чтения |
| read_iops_sec | int | Кол-во операций чтения io в секунду |
| read_iops_sec_max | int | Максимальное число io операций чтения |
| size_iops_sec | int | Размер io операций |
| total_bytes_sec | int | Общий размер байт в секунду |
| total_bytes_sec_max | int | Максимальный общий размер байт в секунду |
| total_iops_sec | int | Общее кол-во io операций в секунду |
| total_iops_sec_max | int | Максимальное общее кол-во io операций в секунду |
| write_bytes_sec | int | Кол-во байт для записи в секунду |
| write_bytes_sec_max | int | Максимальное кол-во байт для записи в секунду |
| write_iops_sec | int | Кол-во операций записи в секунду |
| write_iops_sec_max | int | Максимальное число операций записей |
### Описание структуры replication
| Параметр | Тип | Описание |
| --- | --- | --- |
| disk_id | int | id диска |
| pool_id | string | id пула |
| role | string | Роль диска (главный или реплика) |
| self_volume_id | string | id раздела |
| storage_id | int | id хранилища |
| volume_id | int | id раздела |
### Описание структуры snapshots
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | id снимка |
| label | string | Наименование снимка |
| res_id | string | Ссылка на снимок |
| snap_set_guid | string | Установленный id снимка |
| snap_set_time | int | Установленное время снимка |
| timestamp | int | Время снимка |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_list**:
```terraform
data "dynamix_disk_list" "dl" {
#фильтр по id диска
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени диска
#опциональный параметр
#тип - строка
#name = "data_disk"
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#account_name = "user"
#фильтр по максимальному размеру диска
#опциональный параметр
#тип - целое число
#disk_max_size = 100
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по доступности иным пользователям
#опциональный параметр
#тип - булев
#shared = "false"
#id аккаунта для получения списка дисков
#опциональный параметр
#тип - целое число
#account_id = 11111
#тип диска
#опциональный параметр
#тип - строка
#возможные типы: "B" - boot_disk, "D" - data_disk
#type = "D"
#id SEP для получения списка дисков
#опциональный параметр
#тип - целое число
#sep_id = 11111
#фильтр по имени pool
#опциональный параметр
#тип - строка
#pool_name = "test"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опциональный параметр
#тип - целое число
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_disk_list** в переменной `data.dynamix_disk_list.dl` будут сохранены возвращаемые значения.

@ -0,0 +1,108 @@
_Data source_ функция **dynamix_vins_list** служит для получения списка удаленных виртуальных сетей (Vins).
## Аргументы
_Data source_ функция **dynamix_vins_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID |
| name | string | :x: | Фильтр по имени |
| account_id | int | :x: | Фильтр по ID аккаунта |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| ext_ip | string | :x: | Фильтр по внешнему IP адресу |
| vnf_dev_id | int | :x: | Фильтр по VNF Device ID|
| includedeleted | bool | :x: | Включить в результат удаленные балансировщики |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_vins_list** возвращает в указанную при вызове переменную, в поле items массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта - владельца виртуальной сети |
| account_name | string | Имя аккаунта - владельца виртуальной |
| created_by | string | Информация о создателе виртуальной сети |
| created_time | int | Время создания виртуальной сети |
| deleted_by | string | Информация о том, кто удалил виртуальную сеть |
| deleted_time | int | Время удаления виртуальной сети |
| external_ip | string | Внешний ip - адрес |
| extnet_id | int | Идентификатор внешней сети |
| free_ips | int | Кол-во свободных IP адресов |
| vins_id | int | Идентификатор виртуальной сети |
| vins_name | string | Название виртуальной сети |
| network | string | Сеть |
| rg_id | int | Идентификатор ресурсной группы |
| rg_name | string | Название ресурсной группы |
| status | string | Статус виртуальной сети |
| updated_by | string | Кем виртуальная сеть была обновлена в последний раз |
| updated_time | int | Время последнего обновления |
| vxlan_id | int | Идентификатор vxlan |
## Пример использования
Пример вызова _data source_ функции **dynamix_vins_list**:
```terraform
data "dynamix_vins_list" "vl" {
#фильтр по id vins
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени vins
#опциональный параметр
#тип - строка
#name = "test"
#id аккаунта для получения списка балансировщиков нагрузки
#опциональный параметр
#тип - целое число
#account_id = 11111
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 100
#фильтр по IP внешней сети
#опциональный параметр
#тип - строка
#ext_ip = "test"
#фильтр по VNF Device ID
#опциональный параметр
#тип - целое число
#vnf_dev_id = 11
#включение удаленных vins в результат
#опциональный параметр
#тип - булев
#если не задан - выводятся все неудаленные данные
#include_deleted = true
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 1
}
```
После успешного завершения такого вызова **dynamix_vins_list** в переменной `data.dynamix_vins_list.vins_list` будут сохранены возвращаемые значения.

@ -0,0 +1,88 @@
_Data source_ функция **dynamix_extnet_list** служит для получения информации об имеющихся доступных внешних сетях.
## Аргументы
_Data source_ функция **dynamix_extnet_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по extnet ID |
| name | string | :x: | Фильтр по имени extnet |
| network | string | :x: | Фильтр по сети |
| vlan_id | int | :x: | Фильтр по VLAN ID |
| vnfdev_id | int | :x: | Фильтр по VnfDEV ID |
| status | string | :x: | Фильтр по статусу |
| account_id | int | :x: | ID аккаунта для фильтрации результата поиска |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_extnet_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| net_id | int | ID сети |
| ipcidr | string | Маска сети |
| name | string | Название сети |
| status | string | Статус сети |
## Пример использования
Пример вызова _data source_ функции **dynamix_extnet_list**:
```terraform
data "dynamix_extnet_list" "el" {
#id аккаунта для фильтрации результата
#необязательный параметр
#тип - целое число
#account_id = 1111111
#фильтр по id внешней сети
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени внешней сети
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по IP внешней сети
#опциональный параметр
#тип - строка
#network = "test"
#фильтр по id vlan
#опциональный параметр
#тип - целое число
#vlan_id = 100
#фильтр по id vnfDevices
#опциональный параметр
#тип - целое число
#vnfdev_id = 100
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опциональный параметр
#тип - целое число
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_extnet_list** в переменной `data.dynamix_extnet_list.el` будут сохранены возвращаемые значения.

@ -0,0 +1,24 @@
_Data source_ функция **dynamix_extnet_default** служит для получения информации о доступной внешней сети по умолчанию.
## Аргументы
_Data source_ функция **dynamix_extnet_default** не имеет аргументов.
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_extnet_default** возвращает следующий результат:
| Параметр | Тип | Описание |
| --- | --- | --- |
| net_id | int | ID сети по-умолчанию |
## Пример использования
Пример вызова _data source_ функции **dynamix_extnet_default**:
```terraform
data "dynamix_extnet_default" "ed" {
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_extnet_default** в переменной `data.dynamix_extnet_default.ed` будут сохранены возвращаемые значения.

@ -0,0 +1,76 @@
_Data source_ функция **dynamix_extnet_computes_list** служит для получения информации о вычислительных ресурсах, использующих внешнюю сеть.
## Аргументы
_Data source_ функция **dynamix_extnet_computes_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | Идентификатор аккаунта, которому принадлежат вычислительные ресурсы |
| rg_id | int | :x: | ID ресурсной группы для фильтрации результата поиска |
| compute_id | int | :x: | ID виртуальной машины для фильтрации результата поиска |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_extnet_computes_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта - владельца вычислительных ресурсов |
| account_name | string | Имя аккаунта - владельца вычислительных ресурсов |
| extnets | []Struct [см. ниже](#описание-структуры-extnets) | Список сетей |
| rg_id | int | Идентификатор ресурсной группы |
| rg_name | string | Название ресурсной группы |
| id | int | Идентификатор вычислительных ресурсов |
| name | string | Название вычислительных ресурсов |
### Описание структуры extnets
| Параметр | Тип | Описание |
| --- | --- | --- |
| net_id | int | ID сети |
| ipaddr | string | IP адрес |
| ipcidr | string | Маска сети |
| name | string | Название сети |
## Пример использования
Пример вызова _data source_ функции **dynamix_extnet_computes_list**:
```terraform
data "dynamix_extnet_computes_list" "ecl" {
#идентификатор аккаунта
#обязательный параметр
#тип - целое число
account_id = 1111
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 11111
#фильтр по id виртуальной машины
#опциональный параметр
#тип - целое число
#compute_id = 11111
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опциональный параметр
#тип - целое число
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_extnet_computes_list** в переменной `data.dynamix_extnet_computes_list.ecl` будут сохранены возвращаемые значения.

@ -0,0 +1,79 @@
_Data source_ функция **dynamix_extnet** служит для получения информации о внешней сети.
## Аргументы
_Data source_ функция **dynamix_extnet** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| net_id | int | :heavy_check_mark: | Идентификатор сети |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_extnet** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| net_id | int | ID сети |
| meta | []string | Мета информация |
| check_ips | []string | Список ip адресов для проверки |
| default | bool | Является ли сеть сетью по-умолчанию |
| default_qos | [см. ниже](#описание-структуры-default-qos) | Quality of Service по-умолчанию |
| desc | string | Описание |
| dns | []string | Список dns |
| excluded | []string | Список исключенных ip-адресов |
| free_ips | int | Кол-во свободных ip-адресов |
| gateway | string | Сетевые врата |
| gid | int | Grid id |
| guid | int | Внутренний id сети |
| ipcidr | string | Маска сети |
| milestones | int | Время жизни |
| net_name | string | Имя сети |
| network | string | Информация о сети |
| network_id | int | Идентификатор сети |
| pre_reservations_num | int | Количество зарезервированных ресурсов |
| prefix | int | Префикс |
| pri_vnf_dev_id | int | ID внутренней сети для разработки |
| reservations | []Struct [см. ниже](#описание-структуры-reservations) | Зарезервированные части сети |
| shared_with | []int | Список ресурсов, имеющих доступ к сети |
| status | string | Статус сети |
| vlan_id | int | Идентификатор vlan |
| vnfs | []Struct [см. ниже](#описание-структуры-vnfs) | Информация о vnfs |
### Описание структуры default qos
| Параметр | Тип | Описание |
| --- | --- | --- |
| e_rate | int | Минимальное кол-во потерь |
| guid | string | id сервиса |
| in_burst | int | Потери в режиме burst |
| in_rate | int | Потери в режиме rate |
### Описание структуры reservations
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| client_type | string | Тип клиента |
| domainname | string | Имя домена |
| hostname | string | Имя хоста |
| desc | string | Описание |
| ip | string | IP-адрес |
| mac | string | MAC-адрес |
| type | string | Тип |
| vm_id | int | ID виртуальной машины |
### Описание структуры vnfs
| Параметр | Тип | Описание |
| --- | --- | --- |
| dhcp | int | Информация о dhcp |
## Пример использования
Пример вызова _data source_ функции **dynamix_extnet**:
```terraform
data "dynamix_extnet" "e" {
#идентификатор сети
#обязательный параметр
#тип - целое число
net_id = 1111
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_extnet** в переменной `data.dynamix_extnet.e` будут сохранены возвращаемые значения.

@ -0,0 +1,36 @@
_Data source_ функция **dynamix_account_audits_list** служит для получения информации о запросах аккаунта.
Информация содержит в себе данные о вызове, времени выполнения запроса, пользователе, инициирующем вызов, а так же другие данные.
## Аргументы
_Data source_ функция **dynamix_account_audits_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_audits_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| call | string | Адрес вызова API |
| responsetime | float | Время ответа |
| statuscode | int | Код ответа |
| timestamp | float | Время получения запроса |
| user | string | Пользователь - владелец аккаунта |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_audits_list**:
```terraform
data "dynamix_account_audits_list" "aal" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_audits_list** в переменной `data.dynamix_account_audits_list.aal` будут сохранены возвращаемые значения.

@ -0,0 +1,118 @@
_Data source_ функция **dynamix_account_computes_list** служит для получения информации о вычислительных мощностях (computes), которые использует аакаунт.
## Аргументы
_Data source_ функция **dynamix_account_computes_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| compute_id | int | :x: | Фильтр по ID компьюта |
| name | string | :x: | Фильтр по имени компьюта |
| rg_name | string | :x: | Фильтр по имени рес. группы |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| tech_status | string | :x: | Фильтр по тех. статусу |
| ip_address | string | :x: | Фильтр по IP адресу |
| extnet_name | string | :x: | Фильтр по имени extnet |
| extnet_id | int | :x: | Фильтр по ID extnet |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_computes_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Имя аккаунта |
| compute_id | int | ID экземпляра computes |
| compute_name | string | Название экземпляра computes |
| cpus | int | Кол-во используемых ядер |
| created_by | string | Информация о создателе вычислительной мощности |
| created_time | int | Время создания вычислительной мощности |
| deleted_by | string | Информация о том, кто удалил вычислительную мощность |
| deleted_time | int | Время удаления вычислительной мощности |
| ram | int | Кол-во используемой RAM |
| registered | bool | Флаг, показатель того, зарегистрирована ли мощность как используемая или нет |
| rg_id | int | Идентификатор ресурсной группы |
| rg_name | string | Название ресурсной группы |
| status | string | Статус вычислительной мощности |
| tech_status | string | Технический статус вычислительной мощности |
| total_disks_size | int | Общее место, используемое дисками вычислительной мощности |
| updated_by | string | Кем вычислительная мощность была обновлена в последний раз |
| updated_time | int | Время последнего обновления |
| user_managed | bool | Флаг, показывает управление пользователем вычислительной мощностью |
| vins_connected | int | Общее число подключенных и используемых vins |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_computes_list**:
```terraform
data "dynamix_account_computes_list" "acl" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 1111
#фильтр по id compute
#опциональный параметр
#тип - целое число
#compute_id = 100
#фильтр по имени compute
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по имени ресурсной группы
#опциональный параметр
#тип - строка
#rg_name = "test"
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 100
#фильтр по техническому статусу
#опциональный параметр
#тип - строка
#tech_status = "STARTED"
#фильтр по ip address
#опциональный параметр
#тип - строка
#ip_address = "1.1.1.1.1"
#фильтр по имени внешней сети
#опциональный параметр
#тип - строка
#extnet_name = "test"
#фильтр по id внешней сети
#опциональный параметр
#тип - целое число
#extnet_id = 100
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_computes_list** в переменной `data.dynamix_account_computes_list.acl` будут сохранены возвращаемые значения.

@ -0,0 +1,38 @@
_Data source_ функция **dynamix_account_consumed_units** служит для получения информации об используемых аккаунтом ресурсах.
## Аргументы
_Data source_ функция **dynamix_account_consumed_units** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_consumed_units** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| cu_c | float | Кол-во используемых ядер |
| cu_d | float | Размер используемых дисков, ГБ |
| cu_i | float | Кол-во используемых публичных IP-адресов |
| cu_m | float | Размер используемой RAM, МБ |
| cu_dm | float | Использованный размер хранилища виртуального диска |
| cu_np | float | Кол-во траффика, ГБ |
| gpu_units | float | Кол-во графических ядер |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_consumed_units**:
```terraform
data "dynamix_account_consumed_units" "acu" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 22222
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_consumed_units** в переменной `data.dynamix_account_consumed_units.acu` будут сохранены возвращаемые значения.

@ -0,0 +1,44 @@
_Data source_ функция **dynamix_account_consumed_units_by_type** служит для получения информации об используемых ресурсах по типу переданного ресурса.
## Аргументы
_Data source_ функция **dynamix_account_consumed_units_by_type** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| cu_type | string | :heavy_check_mark: | Тип ресурса<br/>cu_c - кол-во ядер<br/>cu_d - размер диска, ГБ<br/>cu_m - размер RAM, МБ<br/>cu_i - кол-во публичных IP-адресов<br/>cu_np - кол-во полученного/отданного трафика, в ГБ<br/>gpu_units - кол-во графических ядер |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_consumed_units_by_type** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| cu_type | string | Тип ресурса<br/>cu_c - кол-во ядер<br/>cu_d - размер диска, ГБ<br/>cu_m - размер RAM, МБ<br/>cu_i - кол-во публичных IP-адресов<br/>cu_np - кол-во полученного/отданного трафика, в ГБ<br/>gpu_units - кол-во графических ядер |
| cu_result | float | Информация о ресурсе |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_consumed_units_by_type**:
```terraform
data "dynamix_account_consumed_units_by_type" "acubt" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 33333
#тип вычислительной единицы
#обязательный параметр
#тип - строка
#значения:
#CU_C - кол-во виртуальных cpu ядер
#CU_M - кол-во RAM в МБ
#CU_D - кол-в используемой дисковой памяти, в ГБ
#CU_I - кол-во публичных ip адресов
#CU_NP - кол-во полученного/отданного трафика, в ГБ
cu_type = "CU_C"
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_consumed_units_by_type** в переменной `data.dynamix_account_consumed_units_by_type.acubt` будут сохранены возвращаемые значения.

@ -0,0 +1,79 @@
_Data source_ функция **dynamix_account_disks_list** служит для получения информации об используемых аккаунтом дисках.
## Аргументы
_Data source_ функция **dynamix_account_disks_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| disk_id | int | :x: | Фильтр по ID диска |
| name | string | :x: | Фильтр по имени диска |
| disk_max_size | int | :x: | Фильтр по макс. размеру диска |
| type | string | :x: | Фильтр по типу диска |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_disks_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| disk_id | int | ID диска |
| disk_name | string | Название диска |
| pool | string | Название пула, к которому относится диск |
| sep_id | int | ID sep |
| shareable | bool | Флаг, говорящий о том, является ли диск общим |
| size_max | int | Максимальный размер диска |
| type | string | Тип диска |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_disks_list**:
```terraform
data "dynamix_account_disks_list" "adl" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
#фильтр по id диска
#опциональный параметр
#тип - целое число
#disk_id = 100
#фильтр по имени диска
#опциональный параметр
#тип - строка
#name = "data_disk"
#фильтр по максимальному размеру диска
#опциональный параметр
#тип - целое число
#disk_max_size = 100
#тип диска
#опциональный параметр
#тип - строка
#возможные типы: "b" - boot_disk, "d" - data_disk
#type = "d"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опциональный параметр
#тип - целое число
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_disks_list** в переменной `data.dynamix_account_disks_list.adl` будут сохранены возвращаемые значения.

@ -0,0 +1,104 @@
_Data source_ функция **dynamix_account_flipgroups_list** служит для получения информации об используемых групп с плавающим ip-адресом.
## Аргументы
_Data source_ функция **dynamix_account_flipgroups_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| name | string | :x: | Фильтр по имени флипгруппы |
| flipgroup_id | int | :x: | Фильтр по ID флипгруппы |
| vins_id | int | :x: | Фильтр по ID ViNS |
| vins_name | string | :x: | Фильтр по имени ViNS |
| extnet_id | int | :x: | Фильтр по ID extnet |
| by_ip | string | :x: | Фильтр по IP адресу |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_flipgroups_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта - владельца группы с плавающим ip-адресом |
| client_type | string | Тип клиента |
| conn_type | string | Тип соединения |
| created_by | string | Информация о создателе группы с плавающим ip-адресом |
| created_time | int | Время создания группы с плавающим ip-адресом |
| default_gw | string | Gateway группы с плавающим ip-адресом по-умолчанию |
| deleted_by | string | Информация о том, кто удалил группу с плавающим ip-адресом |
| deleted_time | int | Время удаления группы с плавающим ip-адресом |
| desc | string | Описание группы с плавающим ip-адресом |
| gid | int | Grid id |
| guid | int | Внутренний идентификатор группы с плавающим ip-адресом |
| fg_id | int | ID группы с плавающим ip-адресом |
| ip | string | IP-адрес |
| milestones | int | Вехи |
| fg_name | string | Название группы с плавающим ip-адресом |
| net_id | int | ID сети |
| net_type | string | Тип сети |
| netmask | int | Маска сети |
| status | string | Статус группы с плавающим ip-адресом |
| updated_by | string | Кем группа с плавающим ip-адресом была обновлена в последний раз |
| updated_time | int | Время последнего обновления |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_flipgroups_list**:
```terraform
data "dynamix_account_flipgroups_list" "afgl" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 1111
#фильтр по имени flipgroup
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по id vins
#опциональный параметр
#тип - целое число
#vins_id = 100
#фильтр по имени vins
#опциональный параметр
#тип - строка
#vins_name = "test"
#фильтр по id extnet
#опциональный параметр
#тип - целое число
#extnet_id = 100
#фильтр по IP
#опциональный параметр
#тип - строка
#by_ip = "1.1.1.1.1"
#фильтр по id flipgroup
#опциональный параметр
#тип - целое число
#flipgroup_id = 100
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опциональный параметр
#тип - целое число
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_flipgroups_list** в переменной `data.dynamix_account_flipgroups_list.afgl` будут сохранены возвращаемые значения.

@ -0,0 +1,38 @@
_Data source_ функция **dynamix_account_reserved_units** служит для получения информации о зарезервированных ресурсах аккаунта.
## Аргументы
_Data source_ функция **dynamix_account_reserved_units** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_reserved_units** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| cu_c | float | Кол-во ядер |
| cu_d | float | Размер диска, ГБ |
| cu_i | float | Кол-во публичных ip-адресов |
| cu_m | float | Размер RAM, МБ |
| cu_dm | float | Использованный размер хранилища виртуального диска |
| cu_np | float | Кол-во полученного/отданного трафика, ГБ |
| gpu_units | float | Кол-во графических ядер |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_reserved_units**:
```terraform
data "dynamix_account_reserved_units" "aru" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_reserved_units** в переменной `data.dynamix_account_reserved_units.aru` будут сохранены возвращаемые значения.

@ -0,0 +1,93 @@
_Data source_ функция **dynamix_account_rg_list** служит для получения информации о ресурсных группах, принадлежащих аккаунту.
## Аргументы
_Data source_ функция **dynamix_account_rg_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| vins_id | int | :x: | Фильтр по ID ViNS |
| vm_id | int | :x: | Фильтр по ID вирт. машины |
| name | string | :x: | Фильтр по имени рес. группы |
| status | string | :x: | Фильтр по статусу |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_rg_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| computes | Struct{<br/>started int<br/>stopped int <br/>} | Информация о вычислительных мощностях<br/>Кол-во запущенных<br/>Кол-во остановленных<br/>&nbsp;<br/> |
| resources | Struct{<br/>consumed Struct{<br/>cpu int<br/>disksize int<br/>extips int<br/>exttraffic int<br/>gpu int<br/>ram int<br/>}<br/>limits Struct{<br/>cpu int<br/>disksize int<br/>extips int<br/>exttraffic int<br/>gpu int<br/>ram int<br/>}<br/>reserved Struct{<br/>cpu int<br/>disksize int<br/>extips int<br/>exttraffic int<br/>gpu int<br/>ram int<br/>}<br/>} | Информация о ресурсах<br/>Задействованные<br/>Кол-вол ядер<br/>Размер диска, ГБ<br/>Кол-во внешних ip-адресов<br/>Размер внешнего траффика<br/>Кол-во графических ядер<br/>Размер RAM, МБ<br/><br/>Максимально возможные значения<br/> Кол-вол ядер<br/>Размер диска, ГБ<br/>Кол-во внешних ip-адресов<br/>Размер внешнего траффика<br/>Кол-во графических ядер<br/>Размер RAM, МБ<br/><br/>Зарезервированные<br/>Кол-вол ядер<br/>Размер диска, ГБ<br/>Кол-во внешних ip-адресов<br/>Размер внешнего траффика<br/>Кол-во графических ядер<br/>Размер RAM, МБ<br/><br/>&nbsp;<br/> |
| created_by | string | Информация о создателе группы |
| created_time | int | Время создания группы |
| deleted_by | string | Информация о том, кто удалил группу |
| deleted_time | int | Время удаления группы |
| rg_id | int | Идентификатор ресурсной группы |
| rg_name | string | Название ресурсной группы |
| milestones | int | Вехи |
| status | string | Статус группы |
| updated_by | string | Кем группа была обновлена в последний раз |
| updated_time | int | Время последнего обновления |
| vinses | int | Количество виртуальных сетей |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_rg_list**:
```terraform
data "dynamix_account_rg_list" "argl" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 66666
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 11111
#фильтр по имени ресурсной группы
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по id vins
#опциональный параметр
#тип - целое число
#vins_id = 100
#фильтр по id compute
#опциональный параметр
#тип - целое число
#vm_id = 100
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "CREATED"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_rg_list** в переменной `data.dynamix_account_rg_list.argl` будут сохранены возвращаемые значения.

@ -0,0 +1,84 @@
_Data source_ функция **dynamix_account_templates_list** служит для получения информации об имеющихся шаблонах аккаунта.
## Аргументы
_Data source_ функция **dynamix_account_templates_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| include_deleted | bool | :x: | Включить в рез-тат удаленные шаблоны |
| image_id | int | :x: | Фильтр по id образа |
| name | string | :x: | Фильтр по имени шаблона |
| type | string | :x: | Фильтр по типу шаблона |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_templates_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| unc_path | string | Системный путь до шаблона |
| account_id | int | ID аккаунта - владельца шаблона |
| desc | string | Описание шаблона |
| template_id | int | Идентификатор шаблона |
| template_name | string | Название шаблона |
| public | bool | Флаг, является ли шаблон общедоступным |
| size | int | Размер шаблона |
| status | string | Статус шаблона |
| type | string | Тип шаблона |
| username | string | Пользователь - владелец шаблона |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_templates_list**:
```terraform
data "dynamix_account_templates_list" "atl" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 11111
#фильтр "включая удаленные шаблоны"
#опциональный параметр
#тип - булев
#include_deleted = true
#фильтр по id образа
#опциональный параметр
#тип - целое число
#image_id = 1111
#фильтр по имени
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по типу
#опциональный параметр
#тип - строка
#type = "linux"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_templates_list** в переменной `data.dynamix_account_templates_list.atl` будут сохранены возвращаемые значения.

@ -0,0 +1,94 @@
_Data source_ функция **dynamix_account_vins_list** служит для получения информации об используемых аккаунтом сетях.
## Аргументы
_Data source_ функция **dynamix_account_vins_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | ID аккаунта |
| vins_ id | int | :x: | Фильтр по ID ViNS |
| name | string | :x: | Фильтр по имени ViNS |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| ext_ip | string | :x: | Фильтр по внешнему IP |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_vins_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта - владельца виртуальной сети |
| account_name | string | Имя аккаунта - владельца виртуальной сети |
| computes | int | Кол-во вычислительных мощностей, использующих виртуальную сеть |
| created_by | string | Информация о создателе виртуальной сети |
| created_time | int | Время создания виртуальной сети |
| deleted_by | string | Информация о том, кто удалил виртуальную сеть |
| deleted_time | int | Время удаления виртуальной сети |
| external_ip | string | Внешний IP - адрес |
| extnet_id | int | Идентификатор внешней сети |
| free_ips | int | Количество свободных IP - адресов сети |
| vin_id | int | Идентификатор виртуальной сети |
| vin_name | string | Название виртуальной сети |
| network | string | Сеть |
| pri_vnf_dev_id | int | ID для vnf - разработки |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Название ресурсной группы |
| status | string | Статус ресурсной группы |
| updated_by | string | Кем была обновлена ресурсная группа |
| updated_time | int | Время обновления |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_vins_list**:
```terraform
data "dynamix_account_vins_list" "avl" {
#id аккаунта
#обязательный параметр
#тип - целое число
account_id = 22222
#фильтр по id vins
#опциональный параметр
#тип - целое число
#vins_id = 100
#фильтр по имени vins
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 11111
#фильтр по IP внешней сети
#опциональный параметр
#тип - строка
#ext_ip = "test"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_vins_list** в переменной `data.dynamix_account_vins_list.avl` будут сохранены возвращаемые значения.

@ -0,0 +1,76 @@
_Data source_ функция **dynamix_account_list** служит для получения информации о всех доступных аккаунтах.
## Аргументы
_Data source_ функция **dynamix_account_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID аккаунта |
| name | string | :x: | Фильтр по имени аккаунта |
| acl | string | :x: | Фильтр по ACL |
| status | string | :x: | Фильтр по статусу |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| acl | []Struct{<br/>explicit bool<br/>guid string<br/>right string<br/>status string<br/>type string<br/>user_group_id string<br/>} | Более подробная информация об аккаунтах<br/>Явно ли указан доступ<br/>guid аккаунта<br/>Права доступа<br/>Статус аккаунта<br/>Тип аккаунта<br/>Идентификатор пользователя-владельца аккаунта<br/>&nbsp;<br/> |
| compute_features | []string | Доступ к дополнительным функциям управления ВМ |
| created_time | int | Время создания аккаунта |
| deleted_time | int | Время удаления аккаунта |
| status | string | Статус аккаунта |
| updated_time | int | Время последнего обновления |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_list**:
```terraform
data "dynamix_account_list" "al" {
#фильтр по id аккаунта
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по ACL
#опциональный параметр
#тип - строка
#acl = "test"
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_list** в переменной `data.dynamix_account_list.al` будут сохранены возвращаемые значения.

@ -0,0 +1,70 @@
_Data source_ функция **dynamix_account_deleted_list** служит для получения информации об удаленных аккаунтах, которые можно восстановить в дальнейшем. В данный список попадают аккаунты, удаленные с флагом permanently, выставленным в false.
## Аргументы
_Data source_ функция **dynamix_account_deleted_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID аккаунта |
| name | string | :x: | Фильтр по имени аккаунта |
| acl | string | :x: | Фильтр по ACL |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страницы |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_account_deleted_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| acl | []Struct{<br/>explicit bool<br/>guid string<br/>right string<br/>status string<br/>type string<br/>user_group_id string<br/>} | Более подробная информация об аккаунтах<br/>Явно ли указан доступ<br/>guid аккаунта<br/>Права доступа<br/>Статус аккаунта<br/>Тип аккаунта<br/>Идентификатор пользователя-владельца аккаунта<br/>&nbsp;<br/> |
| compute_features | []string | Доступ к дополнительным функциям управления ВМ |
| created_time | int | Время создания аккаунта |
| deleted_time | int | Время удаления аккаунта |
| status | string | Статус аккаунта |
| updated_time | int | Время последнего обновления |
## Пример использования
Пример вызова _data source_ функции **dynamix_account_deleted_list**:
```terraform
data "dynamix_account_deleted_list" "adl" {
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
#фильтр по id аккаунта
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по ACL
#опциональный параметр
#тип - строка
#acl = "test"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_account_deleted_list** в переменной `data.dynamix_account_deleted_list.adl` будут сохранены возвращаемые значения.

@ -0,0 +1,116 @@
_Data source_ функция **dynamix_bservice_list** служит для получения информации о всех доступных базовых сервисах. Базовый сервис (basic service) может быть шаблоном, на основе которого создаются вычислительные мощности (computes).
## Аргументы
_Data source_ функция **dynamix_bservice_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID |
| name | string | :x: | Фильтр по имени |
| rg_name | string | :x: | Фильтр по имени ресурсной группы |
| tech_status | string | :x: | Фильтр по тех. статусу |
| status | string | :x: | Фильтр по статусу |
| account_name | string | :x: | Фильтр по имени аккаунта |
| account_id | int | :x: | ID аккаунта для фильтрации результата |
| rg_id | int | :x: | ID ресурсной группы для фильтрации результата |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_bservice_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| base_domain | string | Базовый домен |
| created_by | string | Кем создан сервис |
| created_time | int | Время создания сервиса |
| deleted_by | string | Кем удален сервис |
| deleted_time | int | Время удаления сервиса |
| gid | int | Grid id |
| groups | []int | Список вычислительных групп сервиса |
| guid | int | Внутренний ID сервиса |
| service_id | int | ID сервиса |
| service_name | string | Название сервиса |
| parent_srv_id | int | ID родительского сервисе |
| parent_srv_name | string | Название родительского сервиса |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Название ресурсной группы |
| ssh_user | string | Имя пользователя для подключения по ssh |
| status | string | Статус сервиса |
| tech_status | string | Технический статус сервиса |
| updated_by | string | Кем сервис был обновлен |
| updated_time | int | Время последнего обновления |
| user_managed | bool | Флаг, управляется ли пользователем |
## Пример использования
Пример вызова _data source_ функции **dynamix_bservice_list**:
```terraform
data "dynamix_bservice_list" "bsl" {
#фильтр по id базового сервиса
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени базового сервиса
#опциональный параметр
#тип - строка
#name = "test"
#id аккаунта для фильтрации данных
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#account_id = 11111
#фильтр по имени ресурсной группы
#опциональный параметр
#тип - строка
#rg_name = "test"
#id ресурсной группы, используется для фильтрации
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#rg_id = 11111
#фильтр по техническому статусу
#опциональный параметр
#тип - строка
#tech_status = "STARTED"
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#account_name = "test"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_bservice_list** в переменной `data.dynamix_bservice_list.bsl` будут сохранены возвращаемые значения.

@ -0,0 +1,81 @@
_Data source_ функция **dynamix_bservice_deleted_list** служит для получения информации о всех удаленных базовых сервисах. Базовый сервис (basic service) может быть шаблоном, на основе которого создаются вычислительные мощности (computes). Удаленные сервисы попадают в этот список, если они были удалены с флагом permanently, выставленном в false. Такие сервисы можно восстановить.
## Аргументы
_Data source_ функция **dynamix_bservice_deleted_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :x: | ID аккаунта для фильтрации результата |
| rg_id | int | :x: | ID ресурсной группы для фильтрации результата |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_bservice_deleted_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| base_domain | string | Базовый домен |
| created_by | string | Кем создан сервис |
| created_time | int | Время создания сервиса |
| deleted_by | string | Кем удален сервис |
| deleted_time | int | Время удаления сервиса |
| gid | int | Grid id |
| groups | []int | Список вычислительных групп сервиса |
| guid | int | Внутренний ID сервиса |
| service_id | int | ID сервиса |
| service_name | string | Название сервиса |
| parent_srv_id | int | ID родительского сервисе |
| parent_srv_name | string | Название родительского сервиса |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Название ресурсной группы |
| ssh_user | string | Имя пользователя для подключения по ssh |
| status | string | Статус сервиса |
| tech_status | string | Технический статус сервиса |
| updated_by | string | Кем сервис был обновлен |
| updated_time | int | Время последнего обновления |
| user_managed | bool | Флаг, управляется ли пользователем |
## Пример использования
Пример вызова _data source_ функции **dynamix_bservice_deleted_list**:
```terraform
data "dynamix_bservice_deleted_list" "bsdl" {
#id аккаунта для фильтрации данных
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#account_id = 11111
#id ресурсной группы, используется для фильтрации
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#rg_id = 11111
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_bservice_deleted_list** в переменной `data.dynamix_bservice_deleted_list.bsdl` будут сохранены возвращаемые значения.

@ -0,0 +1,33 @@
_Data source_ функция **dynamix_bservice_snapshot_list** служит для получения информации о всех доступных снимках состояния базовых сервисах. Базовый сервис (basic service) может быть шаблоном, на основе которого создаются вычислительные мощности (computes). По сделанным снимкам состояния возможно восстановления сервиса.
## Аргументы
_Data source_ функция **dynamix_bservice_snapshot_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| service_id | int | :heavy_check_mark: | ID сервиса |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_bservice_snapshot_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | ID снимка состояния |
| label | string | Название снимка состояния |
| timestamp | int | Время создания снимка состояния |
| valid | bool | Флаг, валидность снимка состояния |
## Пример использования
Пример вызова _data source_ функции **dynamix_bservice_snapshot_list**:
```terraform
data "dynamix_bservice_snapshot_list" "bsl" {
#id basic service
#обязательный параметр
#тип - целое число
service_id = 11111
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_bservice_snapshot_list** в переменной `data.dynamix_bservice_snapshot_list.bsl` будут сохранены возвращаемые значения.

@ -0,0 +1,92 @@
_Data source_ функция **dynamix_bservice** служит для получения информации о базовом сервисе. Базовый сервис (basic service) может быть шаблоном, на основе которого создаются вычислительные мощности (computes).
## Аргументы
_Data source_ функция **dynamix_bservice** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| service_id | int | :heavy_check_mark: | ID сервиса |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_bservice** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| base_domain | string | Базовый домен |
| computes | []Struct [см. ниже](#описание-структуры-compute) | Список компьютов |
| cpu_total | int | Кол-во ядер |
| created_by | string | Кем создан сервис |
| created_time | int | Время создания сервиса |
| deleted_by | string | Кем удален сервис |
| deleted_time | int | Время удаления сервиса |
| disk_total | int | Кол-во используемого места на дисках, ГБ |
| gid | int | Grid id |
| groups | []Struct [см. ниже](#описание-структуры-group) | Список вычислительных групп сервиса |
| guid | int | Внутренний ID сервиса |
| milestones | int | Вехи |
| service_id | int | ID сервиса |
| service_name | string | Название сервиса |
| parent_srv_id | int | ID родительского сервисе |
| parent_srv_type | string | Тип родительского сервиса |
| ram_total | int | Общее кол-во RAM, МБ |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Название ресурсной группы |
| snapshots | []Struct [см. ниже](#описание-структуры-snapshots) | Список снимков состояний |
| ssh_key | string | Ключ пользователя для подключения по ssh |
| ssh_user | string | Имя пользователя для подключения по ssh |
| status | string | Статус сервиса |
| tech_status | string | Технический статус сервиса |
| updated_by | string | Кем сервис был обновлен |
| updated_time | int | Время последнего обновления |
| user_managed | bool | Флаг, управляется ли пользователем |
### Описание структуры compute
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| architecture | string | Архитектура |
| compgroup_id | int | ID группы |
| compgroup_name | string | Наименование группы |
| compgroup_role | string | Роль компьюта в группе |
| id | int | ID компьюта |
| name | string | Наименование компьюта |
| rg_id | int | ID ресурсной группы |
| stack_id | int | Stack ID |
| status | string | Статус |
| tech_status | string | Тех. статус |
### Описание структуры group
| Параметр | Тип | Описание |
| --- | --- | --- |
| computes | int | Кол-во компьютов |
| consistency | bool | Последовательность |
| id | int | ID группы |
| name | string | Наименование группы |
| status | string | Статус |
| tech_status | string | Тех. статус |
### Описание структуры snapshots
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | guid снимка |
| label | string | Название снимка |
| timestamp | int | Время создания снимка |
| valid | bool | Флаг валидности снимка состояния |
## Пример использования
Пример вызова _data source_ функции **dynamix_bservice**:
```terraform
data "dynamix_bservice" "b" {
#id сервиса
#обязательный параметр
#тип - целое число
service_id = 11111
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_bservice** в переменной `data.dynamix_bservice.b` будут сохранены возвращаемые значения.

@ -0,0 +1,68 @@
_Data source_ функция **dynamix_bservice_group** служит для получения информации о вычислительной группе базового сервиса. Базовый сервис (basic service) может быть шаблоном, на основе которого создаются вычислительные мощности (computes). Вычислительные группы (computes) создаются на основе базового сервиса.
## Аргументы
_Data source_ функция **dynamix_bservice_group** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | :---: | --- |
| service_id | int | :heavy_check_mark: | ID сервиса |
| compgroup_id | int | :heavy_check_mark: | ID вычислительной группы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_bservice_group** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Название аккаунта |
| computes | []Struct{<br/>id int<br/>ip_addresses []string<br/>name string<br/>os_users []Struct{<br/>login string<br/>password string<br/>} <br/>} | Вычислительные мощности<br/>ID вычислительной мощности<br/>Список IP-адресов<br/>Название вычислительной мощности<br/>Пользователи системы<br/>Логин пользователя<br/>Пароль пользователя<br/>&nbsp;<br/>&nbsp;<br/> |
| compgroup_id | int | ID вычислительной группы |
| compgroup_name | string | Название вычислительной группы |
| consistency | bool | Флаг, последовательность |
| cpu | int | Кол-во ядер |
| created_by | string | Кем создан сервис |
| created_time | int | Время создания сервиса |
| deleted_by | string | Кем удален сервис |
| deleted_time | int | Время удаления сервиса |
| disk | int | Кол-во используемого места на дисках, ГБ |
| driver | string | Используемый драйвер |
| extnets | []int | Список ID внешних сетей |
| gid | int | Grid id |
| guid | int | Внутренний ID группы |
| image_id | int | ID образа, который используется в вычислительной группе |
| milestones | int | Вехи |
| service_id | int | ID сервиса |
| parents | []int | Список родительских групп |
| ram | int | Кол-во RAM, МБ |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Название ресурсной группы |
| role | string | Роль(тег) группы |
| sep_id | int | ID sep |
| seq_no | int | Номер последовательности |
| status | string | Статус сервиса |
| tech_status | string | Технический статус сервиса |
| timeout_start | int | Таймаут перед стартом |
| updated_by | string | Кем сервис был обновлен |
| updated_time | int | Время последнего обновления |
| vinses | []int | Список ID виртуальных сетей |
## Пример использования
Пример вызова _data source_ функции **dynamix_bservice_group**:
```terraform
data "dynamix_bservice_group" "bsg" {
#id сервиса
#обязательный параметр
#тип - целое число
service_id = 11111
#id вычислительной группы
#обязательный параметр
#тип - целое число
compgroup_id = 12121
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_bservice_group** в переменной `data.dynamix_bservice_group.bsg` будут сохранены возвращаемые значения.

@ -0,0 +1,109 @@
_Data source_ функция **dynamix_lb** служит для получения информации о балансировщике нагрузки (load balancer). Балансировщик нагрузки служит для равномерного распределения сетевой нагрузки на сервисы кубернетеса.
## Аргументы
_Data source_ функция **dynamix_lb** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| lb_id | int | :heavy_check_mark: | ID балансировщика |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_lb** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| ha_mode | bool | Флаг, показывающий, включен ли режим haproxy |
| backends | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-backend) | Список бекендов |
| created_by | string | Аккаунт, создавший балансировщик |
| created_time | int | Время создания |
| deleted_by | string | Кем балансировщик был удален |
| deleted_by | int | Время удаления |
| desc | string | Описание |
| dp_api_user | string | Имя пользователя для работы |
| extnet_id | int | ID внешней сети |
| frontends | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-фронтенда) | Список фронтендов |
| gid | int | Grid ID балансировщика |
| guid | int | ID балансировщика |
| lb_id | int | ID балансировщика |
| manager_id | int | ID ресурса, к которому принадлежит данный балансировщик |
| manager_type | string | Тип ресурса, к которому принадлежит данный балансировщик |
| image_id | int | ID образа |
| milestones | int | Вехи |
| name | string | Имя балансировщика |
| part_k8s | bool | Является ли балансироващик частью кластера |
| primary_node | Struct{} [см. описание узлов](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-узлов) | Главный узел |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Имя ресурсной группы |
| secondary_node | Struct{} [см. описание узлов](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-узлов) | Второй узел |
| status | string | Статус |
| tech_status | string | Технический статус |
| updated_by | string | Кем балансировщик был обновлен |
| updated_time | string | Время последнего обновления |
| user_managed | bool | Флаг указывающий, может ли пользователь управлять балансировщиком напрямую |
| vins_id | int | ID виртуальной сети |
### Описание структуры backend
| Параметр | Тип | Описание |
| --- | --- | --- |
| algorithm | string | Алгоритм работы бекенда |
| name | string | Имя бекенда |
| server_default_settings | Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-настроек) | Описание настроек серверов бекенда по умолчанию |
| servers | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-сервера) | Список серверов |
### Описание структуры настроек
| Параметр | Тип | Описание |
| --- | --- | --- |
| downinter | int | Интервал между проверками на недоступность сервера |
| inter | int | Интервал между проверками на доступность сервера |
| rise | int | Кол-во попыток, после которых, сервер будет вновь включен в схему балансирования |
| fall | int | Кол-во неудачных попыток, после которых, сервер получит статус "unavailable" |
| slowstart | int | Интервал, в мс, в через который сервер получит статус "available" |
| maxconn | int | Кол-во соединений к северу, при достижении этого кол-ва, сервера выходит из схемы балансирования |
| maxqueue | int | Кол-во соедений в очереди к серверу |
| weight | int | Вес сервера для работы алгоритма балансирования по весу |
### Описание структуры сервера
| Параметр | Тип | Описание |
| --- | --- | --- |
| address | string | Адрес сервера |
| check | string | Включены ли проверки |
| name | string | Имя сервера |
| port | int | Порт сервера |
| server_settings | [см. Описание структуры настроек](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-настроек) | Настройки сервера |
### Описание структуры фронтенда
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend | string | Имя бекенда, к которому подключен фронтенд |
| name | string | Имя фронтенда |
| bindings | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.36-Data_dynamix_lb.md#Описание-структуры-привязки-фронтенда) | Привязки фронтенда |
### Описание структуры привязки фронтенда
| Параметр | Тип | Описание |
| --- | --- | --- |
| address | string | Адрес, к которому привязан фронтенд |
| name | string | Имя привязки |
| port | int | Порт привязки |
### Описание структуры узлов
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend_ip | string | IP адрес бекенда |
| compute_id | int | ID виртуальной машины |
| frontend_ip | string | IP адрес фронтенда |
| mgmt_ip | string | IP адрес |
| network_id | int | ID сети |
## Пример использования
Пример вызова _data source_ функции **dynamix_lb**:
```terraform
data "dynamix_lb" "lb" {
#id балансировщика нагрузок
#обязательный параметр
#тип - целое число
lb_id = 238
}
```
После успешного завершения такого вызова **dynamix_lb** в переменной `data.dynamix_lb.lb` будут сохранены возвращаемые значения.

@ -0,0 +1,181 @@
_Data source_ функция **dynamix_lb_list** служит для получения информации об имеющихся в облачной платформе балансировщиках нагрузки.
## Аргументы
_Data source_ функция **dynamix_lb_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID балансировщика |
| name | string | :x: | Фильтр по имени балансировщика |
| account_id | int | :x: | Фильтр по ID аккаунта |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| tech_status | string | :x: | Фильтр по тех. статусу |
| status | string | :x: | Фильтр по статусу |
| front_ip | string | :x: | Фильтр по IP фронтенда |
| back_ip | string | :x: | Фильтр по IP бэкенда |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
| includedeleted | bool | :x: | Включить в результат удаленные балансировщики |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_lb_list** возвращает в указанную при вызове переменную, в поле _items_, массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| ha_mode | bool | Флаг, показывающий, включен ли режим haproxy |
| backends | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-backend) | Список бекендов |
| created_by | string | Аккаунт, создавший балансировщик |
| created_time | int | Время создания |
| deleted_by | string | Кем балансировщик был удален |
| deleted_by | int | Время удаления |
| desc | string | Описание |
| dp_api_user | string | Имя пользователя для работы |
| dp_api_password | string | Пароль пользователя |
| extnet_id | int | ID внешней сети |
| frontends | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-фронтенда) | Список фронтендов |
| gid | int | Grid ID балансировщика |
| guid | int | ID балансировщика |
| lb_id | int | ID балансировщика |
| manager_id | int | ID ресурса, к которому принадлежит данный балансировщик |
| manager_type | string | Тип ресурса, к которому принадлежит данный балансировщик |
| image_id | int | ID образа |
| milestones | int | Вехи |
| name | string | Имя балансировщика |
| part_k8s | bool | Является ли балансироващик частью кластера |
| primary_node | Struct{} [см. описание узлов](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-узлов) | Главный узел |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Имя ресурсной группы |
| secondary_node | Struct{} [см. описание узлов](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-узлов) | Второй узел |
| status | string | Статус |
| tech_status | string | Технический статус |
| updated_by | string | Кем балансировщик был обновлен |
| updated_time | string | Время последнего обновления |
| user_managed | bool | Флаг указывающий, может ли пользователь управлять балансировщиком напрямую |
| vins_id | int | ID виртуальной сети |
### Описание структуры backend
| Параметр | Тип | Описание |
| --- | --- | --- |
| algorithm | string | Алгоритм работы бекенда |
| name | string | Имя бекенда |
| server_default_settings | Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-настроек) | Описание настроек серверов бекенда по умолчанию |
| servers | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-сервера) | Список серверов |
### Описание структуры настроек
| Параметр | Тип | Описание |
| --- | --- | --- |
| downinter | int | Интервал между проверками на недоступность сервера |
| inter | int | Интервал между проверками на доступность сервера |
| rise | int | Кол-во попыток, после которых, сервер будет вновь включен в схему балансирования |
| fall | int | Кол-во неудачных попыток, после которых, сервер получит статус "unavailable" |
| slowstart | int | Интервал, в мс, в через который сервер получит статус "available" |
| maxconn | int | Кол-во соединений к северу, при достижении этого кол-ва, сервера выходит из схемы балансирования |
| maxqueue | int | Кол-во соедений в очереди к серверу |
| weight | int | Вес сервера для работы алгоритма балансирования по весу |
### Описание структуры сервера
| Параметр | Тип | Описание |
| --- | --- | --- |
| address | string | Адрес сервера |
| check | string | Включены ли проверки |
| name | string | Имя сервера |
| port | int | Порт сервера |
| server_settings | [см. Описание структуры настроек](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-настроек) | Настройки сервера |
### Описание структуры фронтенда
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend | string | Имя бекенда, к которому подключен фронтенд |
| name | string | Имя фронтенда |
| bindings | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.37-Data_dynamix_lb_list.md#Описание-структуры-привязки-фронтенда) | Привязки фронтенда |
### Описание структуры привязки фронтенда
| Параметр | Тип | Описание |
| --- | --- | --- |
| address | string | Адрес, к которому привязан фронтенд |
| name | string | Имя привязки |
| port | int | Порт привязки |
### Описание структуры узлов
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend_ip | string | IP адрес бекенда |
| compute_id | int | ID виртуальной машины |
| frontend_ip | string | IP адрес фронтенда |
| mgmt_ip | string | IP адрес |
| network_id | int | ID сети |
## Пример использования
Пример вызова _data source_ функции **dynamix_lb_list**:
```terraform
data "dynamix_lb_list" "lbl" {
#фильтр по id балансировщика нагрузки
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени балансировщика нагрузки
#опциональный параметр
#тип - строка
#name = "test"
#id аккаунта для получения списка балансировщиков нагрузки
#опциональный параметр
#тип - целое число
#account_id = 11111
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 100
#фильтр по техническому статусу
#опциональный параметр
#тип - строка
#tech_status = "STOPPED"
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по IP front
#опциональный параметр
#тип - строка
#front_ip = "ENABLED"
#фильтр по IP back
#опциональный параметр
#тип - строка
#back_ip = "ENABLED"
#флаг влючения в результат удаленных балансировщиков нагрузки
#опциональный параметр
#тип - булев
#значение по-умолчанию - false
#если не задан - выводятся все доступные неудаленные балансировщики
#includedeleted = true
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 1
}
```
После успешного завершения такого вызова **dynamix_lb_list** в переменной `data.dynamix_lb_list.lbl` будут сохранены возвращаемые значения.

@ -0,0 +1,167 @@
_Data source_ функция **dynamix_lb_list_deleted** служит для получения информации об имеющихся в облачной платформе удаленных балансировщиках нагрузки.
## Аргументы
_Data source_ функция **dynamix_lb_list_deleted** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID балансировщика |
| name | string | :x: | Фильтр по имени балансировщика |
| account_id | int | :x: | Фильтр по ID аккаунта |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| tech_status | string | :x: | Фильтр по тех. статусу |
| front_ip | string | :x: | Фильтр по IP фронтенда |
| back_ip | string | :x: | Фильтр по IP бэкенда |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_lb_list_deleted** возвращает в указанную при вызове переменную, в поле _items_, массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| ha_mode | bool | Флаг, показывающий, включен ли режим haproxy |
| backends | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-backend) | Список бекендов |
| created_by | string | Аккаунт, создавший балансировщик |
| created_time | int | Время создания |
| deleted_by | string | Кем балансировщик был удален |
| deleted_by | int | Время удаления |
| desc | string | Описание |
| dp_api_user | string | Имя пользователя для работы |
| dp_api_password | string | Пароль пользователя |
| extnet_id | int | ID внешней сети |
| frontends | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-фронтенда) | Список фронтендов |
| gid | int | Grid ID балансировщика |
| guid | int | ID балансировщика |
| lb_id | int | ID балансировщика |
| manager_id | int | ID ресурса, к которому принадлежит данный балансировщик |
| manager_type | string | Тип ресурса, к которому принадлежит данный балансировщик |
| image_id | int | ID образа |
| milestones | int | Вехи |
| name | string | Имя балансировщика |
| part_k8s | bool | Является ли балансироващик частью кластера |
| primary_node | Struct{} [см. описание узлов](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-узлов) | Главный узел |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Имя ресурсной группы |
| secondary_node | Struct{} [см. описание узлов](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-узлов) | Второй узел |
| status | string | Статус |
| tech_status | string | Технический статус |
| updated_by | string | Кем балансировщик был обновлен |
| updated_time | string | Время последнего обновления |
| user_managed | bool | Флаг указывающий, может ли пользователь управлять балансировщиком напрямую |
| vins_id | int | ID виртуальной сети |
### Описание структуры backend
| Параметр | Тип | Описание |
| --- | --- | --- |
| algorithm | string | Алгоритм работы бекенда |
| name | string | Имя бекенда |
| server_default_settings | Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-настроек) | Описание настроек серверов бекенда по умолчанию |
| servers | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-сервера) | Список серверов |
### Описание структуры настроек
| Параметр | Тип | Описание |
| --- | --- | --- |
| downinter | int | Интервал между проверками на недоступность сервера |
| inter | int | Интервал между проверками на доступность сервера |
| rise | int | Кол-во попыток, после которых, сервер будет вновь включен в схему балансирования |
| fall | int | Кол-во неудачных попыток, после которых, сервер получит статус "unavailable" |
| slowstart | int | Интервал, в мс, в через который сервер получит статус "available" |
| maxconn | int | Кол-во соединений к северу, при достижении этого кол-ва, сервера выходит из схемы балансирования |
| maxqueue | int | Кол-во соедений в очереди к серверу |
| weight | int | Вес сервера для работы алгоритма балансирования по весу |
### Описание структуры сервера
| Параметр | Тип | Описание |
| --- | --- | --- |
| address | string | Адрес сервера |
| check | string | Включены ли проверки |
| name | string | Имя сервера |
| port | int | Порт сервера |
| server_settings | [см. Описание структуры настроек](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-настроек) | Настройки сервера |
### Описание структуры фронтенда
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend | string | Имя бекенда, к которому подключен фронтенд |
| name | string | Имя фронтенда |
| bindings | []Struct{} [см. ниже](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/06.01.38-Data_dynamix_lb_list_deleted.md#Описание-структуры-привязки-фронтенда) | Привязки фронтенда |
### Описание структуры привязки фронтенда
| Параметр | Тип | Описание |
| --- | --- | --- |
| address | string | Адрес, к которому привязан фронтенд |
| name | string | Имя привязки |
| port | int | Порт привязки |
### Описание структуры узлов
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend_ip | string | IP адрес бекенда |
| compute_id | int | ID виртуальной машины |
| frontend_ip | string | IP адрес фронтенда |
| mgmt_ip | string | IP адрес |
| network_id | int | ID сети |
## Пример использования
Пример вызова _data source_ функции **dynamix_lb_list_deleted**:
```terraform
data "dynamix_lb_list_deleted" "lbld" {
#фильтр по id балансировщика нагрузки
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени балансировщика нагрузки
#опциональный параметр
#тип - строка
#name = "test"
#id аккаунта для получения списка балансировщиков нагрузки
#опциональный параметр
#тип - целое число
#account_id = 11111
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 100
#фильтр по техническому статусу
#опциональный параметр
#тип - строка
#tech_status = "STOPPED"
#фильтр по IP front
#опциональный параметр
#тип - строка
#front_ip = "ENABLED"
#фильтр по IP back
#опциональный параметр
#тип - строка
#back_ip = "ENABLED"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 1
}
```
После успешного завершения такого вызова **dynamix_lb_list_deleted** в переменной `data.dynamix_lb_list_deleted.lbld` будут сохранены возвращаемые значения.

@ -0,0 +1,45 @@
_Data source_ функция **dynamix_disk_list_types** служит для получения информации о типах диска.
## Аргументы
_Data source_ функция **dynamix_disk_list_types** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_list_types** возвращает в указанную при вызове переменную, в поле _types_, массив, состоящий из строк, описывающих поддерживаемые в платформе типы дисков:
| Тип | Значение |
| --- | --- |
| B | Загрузочный тип диска |
| D | Диск для хранения данных |
| ANY | Любой тип |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_list_types**:
```terraform
data "dynamix_disk_list_types" "dlt" {
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
После успешного завершения такого вызова **dynamix_disk_list_types** в переменной `data.dynamix_disk_list_types.dlt` будут сохранены возвращаемые значения.

@ -0,0 +1,52 @@
_Data source_ функция **dynamix_disk_list_types_detailed** служит для получения расширенной информации о поддерживаемых платформой типах дисков. В отличии от другой _data source_ функции **dynamix_disk_list_types**, данная функция позволяет получить информацию о поддерживаемых пулами и sep типов дисков.
## Аргументы
_Data source_ функция **dynamix_disk_list_types_detailed** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_list_types_detailed** возвращает в указанную при вызове переменную, в поле _items_, массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| pools | []Struct см.ниже | Пул хранилища |
| sep_id | int | ID storage endpoint (SEP). SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск |
| sep_name | int | Имя storage endpoint |
### Описание структуры pool
| Параметр | Тип | Описание |
| --- | --- | --- |
| name | string | Имя пул |
| system | string | Флаг, обозначающий служебный пул, для размещения там данных о блокировках |
| types | []string | Список поддерживаемых типов |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_list_types_detailed*:
```terraform
data "dynamix_disk_list_types_detailed" "dltd" {
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
После успешного завершения такого вызова **dynamix_disk_list_types_detailed** в переменной `data.dynamix_disk_list_types_detailed.dltd` будут сохранены возвращаемые значения.

@ -0,0 +1,129 @@
_Data source_ функция **dynamix_disk_list_deleted** служит для получения информации об удаленных дисках.
## Аргументы
_Data source_ функция **dynamix_disk_list_deleted** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID диска |
| name | string | :x: | Фильтр по имени диска |
| account_name | string | :x: | Фильтр по имени аккаунта |
| disk_max_size | int | :x: | Фильтр по макс. размеру диска |
| shared | bool | :x: | Фильтр по shared |
| account_id | int | :x: | id аккаунта для получения списка дисков |
| type | string | :x: | Тип диска. Возможные типы: "b" - boot_disk, "d" - data_disk |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_list_deleted** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | id аккаунта |
| account_name | string | имя аккаунта |
| created_time | int | Время создания диска |
| deleted_time | int | Время удаления диска |
| desc | string | Описание диска |
| destruction_time | int | Время уничтожения диска |
| devicename | string | Имя устройства |
| gid | int | Grid id |
| disk_id | int | id диска |
| image_id | int | id образа |
| images | []int | id образов |
| iotune | Struct{<br/>total_iops_sec int<br/>} | Информация об IO-интерфейсах<br/>Общее кол-во операций в секунду<br/>&nbsp;<br/> |
| machine_id | int | id маишны (устаревшее) |
| machine_name | string | Наименование машины (устаревшее) |
| name | string | Наименование диска |
| order | int | Номер диска в последовательности |
| params | string | Параметры диска |
| parent_id | int | id родителя |
| pci_slot | int | id pci слота |
| pool | string | Наименование пула диска |
| purge_time | int | Время удаления |
| replication | Struct{} [см. ниже](#описание-структуры-replication) | Информация о реплике диска |
| res_id | string | Идентификатор ресурса |
| res_name | string | Наименование ресурсов |
| role | string | Роль диска |
| sep_id | int | id sep |
| sep_type | string | Тип sep |
| size_max | int | Максимальный размер диска |
| shareable | bool | Разрешено ли делиться диском |
| snapshots | []Struct{<br/>guid string<br/>label string<br/>res_id string<br/>snap_set_guid string<br/>snap_set_time int<br/>timestamp int<br/>} | Информация о снимках состояний диска<br/>guid снимка<br/>Наименование снимка<br/>id ресурса снимка<br/>Установленный guid снимка<br/>Установленное время снимка<br/>Время снимка<br>&nbsp;<br/> |
| status | string | Статус диска |
| tech_status | string | Технический статус диска |
| type | string | Тип диска |
| vmid | int | id виртуальной машины |
### Описание структуры replication
| Параметр | Тип | Описание |
| --- | --- | --- |
| disk_id | int | id диска |
| pool_id | string | id пула |
| role | string | Роль диска (главный или реплика) |
| self_volume_id | string | id раздела |
| storage_id | int | id хранилища |
| volume_id | int | id раздела |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_list_deleted**:
```terraform
data "dynamix_disk_list_deleted" "dld" {
#фильтр по id диска
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени диска
#опциональный параметр
#тип - строка
#name = "data_disk"
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#account_name = "user"
#фильтр по максимальному размеру диска
#опциональный параметр
#тип - целое число
#disk_max_size = 100
#фильтр по доступности иным пользователям
#опциональный параметр
#тип - булев
#shared = "false"
#id аккаунта для получения списка дисков
#опциональный параметр
#тип - целое число
#account_id = 11111
#тип диска
#опциональный параметр
#тип - строка
#возможные типы: "b" - boot_disk, "d" - data_disk
#type = "d"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#кол-во страниц для вывода
#опциональный параметр
#тип - целое число
#page = 1
#размер страницы
#опциональный параметр
#тип - число
#size = 1
}
```
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-dynamix/src/branch/main/wiki/1.2.1/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова **dynamix_disk_list_deleted** в переменной `data.dynamix_disk_list_deleted.dld` будут сохранены возвращаемые значения.

@ -0,0 +1,160 @@
_Data source_ функция **dynamix_disk_list_unattached** служит для получения информации о неподключенных к виртуальным машинам дисках.
## Аргументы
_Data source_ функция **dynamix_disk_list_unattached** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID диска |
| account_name | string | :x: | Фильтр по имени аккаунта |
| disk_max_size | int | :x: | Фильтр по макс. размеру диска |
| status | string | :x: | Фильтр по статусу |
| account_id | int | :x: | id аккаунта для получения списка дисков |
| type | string | :x: | Тип диска. Возможные типы: "b" - boot_disk, "d" - data_disk |
| sep_id | int | :x: | Фильтр по SEP id. SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск |
| pool_name | string | :x: | Фильтр по наименованию pool |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_list_unattached** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| ckey | string | CKey |
| meta | []string | Meta |
| account_id | int | id аккаунта |
| account_name | string | имя аккаунта |
| acl | string | Acces Control List |
| boot_partition | int | Загрузочный раздел |
| created_time | int | Время создания диска |
| deleted_time | int | Время удаления диска |
| desc | string | Описание диска |
| destruction_time | int | Время уничтожения диска |
| disk_path | string | Адрес диска |
| gid | int | Grid id |
| guid | int | Идентификатор диска |
| disk_id | int | id диска |
| image_id | int | id образа |
| images | []int | id образов |
| iotune | Struct{}[см. ниже](#описание-структуры-iotune) | Информация об ограничениях IO диска |
| iqn | string | iqn диска |
| login | string | Логин для доступа к диску |
| milestones | int | Вехи |
| disk_name | string | Наименование диска |
| order | int | Номер диска в последовательности |
| params | string | Параметры диска |
| parent_id | int | id родителя |
| passwd | string | Пароль для доступа к диску |
| pci_slot | int | id pci слота |
| pool | string | Наименование пула диска |
| purge_time | int | Время удаления |
| reality_device_number | int | Реальный номер устройства |
| reference_id | int | id ссылки на диск |
| res_id | string | Идентификатор ресурса |
| res_name | string | Наименование ресурсов |
| role | string | Роль диска |
| sep_id | int | id sep |
| sep_type | string | Тип sep |
| shareable | bool | Флаг, говорящий о том, является ли диск общим |
| size_max | int | Максимальный размер диска |
| snapshots | []Struct{}[см. ниже](#описание-структуры-snapshots) | Снимки состояния диска |
| status | string | Статус диска |
| tech_status | string | Технический статус диска |
| type | string | Тип диска |
| vmid | int | id виртуальной машины (устаревшее) |
### Описание структуры iotune
| Параметр | Тип | Описание |
| --- | --- | --- |
| read_bytes_sec | int | Кол-во байт для чтения в секунду |
| read_bytes_sec_max | int | Максимальное кол-во байт для чтения |
| read_iops_sec | int | Кол-во операций чтения io в секунду |
| read_iops_sec_max | int | Максимальное число io операций чтения |
| size_iops_sec | int | Размер io операций |
| total_bytes_sec | int | Общий размер байт в секунду |
| total_bytes_sec_max | int | Максимальный общий размер байт в секунду |
| total_iops_sec | int | Общее кол-во io операций в секунду |
| total_iops_sec_max | int | Максимальное общее кол-во io операций в секунду |
| write_bytes_sec | int | Кол-во байт для записи в секунду |
| write_bytes_sec_max | int | Максимальное кол-во байт для записи в секунду |
| write_iops_sec | int | Кол-во операций записи в секунду |
| write_iops_sec_max | int | Максимальное число операций записей |
### Описание структуры snapshots
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | string | id снимка |
| label | string | Наименование снимка |
| res_id | string | Ссылка на снимок |
| snap_set_guid | string | Установленный id снимка |
| snap_set_time | int | Установленное время снимка |
| timestamp | int | Время снимка |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_list_unattched**:
```terraform
data "dynamix_disk_list_unattached" "dlu" {
#фильтр по id диска
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени аккаунта
#опциональный параметр
#тип - строка
#account_name = "user"
#фильтр по максимальному размеру диска
#опциональный параметр
#тип - целое число
#disk_max_size = 100
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по типу
#опциональный параметр
#тип - строка
#возможные типы: "b" - boot_disk, "d" - data_disk
#type = "d"
#фильтр по id аккаунта
#опциональный параметр
#тип - целое число
#account_id = 100
#фильтр по id sep
#опциональный параметр
#тип - целое число
#sep_id = 1
#фильтр по имени pool
#опциональный параметр
#тип - строка
#pool_name = "test"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 3
}
```
После успешного завершения такого вызова **dynamix_disk_list_unattached** в переменной `data.dynamix_disk_list_unattached.dlu` будут сохранены возвращаемые значения.

@ -0,0 +1,32 @@
_Data source_ функция **dynamix_disk_snapshot_list** служит для получения списка снимков состояния диска.
## Аргументы
_Data source_ функция **dynamix_snapshot_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| disk_id | int | :heavy_check_mark: | ID диска для получения списка снимком состояния |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_snapshot_list** возвращает в указанную при вызове переменную, в поле _items_ массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| label | string | Название снимка |
| guid | string | ID снимка |
| timestamp | int | Время снимка |
| res_id | string | Ссылка на снимок |
| snap_set_guid | string | ID набора снимков, в котором лежит снимок состояния |
| snap_set_time | string | Время набора |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_snapshot_list**:
```terraform
data "dynamix_disk_snapshot_list" "ds" {
#Номер диска
#обязательный параметр
#тип - целое число
disk_id = 20100
}
```
После успешного завершения такого вызова **dynamix_disk_snapshot_list** в переменной `data.dynamix_disk_snapshot_list.ds` будут сохранены возвращаемые значения.

@ -0,0 +1,38 @@
_Data source_ функция **dynamix_disk_snapshot** служит для получения информации о снимке состояния диска.
## Аргументы
_Data source_ функция **dynamix_disk_snapshot** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| disk_id | int | :heavy_check_mark: | ID диска, снимок которого необходимо получить |
| label | string | :heavy_check_mark: | ID снимка |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_disk_snapshot** возвращает в указанную при вызове переменную следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| disk_id | int | ID диска, снимок которого необходимо получить |
| label | string | ID снимка |
| timestamp | int | Время снимка |
| res_id | string | Ссылка на снимок |
| snap_set_guid | string | ID набора снимков, в котором лежит снимок состояния |
| snap_set_time | string | Время набора |
## Пример использования
Пример вызова _data source_ функции **dynamix_disk_snapshot**:
```terraform
data "dynamix_disk_snapshot" "ds" {
#Номер диска
#обязательный параметр
#тип - целое число
disk_id = 20100
#Ярлык диска
#обязательный параметр
#тип - строка
label = "label"
}
```
После успешного завершения такого вызова **dynamix_disk_snapshot** в переменной `data.dynamix_disk_snapshot.ds` будут сохранены возвращаемые значения.

@ -0,0 +1,131 @@
_Data source_ функция **dynamix_k8s** служит для получения информации о кластере Kubernetes (k8s). Кластер позволяет построить распределенную отказоустойчивую систему.
## Аргументы
_Data source_ функция **dynamix_k8s** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| k8s_id | int | :heavy_check_mark: | ID кластера |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_k8s** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| acl | Struct{} [см. ниже](#описание-структуры-acl) | acl |
| account_id | int | ID аккаунта |
| account_name | string | Имя аккаунта |
| address_vip | Struct{} [см. ниже](#описание-структуры-address_vip) | Адреса VIP |
| bservice_id | int | ID bservice |
| k8sci_id | int | ID образа кластера |
| created_by | string | Кем был создан ресурс |
| created_time | int | Время создания ресурса |
| deleted_by | string | Кем был удален ресурс |
| deleted_time | int | Время удаления ресурса |
| extnet_id | int | ID внешней сети |
| extnet_only | bool | Доступна ли только выбранная внешняя сеть |
| ha_mode | bool | Режим высокой доступности балансировщика нагрузки |
| k8s_ci_name | string | Имя образа кластера |
| masters | []Struct{} [см. ниже](#описание-структуры-masters) | Структура компьютов мастеров |
| network_plugin | string | Сетевой плагин |
| workers | []Struct{} [см. ниже](#описание-структуры-workers) | Структура компьютов воркеров |
| lb_id | int | ID балансировщика нагрзуки |
| lb_ip | string | IP балансировщика нагрзуки |
| name | string | Имя ресурса |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Имя ресурсной группы |
| status | string | Статус ресурса |
| tech_status | string | Технический статус ресурса |
| updated_by | string | Кем был обновлен ресурс |
| updated_time | int | Время последнего обновления ресурса |
| kubeconfig | string | Конфиг |
| vins_id | int | ID виртуальной сети |
### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_acl | []Struct{} [см. ниже](#описание-структуры-списка-acl) | account_acl |
| k8s_acl | []Struct{} [см. ниже](#описание-структуры-списка-acl) | k8s_acl |
| rg_acl | []Struct{} [см. ниже](#описание-структуры-списка-acl) | rg_acl |
### Описание структуры address_vip
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend_ip | string | IP адрес данного узла во внутренней сети |
| frontend_ip | string | IP адрес данного узла во внешней сети |
### Описание структуры списка acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| explicit | bool | explicit |
| guid | string | ID ресурса |
| right | string | right |
| status | string | Статус ресурса |
| type | string | Тип ресурса |
| user_group_id | string | ID группы |
### Описание структуры masters
| Параметр | Тип | Описание |
| --- | --- | --- |
| cpu | int | Кол-во cpu на компьютах master |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация masters |
| disk | int | ID диска |
| master_id | int | ID группы master |
| name | string | Имя группы master |
| num | int | Кол-во компьютов в группе master |
| ram | int | Кол-во Ram на компьютах группы master |
### Описание структуры workers
| Параметр | Тип | Описание |
| --- | --- | --- |
| annotations | []string | Аннотации группы workers |
| cpu | int | Кол-во cpu на компьютах workers |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация masters |
| disk | int | ID диска |
| guid | string | ID ресурса |
| id | int | ID группы workers |
| labels | []string | Лейблы группы workers |
| name | string | Имя ресурса |
| num | int | Кол-во компьютов в группе workers |
| ram | int | Кол-во Ram на компьютах группы workers |
| taints | []string | огранечители группы workers |
### Описание структуры списка detailed_info
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |
| natable_vins_ip | string | IP NAT |
| natable_vins_network | string | IP виртуальной сети |
### Описание структуры списка interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |
## Пример использования
Пример вызова _data source_ функции **dynamix_k8s**:
```terraform
data "dynamix_k8s" "k8s" {
#id кластера
#обязательный параметр
#тип - целое число
k8s_id = 49304
}
```
После успешного завершения такого вызова **dynamix_k8s** в переменной `data.dynamix_k8s.k8s` будут сохранены возвращаемые значения.

@ -0,0 +1,171 @@
_Data source_ функция **dynamix_k8s_list** служит для получения информации о списке кластеров Kubernetes (k8s).
## Аргументы
_Data source_ функция **dynamix_k8s_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID кластера |
| name | string | :x: | Фильтр по имени кластера |
| ip_address | string | :x: | Фильтр по IP адресу |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| lb_id | int | :x: | Фильтр по ID балансировщика |
| bservice_id | int | :x: | Фильтр по ID basic service |
| status | string | :x: | Фильтр по статусу |
| tech_status | string | :x: | Фильтр по тех. статусу |
| includedeleted | bool | :x: | Включить в результат удаленные балансировщики |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_k8s_list** возвращает в указанную при вызове переменную, в поле items массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Имя аккаунта |
| acl | []string | acl |
| bservice_id | int | ID bservice |
| ci_id | int | ID образа кластера |
| created_by | string | Кем был создан ресурс |
| created_time | int | Время создания ресурса |
| deleted_by | string | Кем был удален ресурс |
| deleted_time | int | Время удаления ресурса |
| desc | string | Описание ресурса |
| extnet_id | int | ID внешней сети |
| gid | int | Grid ID |
| guid | int | ID ресурса |
| k8s_id | int | ID кластера |
| lb_id | int | ID балансировщика нагрзуки |
| milestones | int | Milestones |
| k8s_name | string | Имя кластера k8s |
| network_plugin | string | Сетевой плагин |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Имя ресурсной группы |
| service_account | Struct{} [см. ниже](#описание-структуры-service_account) | информация о аккаунте кластера |
| status | string | Статус ресурса |
| tech_status | string | Технический статус ресурса |
| updated_by | string | Кем был обновлен ресурс |
| updated_time | int | Время последнего обновления ресурса |
| vins_id | int | ID виртуальной сети |
| workers_groups | []Struct{} [см. ниже](#описание-структуры-workers_groups) | группы воркеров кластера |
### Описание-структуры-service_account
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | int | ID ресурса |
| password | string | Пароль аккаунта |
| username | string | Username аккаунта |
### Описание-структуры-workers_groups
| Параметр | Тип | Описание |
| --- | --- | --- |
| annotations | []string | Аннотации группы workers |
| cpu | int | Кол-во cpu на компьютах workers |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация о группе |
| disk | int | ID диска |
| guid | string | ID ресурса |
| detailed_info_id | int | ID группы workers |
| labels | []string | Лейблы группы workers |
| name | string | Имя ресурса |
| num | int | Кол-во компьютов в группе workers |
| ram | int | Кол-во Ram на компьютах группы workers |
| taints | []string | огранечители группы workers |
### Описание структуры списка detailed_info
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |
| natable_vins_ip | string | IP NAT |
| natable_vins_network | string | IP виртуальной сети |
### Описание структуры списка interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |
## Пример использования
Пример вызова _data source_ функции **dynamix_k8s_list**:
```terraform
data "dynamix_k8s_list" "k8s_list" {
#фильтр по id кластера
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени кластера
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по ip
#опциональный параметр
#тип - строка
#ip_address = "test"
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 100
#фильтр по id балансировщика нагрузки
#опциональный параметр
#тип - целое число
#lb_id = 100
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#bservice_id = 100
#фильтр по статусу
#опциональный параметр
#тип - строка
#status = "ENABLED"
#фильтр по техническому статусу
#опциональный параметр
#тип - строка
#tech_status = "STOPPED"
#включение удаленных k8s в результат
#опциональный параметр
#тип - булев
#если не задан - выводятся все неудаленные данные
#includedeleted = true
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 1
}
```
После успешного завершения такого вызова **dynamix_k8s_list** в переменной `data.dynamix_k8s_list.k8s_list` будут сохранены возвращаемые значения.

@ -0,0 +1,156 @@
_Data source_ функция **dynamix_k8s_list_deleted** служит для получения информации о списке удаленных кластеров Kubernetes (k8s).
## Аргументы
_Data source_ функция **dynamix_k8s_list_deleted** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| by_id | int | :x: | Фильтр по ID кластера |
| name | string | :x: | Фильтр по имени кластера |
| ip_address | string | :x: | Фильтр по IP адресу |
| rg_id | int | :x: | Фильтр по ID рес. группы |
| lb_id | int | :x: | Фильтр по ID балансировщика |
| bservice_id | int | :x: | Фильтр по ID basic service |
| tech_status | string | :x: | Фильтр по тех. статусу |
| sort_by | string | :x: | Фильтр по одному из поддерживаемых полей, формат: +или- название поля |
| page | int | :x: | Номер страниц |
| size | int | :x: | Размер страницы |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_k8s_list_deleted** возвращает в указанную при вызове переменную, в поле items массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_id | int | ID аккаунта |
| account_name | string | Имя аккаунта |
| acl | []string | acl |
| bservice_id | int | ID bservice |
| ci_id | int | ID образа кластера |
| created_by | string | Кем был создан ресурс |
| created_time | int | Время создания ресурса |
| deleted_by | string | Кем был удален ресурс |
| deleted_time | int | Время удаления ресурса |
| desc | string | Описание ресурса |
| extnet_id | int | ID внешней сети |
| gid | int | Grid ID |
| guid | int | ID ресурса |
| k8s_id | int | ID кластера |
| lb_id | int | ID балансировщика нагрзуки |
| milestones | int | Milestones |
| k8s_name | string | Имя кластера k8s |
| rg_id | int | ID ресурсной группы |
| rg_name | string | Имя ресурсной группы |
| service_account | Struct{} [см. ниже](#описание-структуры-service_account) | информация о аккаунте кластера |
| tech_status | string | Технический статус ресурса |
| updated_by | string | Кем был обновлен ресурс |
| updated_time | int | Время последнего обновления ресурса |
| vins_id | int | ID виртуальной сети |
| workers_groups | []Struct{} [см. ниже](#описание-структуры-workers_groups) | группы воркеров кластера |
### Описание-структуры-service_account
| Параметр | Тип | Описание |
| --- | --- | --- |
| guid | int | ID ресурса |
| password | string | Пароль аккаунта |
| username | string | Username аккаунта |
### Описание-структуры-workers_groups
| Параметр | Тип | Описание |
| --- | --- | --- |
| annotations | []string | Аннотации группы workers |
| cpu | int | Кол-во cpu на компьютах workers |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация о группе |
| disk | int | ID диска |
| guid | string | ID ресурса |
| detailed_info_id | int | ID группы workers |
| labels | []string | Лейблы группы workers |
| name | string | Имя ресурса |
| num | int | Кол-во компьютов в группе workers |
| ram | int | Кол-во Ram на компьютах группы workers |
| taints | []string | ограничители группы workers |
### Описание структуры списка detailed_info
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |
| natable_vins_ip | string | IP NAT |
| natable_vins_network | string | IP виртуальной сети |
### Описание структуры списка interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |
## Пример использования
Пример вызова _data source_ функции **dynamix_k8s_list_deleted**:
```terraform
data "dynamix_k8s_list_deleted" "k8s_list_deleted" {
#фильтр по id кластера
#опциональный параметр
#тип - целое число
#by_id = 100
#фильтр по имени кластера
#опциональный параметр
#тип - строка
#name = "test"
#фильтр по ip
#опциональный параметр
#тип - строка
#ip_address = "test"
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#rg_id = 100
#фильтр по id балансировщика нагрузки
#опциональный параметр
#тип - целое число
#lb_id = 100
#фильтр по id ресурсной группы
#опциональный параметр
#тип - целое число
#bservice_id = 100
#фильтр по техническому статусу
#опциональный параметр
#тип - строка
#tech_status = "STOPPED"
#сортировка по одному из поддерживаемых полей
#опциональный параметр
#тип - строка
#формат - "+поле" по возрастанию / "-поле" по убыванию
#sort_by = "+name"
#номер страницы для отображения
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#page = 1
#размер страницы
#опциональный параметр
#тип - целое число
#если не задан - выводятся все доступные данные
#size = 1
}
```
После успешного завершения такого вызова **dynamix_k8s_list_deleted** в переменной `data.dynamix_k8s_list_deleted.k8s_list_deleted` будут сохранены возвращаемые значения.

@ -0,0 +1,66 @@
_Data source_ функция **dynamix_k8s_wg** служит для получения информации о группе воркеров кластера Kubernetes (k8s).
## Аргументы
_Data source_ функция **dynamix_k8s_wg** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| k8s_id | int | :heavy_check_mark: | ID кластера |
| wg_id | int | :heavy_check_mark: | ID группы воркеров |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_k8s_wg** возвращает следующие параметры:
| Параметр | Тип | Описание |
| --- | --- | --- |
| name | string | Имя группы воркеров |
| num | int | кол-во компьютов в ресурсе |
| cpu | int | Кол-во cpu на нодах |
| ram | int | Кол-во ram на нодах |
| disk | int | ID диска |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация masters |
| labels | []string | Лейблы ресурса |
| guid | int | ID ресурса |
| annotations | []string | Аннотации ресурса |
| taints | []string | ограничители группы workers |
### Описание структуры списка detailed_info
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Технический статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |
| natable_vins_ip | string | IP NAT |
| natable_vins_network | string | IP виртуальной сети |
### Описание структуры списка interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |
## Пример использования
Пример вызова _data source_ функции **dynamix_k8s_wg**:
```terraform
data "dynamix_k8s_wg" "k8s_wg" {
#id кластера
#обязательный параметр
#тип - целое число
k8s_id = 49304
#id группы воркеров
#обязательный параметр
#тип - целое число
wg_id = 43329
}
```
После успешного завершения такого вызова **dynamix_k8s_wg** в переменной `data.dynamix_k8s_wg.k8s_wg` будут сохранены возвращаемые значения.

@ -0,0 +1,61 @@
_Data source_ функция **dynamix_k8s_wg_list** служит для получения информации о списке групп воркеров кластера Kubernetes (k8s).
## Аргументы
_Data source_ функция **dynamix_k8s_wg_list** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| k8s_id | int | :heavy_check_mark: | ID кластера |
## Возвращаемые значения
В случае успешного выполнения _data source_ функция **dynamix_k8s_wg_list** возвращает в указанную при вызове переменную, в поле items массив, каждый элемент которого состоит из следующих параметров:
| Параметр | Тип | Описание |
| --- | --- | --- |
| name | string | Имя группы воркеров |
| num | int | кол-во компьютов в ресурсе |
| cpu | int | Кол-во cpu на нодах |
| ram | int | Кол-во ram на нодах |
| disk | int | ID диска |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация masters |
| labels | []string | Лейблы ресурса |
| wg_id | int | ID группы воркеров кластера |
| guid | int | ID ресурса |
| annotations | []string | Аннотации ресурса |
| taints | []string | ограничители группы workers |
### Описание структуры списка detailed_info
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Технический статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |
| natable_vins_ip | string | IP NAT |
| natable_vins_network | string | IP виртуальной сети |
### Описание структуры списка interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |
## Пример использования
Пример вызова _data source_ функции **dynamix_k8s_wg_list**:
```terraform
data "dynamix_k8s_wg_list" "k8s_wg_list" {
#id кластера
#обязательный параметр
#тип - целое число
k8s_id = 49304
}
```
После успешного завершения такого вызова **dynamix_k8s_wg_list** в переменной `data.dynamix_k8s_wg_list.k8s_wg_list` будут сохранены возвращаемые значения.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save