From caf7213bca1f80f4153cf5d81cdd6a757cb102a0 Mon Sep 17 00:00:00 2001 From: Tim Tkachev Date: Fri, 26 May 2023 17:12:03 +0300 Subject: [PATCH] 4.1.0 --- CHANGELOG.md | 17 +- Makefile | 2 +- internal/provider/data_sources_map.go | 3 + internal/provider/resource_map.go | 34 +- .../flipgroup/data_source_flipgroup.go | 191 +++++++++++ .../flipgroup/data_source_flipgroup_list.go | 210 ++++++++++++ .../service/cloudapi/flipgroup/flattens.go | 107 ++++++ .../cloudapi/flipgroup/resource_flipgroup.go | 309 ++++++++++++++++++ .../cloudapi/flipgroup/utility_flipgroup.go | 167 ++++++++++ internal/service/cloudapi/k8s/flattens.go | 23 +- .../service/cloudapi/k8s/node_subresource.go | 4 +- internal/service/cloudapi/k8s/resource_k8s.go | 4 +- .../service/cloudapi/k8s/resource_k8s_wg.go | 16 +- internal/service/cloudapi/k8s/utility_k8s.go | 5 +- .../cloudapi/kvmvm/resource_compute.go | 10 +- .../service/cloudapi/kvmvm/utility_compute.go | 20 +- .../service/cloudapi/vins/resource_vins.go | 10 +- samples/cloudapi/data_account/main.tf | 4 +- .../cloudapi/data_account_audits_list/main.tf | 4 +- .../data_account_computes_list/main.tf | 4 +- .../data_account_consumed_units/main.tf | 4 +- .../main.tf | 4 +- .../data_account_deleted_list/main.tf | 4 +- .../cloudapi/data_account_disks_list/main.tf | 4 +- .../data_account_flipgroups_list/main.tf | 4 +- samples/cloudapi/data_account_list/main.tf | 4 +- .../data_account_reserved_units/main.tf | 4 +- samples/cloudapi/data_account_rg_list/main.tf | 4 +- .../data_account_templates_list/main.tf | 4 +- .../cloudapi/data_account_vins_list/main.tf | 4 +- samples/cloudapi/data_bservice/main.tf | 4 +- .../data_bservice_deleted_list/main.tf | 4 +- samples/cloudapi/data_bservice_group/main.tf | 4 +- samples/cloudapi/data_bservice_list/main.tf | 4 +- .../data_bservice_snapshot_list/main.tf | 4 +- samples/cloudapi/data_disk/main.tf | 4 +- samples/cloudapi/data_disk_list/main.tf | 4 +- .../cloudapi/data_disk_list_deleted/main.tf | 4 +- samples/cloudapi/data_disk_list_types/main.tf | 4 +- .../data_disk_list_types_detailed/main.tf | 4 +- .../data_disk_list_unattached/main.tf | 4 +- samples/cloudapi/data_disk_snapshot/main.tf | 4 +- .../cloudapi/data_disk_snapshot_list/main.tf | 4 +- samples/cloudapi/data_extnet/main.tf | 4 +- .../data_extnet_computes_list/main.tf | 4 +- samples/cloudapi/data_extnet_default/main.tf | 4 +- samples/cloudapi/data_extnet_list/main.tf | 4 +- samples/cloudapi/data_flipgroup/main.tf | 32 ++ samples/cloudapi/data_flipgroup_list/main.tf | 37 +++ samples/cloudapi/data_image/main.tf | 4 +- samples/cloudapi/data_image_list/main.tf | 4 +- samples/cloudapi/data_k8s/main.tf | 4 +- samples/cloudapi/data_k8s_computes/main.tf | 2 +- samples/cloudapi/data_k8s_list/main.tf | 4 +- .../cloudapi/data_k8s_list_deleted/main.tf | 4 +- samples/cloudapi/data_k8s_wg/main.tf | 4 +- samples/cloudapi/data_k8s_wg_list/main.tf | 4 +- samples/cloudapi/data_kvmvm/main.tf | 4 +- samples/cloudapi/data_kvmvm_audits/main.tf | 4 +- .../cloudapi/data_kvmvm_get_audits/main.tf | 4 +- .../data_kvmvm_get_console_url/main.tf | 4 +- samples/cloudapi/data_kvmvm_get_log/main.tf | 4 +- samples/cloudapi/data_kvmvm_list/main.tf | 4 +- samples/cloudapi/data_kvmvm_pfw_list/main.tf | 4 +- samples/cloudapi/data_kvmvm_user_list/main.tf | 4 +- samples/cloudapi/data_lb/main.tf | 4 +- samples/cloudapi/data_lb_list/main.tf | 4 +- samples/cloudapi/data_lb_list_deleted/main.tf | 4 +- samples/cloudapi/data_locations_list/main.tf | 4 +- samples/cloudapi/data_rg/main.tf | 4 +- .../data_rg_affinity_group_computes/main.tf | 4 +- .../data_rg_affinity_groups_get/main.tf | 4 +- .../data_rg_affinity_groups_list/main.tf | 4 +- samples/cloudapi/data_rg_audits/main.tf | 4 +- samples/cloudapi/data_rg_list/main.tf | 4 +- .../cloudapi/data_rg_list_computes/main.tf | 4 +- samples/cloudapi/data_rg_list_deleted/main.tf | 4 +- samples/cloudapi/data_rg_list_lb/main.tf | 4 +- samples/cloudapi/data_rg_list_pfw/main.tf | 4 +- samples/cloudapi/data_rg_list_vins/main.tf | 4 +- samples/cloudapi/data_rg_usage/main.tf | 4 +- samples/cloudapi/data_snapshot_list/main.tf | 4 +- samples/cloudapi/data_vgpu/main.tf | 4 +- samples/cloudapi/data_vins/main.tf | 4 +- samples/cloudapi/data_vins_audits/main.tf | 4 +- .../cloudapi/data_vins_ext_net_list/main.tf | 4 +- samples/cloudapi/data_vins_ip_list/main.tf | 4 +- samples/cloudapi/data_vins_list/main.tf | 4 +- .../cloudapi/data_vins_list_deleted/main.tf | 4 +- .../cloudapi/data_vins_nat_rule_list/main.tf | 4 +- samples/cloudapi/resource_account/main.tf | 4 +- samples/cloudapi/resource_bservice/main.tf | 4 +- .../cloudapi/resource_bservice_group/main.tf | 4 +- samples/cloudapi/resource_disk/main.tf | 4 +- .../cloudapi/resource_disk_snapshot/main.tf | 4 +- samples/cloudapi/resource_flipgroup/main.tf | 67 ++++ samples/cloudapi/resource_image/main.tf | 102 ++++++ samples/cloudapi/resource_k8s/main.tf | 2 +- samples/cloudapi/resource_k8s_wg/main.tf | 15 +- samples/cloudapi/resource_kvmvm/main.tf | 4 +- samples/cloudapi/resource_lb/main.tf | 4 +- samples/cloudapi/resource_lb_backend/main.tf | 4 +- .../resource_lb_backend_server/main.tf | 4 +- samples/cloudapi/resource_lb_frontend/main.tf | 4 +- .../resource_lb_frontend_bind/main.tf | 4 +- samples/cloudapi/resource_pfw/main.tf | 52 +++ samples/cloudapi/resource_rg/main.tf | 4 +- samples/cloudapi/resource_snapshot/main.tf | 4 +- samples/cloudapi/resource_vins/main.tf | 4 +- .../data_account_audits_list/main.tf | 4 +- .../data_account_computes_list/main.tf | 4 +- .../data_account_deleted_list/main.tf | 4 +- .../data_account_disks_list/main.tf | 4 +- .../data_account_flipgroups_list/main.tf | 4 +- samples/cloudbroker/data_account_list/main.tf | 4 +- .../cloudbroker/data_account_rg_list/main.tf | 4 +- .../data_account_vins_list/main.tf | 4 +- samples/cloudbroker/data_disk/main.tf | 4 +- samples/cloudbroker/data_disk_list/main.tf | 4 +- samples/cloudbroker/data_grid/main.tf | 4 +- samples/cloudbroker/data_grid_list/main.tf | 4 +- samples/cloudbroker/data_image/main.tf | 4 +- samples/cloudbroker/data_image_list/main.tf | 4 +- .../data_image_list_stacks/main.tf | 4 +- samples/cloudbroker/data_pcidevice/main.tf | 4 +- .../cloudbroker/data_pcidevice_list/main.tf | 4 +- samples/cloudbroker/data_sep/main.tf | 4 +- samples/cloudbroker/data_sep_config/main.tf | 4 +- .../cloudbroker/data_sep_consumption/main.tf | 4 +- .../cloudbroker/data_sep_disk_list/main.tf | 4 +- samples/cloudbroker/data_sep_list/main.tf | 4 +- samples/cloudbroker/data_sep_pool/main.tf | 4 +- .../resource_delete_images/main.tf | 4 +- samples/cloudbroker/resource_disk/main.tf | 4 +- samples/cloudbroker/resource_image/main.tf | 4 +- .../cloudbroker/resource_image_cdrom/main.tf | 4 +- .../cloudbroker/resource_pcidevice/main.tf | 4 +- samples/cloudbroker/resource_sep/main.tf | 4 +- .../cloudbroker/resource_sep_config/main.tf | 4 +- .../resource_virtual_image/main.tf | 4 +- 140 files changed, 1610 insertions(+), 291 deletions(-) create mode 100644 internal/service/cloudapi/flipgroup/data_source_flipgroup.go create mode 100644 internal/service/cloudapi/flipgroup/data_source_flipgroup_list.go create mode 100644 internal/service/cloudapi/flipgroup/flattens.go create mode 100644 internal/service/cloudapi/flipgroup/resource_flipgroup.go create mode 100644 internal/service/cloudapi/flipgroup/utility_flipgroup.go create mode 100644 samples/cloudapi/data_flipgroup/main.tf create mode 100644 samples/cloudapi/data_flipgroup_list/main.tf create mode 100644 samples/cloudapi/resource_flipgroup/main.tf create mode 100644 samples/cloudapi/resource_image/main.tf create mode 100644 samples/cloudapi/resource_pfw/main.tf diff --git a/CHANGELOG.md b/CHANGELOG.md index ea1ce13..82e768f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,13 @@ -## Version 4.0.2 +## Version 4.1.0 ## Features -- Added new data source decort_k8s_computes used to list all VMs in k8s cluster -- Added the ability to manipulate worker-groups inside resource decort_k8s - - Added new required field name to workers block - - Added new optional fields (labels, annotations, taints) to workers block +- Added cloudapi/flipgroup functionality to provider: + - decort_flipgroup data source - read info about created flipgroup + - decort_flipgroup_list data source - read info about all created flipgroups + - decort_flipgroup resource - manage flipgroup instance -## Bug Fix -- Fixed incorrect state reading in resource decort_k8s +## Bug Fixes +- Increased resource_vins timeouts +- Automated compute start/stop when managing networks +- Removed reading of default generated label "workersGroupName=" in resource_k8s, resource_k8s_wg in tfstate +- Updated samples for flipgroups, image, pfw, k8s resources and data sources diff --git a/Makefile b/Makefile index 4b2c17e..e0745b6 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ ZIPDIR = ./zip BINARY=${NAME}.exe WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH} MAINPATH = ./cmd/decort/ -VERSION=4.0.2 +VERSION=4.1.0 #OS_ARCH=darwin_amd64 OS_ARCH=windows_amd64 #OS_ARCH=linux_amd64 diff --git a/internal/provider/data_sources_map.go b/internal/provider/data_sources_map.go index c6fd522..6e820f1 100644 --- a/internal/provider/data_sources_map.go +++ b/internal/provider/data_sources_map.go @@ -26,6 +26,7 @@ import ( "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/bservice" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/disks" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/extnet" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/flipgroup" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/image" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/k8s" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/kvmvm" @@ -119,6 +120,8 @@ func newDataSourcesMap() map[string]*schema.Resource { "decort_lb": lb.DataSourceLB(), "decort_lb_list": lb.DataSourceLBList(), "decort_lb_list_deleted": lb.DataSourceLBListDeleted(), + "decort_flipgroup": flipgroup.DataSourceFlipgroup(), + "decort_flipgroup_list": flipgroup.DataSourceFlipGroupList(), "decort_cb_account": cb_account.DataSourceAccount(), "decort_cb_account_list": cb_account.DataSourceAccountList(), diff --git a/internal/provider/resource_map.go b/internal/provider/resource_map.go index db6ab32..7f4b016 100644 --- a/internal/provider/resource_map.go +++ b/internal/provider/resource_map.go @@ -25,6 +25,7 @@ import ( "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/account" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/bservice" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/disks" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/flipgroup" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/image" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/k8s" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/service/cloudapi/kvmvm" @@ -68,22 +69,23 @@ func newResourcesMap() map[string]*schema.Resource { "decort_lb_backend_server": lb.ResourceLBBackendServer(), "decort_lb_frontend": lb.ResourceLBFrontend(), "decort_lb_frontend_bind": lb.ResourceLBFrontendBind(), + "decort_flipgroup": flipgroup.ResourceFlipgroup(), - "decort_cb_account": cb_account.ResourceAccount(), - "decort_cb_disk": cb_disks.ResourceDisk(), - "decort_cb_image": cb_image.ResourceImage(), - "decort_cb_virtual_image":cb_image.ResourceVirtualImage(), - "decort_cb_cdrom_image": cb_image.ResourceCDROMImage(), - "decort_cb_delete_images":cb_image.ResourceDeleteImages(), - "decort_cb_pcidevice": cb_pcidevice.ResourcePcidevice(), - "decort_cb_sep": cb_sep.ResourceSep(), - "decort_cb_sep_config": cb_sep.ResourceSepConfig(), - "decort_cb_resgroup": cb_rg.ResourceResgroup(), - "decort_cb_kvmvm": cb_kvmvm.ResourceCompute(), - "decort_cb_vins": cb_vins.ResourceVins(), - "decort_cb_pfw": cb_pfw.ResourcePfw(), - "decort_cb_k8s": cb_k8s.ResourceK8s(), - "decort_cb_k8s_wg": cb_k8s.ResourceK8sWg(), - "decort_cb_snapshot": cb_snapshot.ResourceSnapshot(), + "decort_cb_account": cb_account.ResourceAccount(), + "decort_cb_disk": cb_disks.ResourceDisk(), + "decort_cb_image": cb_image.ResourceImage(), + "decort_cb_virtual_image": cb_image.ResourceVirtualImage(), + "decort_cb_cdrom_image": cb_image.ResourceCDROMImage(), + "decort_cb_delete_images": cb_image.ResourceDeleteImages(), + "decort_cb_pcidevice": cb_pcidevice.ResourcePcidevice(), + "decort_cb_sep": cb_sep.ResourceSep(), + "decort_cb_sep_config": cb_sep.ResourceSepConfig(), + "decort_cb_resgroup": cb_rg.ResourceResgroup(), + "decort_cb_kvmvm": cb_kvmvm.ResourceCompute(), + "decort_cb_vins": cb_vins.ResourceVins(), + "decort_cb_pfw": cb_pfw.ResourcePfw(), + "decort_cb_k8s": cb_k8s.ResourceK8s(), + "decort_cb_k8s_wg": cb_k8s.ResourceK8sWg(), + "decort_cb_snapshot": cb_snapshot.ResourceSnapshot(), } } diff --git a/internal/service/cloudapi/flipgroup/data_source_flipgroup.go b/internal/service/cloudapi/flipgroup/data_source_flipgroup.go new file mode 100644 index 0000000..ddc1ae3 --- /dev/null +++ b/internal/service/cloudapi/flipgroup/data_source_flipgroup.go @@ -0,0 +1,191 @@ +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Kasim Baybikov, +Tim Tkachev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package flipgroup + +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" +) + +func dataSourceFlipgroupRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + fg, err := utilityFlipgroupCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + flattenFlipgroup(d, fg) + d.SetId(fmt.Sprint(fg.ID)) + + return nil +} + +func dataSourceFlipgroupSchemaMake() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "flipgroup_id": { + Type: schema.TypeInt, + Required: true, + Description: "Flipgroupd ID", + }, + "account_id": { + Type: schema.TypeInt, + Computed: true, + }, + "account_name": { + Type: schema.TypeString, + Computed: true, + }, + "client_ids": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "client_names": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "client_type": { + Type: schema.TypeString, + Computed: true, + }, + "conn_id": { + Type: schema.TypeInt, + Computed: true, + }, + "conn_type": { + Type: schema.TypeString, + Computed: true, + }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "default_gw": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + "ip": { + Type: schema.TypeString, + Computed: true, + }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "net_id": { + Type: schema.TypeInt, + Computed: true, + }, + "net_type": { + Type: schema.TypeString, + Computed: true, + }, + "network": { + Type: schema.TypeString, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_name": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, + } +} + +func DataSourceFlipgroup() *schema.Resource { + return &schema.Resource{ + SchemaVersion: 1, + + ReadContext: dataSourceFlipgroupRead, + + Timeouts: &schema.ResourceTimeout{ + Read: &constants.Timeout180s, + Default: &constants.Timeout180s, + }, + + Schema: dataSourceFlipgroupSchemaMake(), + } +} diff --git a/internal/service/cloudapi/flipgroup/data_source_flipgroup_list.go b/internal/service/cloudapi/flipgroup/data_source_flipgroup_list.go new file mode 100644 index 0000000..4962ec8 --- /dev/null +++ b/internal/service/cloudapi/flipgroup/data_source_flipgroup_list.go @@ -0,0 +1,210 @@ +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Kasim Baybikov, +Tim Tkachev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package flipgroup + +import ( + "context" + + "github.com/google/uuid" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" +) + +func dataSourceFlipgroupList(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + fg_list, err := utilityFlipgroupListCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + id := uuid.New() + d.SetId(id.String()) + + d.Set("items", flattenFlipgroupList(fg_list)) + + return nil +} + +func dataSourceFlipgroupListSchemaMake() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "page": { + Type: schema.TypeInt, + Optional: true, + Description: "Page number", + }, + "size": { + Type: schema.TypeInt, + Optional: true, + Description: "Page size", + }, + "items": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "flipgroup_id": { + Type: schema.TypeInt, + Computed: true, + }, + "account_id": { + Type: schema.TypeInt, + Computed: true, + }, + "account_name": { + Type: schema.TypeString, + Computed: true, + }, + "client_ids": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "client_names": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "client_type": { + Type: schema.TypeString, + Computed: true, + }, + "conn_id": { + Type: schema.TypeInt, + Computed: true, + }, + "conn_type": { + Type: schema.TypeString, + Computed: true, + }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "default_gw": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "desc": { + Type: schema.TypeString, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "net_id": { + Type: schema.TypeInt, + Computed: true, + }, + "net_type": { + Type: schema.TypeString, + Computed: true, + }, + "ip": { + Type: schema.TypeString, + Computed: true, + }, + "network": { + Type: schema.TypeString, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_name": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, + }, + }, + }, + } +} + +func DataSourceFlipGroupList() *schema.Resource { + return &schema.Resource{ + SchemaVersion: 1, + + ReadContext: dataSourceFlipgroupList, + + Timeouts: &schema.ResourceTimeout{ + Read: &constants.Timeout180s, + Default: &constants.Timeout180s, + }, + + Schema: dataSourceFlipgroupListSchemaMake(), + } +} diff --git a/internal/service/cloudapi/flipgroup/flattens.go b/internal/service/cloudapi/flipgroup/flattens.go new file mode 100644 index 0000000..1dae226 --- /dev/null +++ b/internal/service/cloudapi/flipgroup/flattens.go @@ -0,0 +1,107 @@ +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Kasim Baybikov, +Tim Tkachev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package flipgroup + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/flipgroup" +) + +func flattenFlipgroup(d *schema.ResourceData, fg *flipgroup.ItemFLIPGroup) { + d.Set("account_id", fg.AccountID) + d.Set("account_name", fg.AccountName) + d.Set("client_ids", fg.ClientIDs) + d.Set("client_names", fg.ClientNames) + d.Set("client_type", fg.ClientType) + d.Set("conn_id", fg.ConnID) + d.Set("conn_type", fg.ConnType) + d.Set("created_by", fg.CreatedBy) + d.Set("created_time", fg.CreatedTime) + d.Set("default_gw", fg.DefaultGW) + d.Set("deleted_by", fg.DeletedBy) + d.Set("deleted_time", fg.DeletedTime) + d.Set("desc", fg.Description) + d.Set("gid", fg.GID) + d.Set("guid", fg.GUID) + d.Set("flipgroup_id", fg.ID) + d.Set("ip", fg.IP) + d.Set("milestones", fg.Milestones) + d.Set("name", fg.Name) + d.Set("net_id", fg.NetID) + d.Set("net_type", fg.NetType) + d.Set("network", fg.Network) + d.Set("rg_id", fg.RGID) + d.Set("rg_name", fg.RGName) + d.Set("status", fg.Status) + d.Set("updated_by", fg.UpdatedBy) + d.Set("updated_time", fg.UpdatedTime) +} + +func flattenFlipgroupList(fg_list flipgroup.ListFLIPGroups) []map[string]interface{} { + res := make([]map[string]interface{}, 0) + for _, fg := range fg_list { + temp := map[string]interface{}{ + "account_id": fg.AccountID, + "account_name": fg.AccountName, + "client_ids": fg.ClientIDs, + "client_names": fg.ClientNames, + "client_type": fg.ClientType, + "conn_id": fg.ConnID, + "conn_type": fg.ConnType, + "created_by": fg.CreatedBy, + "created_time": fg.CreatedTime, + "default_gw": fg.DefaultGW, + "deleted_by": fg.DeletedBy, + "deleted_time": fg.DeletedTime, + "desc": fg.Description, + "gid": fg.GID, + "guid": fg.GUID, + "flipgroup_id": fg.ID, + "ip": fg.IP, + "milestones": fg.Milestones, + "name": fg.Name, + "net_id": fg.NetID, + "net_type": fg.NetType, + "network": fg.Network, + "rg_id": fg.RGID, + "rg_name": fg.RGName, + "status": fg.Status, + "updated_by": fg.UpdatedBy, + "updated_time": fg.UpdatedTime, + } + res = append(res, temp) + } + + return res +} diff --git a/internal/service/cloudapi/flipgroup/resource_flipgroup.go b/internal/service/cloudapi/flipgroup/resource_flipgroup.go new file mode 100644 index 0000000..cd669b9 --- /dev/null +++ b/internal/service/cloudapi/flipgroup/resource_flipgroup.go @@ -0,0 +1,309 @@ +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Kasim Baybikov, +Tim Tkachev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package flipgroup + +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/flipgroup" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/dc" + + log "github.com/sirupsen/logrus" +) + +func resourceFlipgroupCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + log.Debugf("resourceFlipgroupCreate called with name: %s, accountID %v", d.Get("name").(string), d.Get("account_id").(int)) + + c := m.(*controller.ControllerCfg) + req := flipgroup.CreateRequest{ + AccountID: uint64(d.Get("account_id").(int)), + Name: d.Get("name").(string), + NetType: d.Get("net_type").(string), + NetID: uint64(d.Get("net_id").(int)), + ClientType: d.Get("client_type").(string), + IP: d.Get("ip").(string), + Description: d.Get("desc").(string), + } + + resp, err := c.CloudAPI().FLIPGroup().Create(ctx, req) + if err != nil { + return diag.FromErr(err) + } + + d.SetId(fmt.Sprint(resp.ID)) + + var warnings dc.Warnings + + if client_ids, ok := d.GetOk("client_ids"); ok { + casted := client_ids.([]interface{}) + addComputesAfterCreation(ctx, &warnings, c, casted, resp.ID) + } + + defer resourceFlipgroupRead(ctx, d, m) + return warnings.Get() +} + +func resourceFlipgroupRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + fg, err := utilityFlipgroupCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + flattenFlipgroup(d, fg) + + return nil +} + +func resourceFlipgroupUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + log.Debugf("resourceFlipgroupUpdate called with id: %v", d.Get("flipgroup_id").(int)) + c := m.(*controller.ControllerCfg) + fg, err := utilityFlipgroupCheckPresence(ctx, d, m) + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + var warnings dc.Warnings + basicUpdate := false + req := flipgroup.EditRequest{FLIPGroupID: fg.ID} + + if d.HasChange("desc") { + req.Description = d.Get("desc").(string) + basicUpdate = true + } + + if d.HasChange("name") { + req.Name = d.Get("name").(string) + basicUpdate = true + } + + if basicUpdate { + _, err := c.CloudAPI().FLIPGroup().Edit(ctx, req) + if err != nil { + return diag.FromErr(err) + } + } + + if d.HasChange("client_ids") { + handleClientIDsUpdate(ctx, d, c, fg, &warnings) + } + + defer resourceFlipgroupRead(ctx, d, m) + return warnings.Get() +} + +func resourceFlipgroupDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + log.Debugf("resourceFlipgroupDelete called with id: %v", d.Get("flipgroup_id").(int)) + c := m.(*controller.ControllerCfg) + + fg, err := utilityFlipgroupCheckPresence(ctx, d, m) + if err != nil { + return diag.FromErr(err) + } + + req := flipgroup.DeleteRequest{ + FLIPGroupID: fg.ID, + } + + _, err = c.CloudAPI().FLIPGroup().Delete(ctx, req) + if err != nil { + return diag.FromErr(err) + } + + return nil +} + +func resourceFlipgroupSchemaMake() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "account_id": { + Type: schema.TypeInt, + Required: true, + Description: "Account ID", + }, + "name": { + Type: schema.TypeString, + Required: true, + Description: "Flipgroup name", + }, + "net_id": { + Type: schema.TypeInt, + Required: true, + Description: "EXTNET or ViNS ID", + }, + "net_type": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{"EXTNET", "VINS"}, true), + Description: "Network type, EXTNET or VINS", + }, + "client_type": { + Type: schema.TypeString, + Required: true, + Description: "Type of client, 'compute' ('vins' will be later)", + ValidateFunc: validation.StringInSlice([]string{"compute"}, true), + }, + "ip": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "IP address to associate with this group. If empty, the platform will autoselect IP address", + }, + "desc": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Text description of this Flipgroup instance", + }, + "client_ids": { + Type: schema.TypeList, + Optional: true, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + Description: "List of clients attached to this Flipgroup instance", + }, + "flipgroup_id": { + Type: schema.TypeInt, + Computed: true, + }, + "account_name": { + Type: schema.TypeString, + Computed: true, + }, + "client_names": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "conn_id": { + Type: schema.TypeInt, + Computed: true, + }, + "conn_type": { + Type: schema.TypeString, + Computed: true, + }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "created_time": { + Type: schema.TypeInt, + Computed: true, + }, + "default_gw": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_by": { + Type: schema.TypeString, + Computed: true, + }, + "deleted_time": { + Type: schema.TypeInt, + Computed: true, + }, + "gid": { + Type: schema.TypeInt, + Computed: true, + }, + "guid": { + Type: schema.TypeInt, + Computed: true, + }, + "milestones": { + Type: schema.TypeInt, + Computed: true, + }, + "network": { + Type: schema.TypeString, + Computed: true, + }, + "rg_id": { + Type: schema.TypeInt, + Computed: true, + }, + "rg_name": { + Type: schema.TypeString, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "updated_by": { + Type: schema.TypeString, + Computed: true, + }, + "updated_time": { + Type: schema.TypeInt, + Computed: true, + }, + } +} + +func ResourceFlipgroup() *schema.Resource { + return &schema.Resource{ + SchemaVersion: 1, + + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + + CreateContext: resourceFlipgroupCreate, + ReadContext: resourceFlipgroupRead, + UpdateContext: resourceFlipgroupUpdate, + DeleteContext: resourceFlipgroupDelete, + + Timeouts: &schema.ResourceTimeout{ + Create: &constants.Timeout300s, + Read: &constants.Timeout300s, + Update: &constants.Timeout300s, + Delete: &constants.Timeout300s, + Default: &constants.Timeout300s, + }, + + Schema: resourceFlipgroupSchemaMake(), + } +} diff --git a/internal/service/cloudapi/flipgroup/utility_flipgroup.go b/internal/service/cloudapi/flipgroup/utility_flipgroup.go new file mode 100644 index 0000000..aba9f98 --- /dev/null +++ b/internal/service/cloudapi/flipgroup/utility_flipgroup.go @@ -0,0 +1,167 @@ +/* +Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. +Authors: +Petr Krutov, +Stanislav Solovev, +Kasim Baybikov, +Tim Tkachev, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud +Orchestration Technology) with Terraform by Hashicorp. + +Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort + +Please see README.md to learn where to place source code so that it +builds seamlessly. + +Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki +*/ + +package flipgroup + +import ( + "context" + "strconv" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/flipgroup" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" + "repository.basistech.ru/BASIS/terraform-provider-decort/internal/dc" + + log "github.com/sirupsen/logrus" +) + +func handleClientIDsUpdate(ctx context.Context, d *schema.ResourceData, c *controller.ControllerCfg, fg *flipgroup.ItemFLIPGroup, warn *dc.Warnings) { + addedClients := make([]interface{}, 0) + removedClients := make([]interface{}, 0) + + old_set, new_set := d.GetChange("client_ids") + oldSlice := old_set.([]interface{}) + newSlice := new_set.([]interface{}) + + for _, oldElem := range oldSlice { + if !containsClient(newSlice, oldElem) { + removedClients = append(removedClients, oldElem) + } + } + + for _, newElem := range newSlice { + if !containsClient(oldSlice, newElem) { + addedClients = append(addedClients, newElem) + } + } + + log.Debugf("Found client_ids change with %v deletion(s) and %v addition(s) [flipgroupID=%v]", len(removedClients), len(addedClients), fg.ID) + + if len(addedClients) > 0 { + for _, id := range addedClients { + req := flipgroup.ComputeAddRequest{ + FLIPGroupID: fg.ID, + ComputeID: uint64(id.(int)), + } + + if _, err := c.CloudAPI().FLIPGroup().ComputeAdd(ctx, req); err != nil { + warn.Add(err) + } + } + } + + if len(removedClients) > 0 { + for _, id := range removedClients { + req := flipgroup.ComputeRemoveRequest{ + FLIPGroupID: fg.ID, + ComputeID: uint64(id.(int)), + } + + if _, err := c.CloudAPI().FLIPGroup().ComputeRemove(ctx, req); err != nil { + warn.Add(err) + } + } + } +} + +func containsClient(set []interface{}, check interface{}) bool { + for _, elem := range set { + elemConv := elem.(int) + checkConv := check.(int) + if elemConv == checkConv { + return true + } + } + + return false +} + +func addComputesAfterCreation(ctx context.Context, warnings *dc.Warnings, c *controller.ControllerCfg, compute_ids []interface{}, flipgroupID uint64) { + if len(compute_ids) == 0 { + return + } + + log.Debugf("Adding %v computes to flipgroup [id=%v]...", len(compute_ids), flipgroupID) + + for _, elem := range compute_ids { + compute_id := uint64(elem.(int)) + req := flipgroup.ComputeAddRequest{ + FLIPGroupID: flipgroupID, + ComputeID: compute_id, + } + + _, err := c.CloudAPI().FLIPGroup().ComputeAdd(ctx, req) + if err != nil { + warnings.Add(err) + } + } +} + +func utilityFlipgroupCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*flipgroup.ItemFLIPGroup, error) { + c := m.(*controller.ControllerCfg) + req := flipgroup.GetRequest{} + + if d.Id() == "" { + req.FLIPGroupID = uint64(d.Get("flipgroup_id").(int)) + } else { + id, _ := strconv.ParseUint(d.Id(), 10, 64) + req.FLIPGroupID = id + } + + fg, err := c.CloudAPI().FLIPGroup().Get(ctx, req) + if err != nil { + return nil, err + } + + return fg, err +} + +func utilityFlipgroupListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (flipgroup.ListFLIPGroups, error) { + c := m.(*controller.ControllerCfg) + req := flipgroup.ListRequest{} + + if page, ok := d.GetOk("page"); ok { + req.Page = uint64(page.(int)) + } + + if size, ok := d.GetOk("size"); ok { + req.Size = uint64(size.(int)) + } + + fg_list, err := c.CloudAPI().FLIPGroup().List(ctx, req) + if err != nil { + return nil, err + } + + return fg_list, err +} diff --git a/internal/service/cloudapi/k8s/flattens.go b/internal/service/cloudapi/k8s/flattens.go index b5900b1..977dad2 100644 --- a/internal/service/cloudapi/k8s/flattens.go +++ b/internal/service/cloudapi/k8s/flattens.go @@ -33,6 +33,8 @@ Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/w package k8s import ( + "strings" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s" @@ -168,6 +170,14 @@ func flattenMasterGroup(mastersGroup k8s.MasterGroup, masters []compute.RecordCo func flattenK8sGroup(k8SGroupList k8s.ListK8SGroups, workers []compute.RecordCompute) []map[string]interface{} { res := make([]map[string]interface{}, 0) for _, k8sGroup := range k8SGroupList { + labels := make([]string, 0) + for _, label := range k8sGroup.Labels { + if strings.HasPrefix(label, "workersGroupName") { + continue + } + + labels = append(labels, label) + } temp := map[string]interface{}{ "annotations": k8sGroup.Annotations, "cpu": k8sGroup.CPU, @@ -175,7 +185,7 @@ func flattenK8sGroup(k8SGroupList k8s.ListK8SGroups, workers []compute.RecordCom "disk": k8sGroup.Disk, "guid": k8sGroup.GUID, "id": k8sGroup.ID, - "labels": k8sGroup.Labels, + "labels": labels, "name": k8sGroup.Name, "num": k8sGroup.Num, "ram": k8sGroup.RAM, @@ -323,12 +333,21 @@ func flattenResourceK8s(d *schema.ResourceData, k8s k8s.RecordK8S, masters []com } func flattenWg(d *schema.ResourceData, wg k8s.ItemK8SGroup, computes []compute.RecordCompute) { + labels := make([]string, 0) + for _, label := range wg.Labels { + if strings.HasPrefix(label, "workerGroupName") { + continue + } + + labels = append(labels, label) + } + d.Set("annotations", wg.Annotations) d.Set("cpu", wg.CPU) d.Set("detailed_info", flattenDetailedInfo(wg.DetailedInfo, computes)) d.Set("disk", wg.Disk) d.Set("guid", wg.GUID) - d.Set("labels", wg.Labels) + d.Set("labels", labels) d.Set("name", wg.Name) d.Set("num", wg.Num) d.Set("ram", wg.RAM) diff --git a/internal/service/cloudapi/k8s/node_subresource.go b/internal/service/cloudapi/k8s/node_subresource.go index 9cc3f26..99c5134 100644 --- a/internal/service/cloudapi/k8s/node_subresource.go +++ b/internal/service/cloudapi/k8s/node_subresource.go @@ -32,7 +32,9 @@ Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/w package k8s -import "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) func nodeMasterDefault() K8sNodeRecord { return K8sNodeRecord{ diff --git a/internal/service/cloudapi/k8s/resource_k8s.go b/internal/service/cloudapi/k8s/resource_k8s.go index 5bfd43e..5891f78 100644 --- a/internal/service/cloudapi/k8s/resource_k8s.go +++ b/internal/service/cloudapi/k8s/resource_k8s.go @@ -123,7 +123,9 @@ func resourceK8sCreate(ctx context.Context, d *schema.ResourceData, m interface{ if labels, ok := d.GetOk("labels"); ok { labels := labels.([]interface{}) for _, label := range labels { - createReq.Labels = append(createReq.Labels, label.(string)) + if !strings.HasPrefix(label.(string), "workersGroupName") { + createReq.Labels = append(createReq.Labels, label.(string)) + } } } diff --git a/internal/service/cloudapi/k8s/resource_k8s_wg.go b/internal/service/cloudapi/k8s/resource_k8s_wg.go index 41d6bb5..76825ac 100644 --- a/internal/service/cloudapi/k8s/resource_k8s_wg.go +++ b/internal/service/cloudapi/k8s/resource_k8s_wg.go @@ -55,7 +55,7 @@ func resourceK8sWgCreate(ctx context.Context, d *schema.ResourceData, m interfac } if !haveK8sID { - return diag.Errorf("resourceK8sCreate: can't create k8s cluster because K8sID %d is not allowed or does not exist", d.Get("k8s_id").(int)) + return diag.Errorf("resourceK8sWgCreate: can't create k8s cluster because K8sID %d is not allowed or does not exist", d.Get("k8s_id").(int)) } c := m.(*controller.ControllerCfg) @@ -71,7 +71,9 @@ func resourceK8sWgCreate(ctx context.Context, d *schema.ResourceData, m interfac labels, _ := d.Get("labels").([]interface{}) for _, label := range labels { - req.Labels = append(req.Labels, label.(string)) + if !strings.HasPrefix(label.(string), "workersGroupName") { + req.Labels = append(req.Labels, label.(string)) + } } annotations, _ := d.Get("annotations").([]interface{}) @@ -317,11 +319,11 @@ func ResourceK8sWg() *schema.Resource { }, Timeouts: &schema.ResourceTimeout{ - Create: &constants.Timeout600s, - Read: &constants.Timeout600s, - Update: &constants.Timeout600s, - Delete: &constants.Timeout300s, - Default: &constants.Timeout300s, + Create: &constants.Timeout20m, + Read: &constants.Timeout20m, + Update: &constants.Timeout20m, + Delete: &constants.Timeout20m, + Default: &constants.Timeout20m, }, Schema: resourceK8sWgSchemaMake(), diff --git a/internal/service/cloudapi/k8s/utility_k8s.go b/internal/service/cloudapi/k8s/utility_k8s.go index 79433dc..5c80e80 100644 --- a/internal/service/cloudapi/k8s/utility_k8s.go +++ b/internal/service/cloudapi/k8s/utility_k8s.go @@ -35,6 +35,7 @@ package k8s import ( "context" "strconv" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/compute" @@ -148,7 +149,9 @@ func addWGs(ctx context.Context, c *controller.ControllerCfg, cluster *k8s.Recor labels, _ := found_wg["labels"].([]interface{}) for _, label := range labels { - req.Labels = append(req.Labels, label.(string)) + if !strings.HasPrefix(label.(string), "workersGroupName") { + req.Labels = append(req.Labels, label.(string)) + } } annotations, _ := found_wg["annotations"].([]interface{}) diff --git a/internal/service/cloudapi/kvmvm/resource_compute.go b/internal/service/cloudapi/kvmvm/resource_compute.go index 295fe9e..03aea33 100644 --- a/internal/service/cloudapi/kvmvm/resource_compute.go +++ b/internal/service/cloudapi/kvmvm/resource_compute.go @@ -215,7 +215,7 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf argVal, ok = d.GetOk("network") if ok && argVal.(*schema.Set).Len() > 0 { log.Debugf("resourceComputeCreate: calling utilityComputeNetworksConfigure to attach %d network(s)", argVal.(*schema.Set).Len()) - err = utilityComputeNetworksConfigure(ctx, d, m, false, true) + err = utilityComputeNetworksConfigure(ctx, d, m, false, true, computeId) if err != nil { log.Errorf("resourceComputeCreate: error when attaching networks to a new Compute ID %d: %s", computeId, err) cleanup = true @@ -693,9 +693,11 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf } } - err = utilityComputeNetworksConfigure(ctx, d, m, true, false) // pass do_delta = true to apply changes, if any - if err != nil { - return diag.FromErr(err) + if d.HasChange("network") { + err = utilityComputeNetworksConfigure(ctx, d, m, true, false, computeRec.ID) // pass do_delta = true to apply changes, if any + if err != nil { + return diag.FromErr(err) + } } if d.HasChange("description") || d.HasChange("name") { diff --git a/internal/service/cloudapi/kvmvm/utility_compute.go b/internal/service/cloudapi/kvmvm/utility_compute.go index 9e12d49..4bc1a6f 100644 --- a/internal/service/cloudapi/kvmvm/utility_compute.go +++ b/internal/service/cloudapi/kvmvm/utility_compute.go @@ -144,11 +144,21 @@ func utilityComputeExtraDisksConfigure(ctx context.Context, d *schema.ResourceDa return nil } -func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData, m interface{}, do_delta bool, skip_zero bool) error { +func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData, m interface{}, do_delta bool, skip_zero bool, computeID uint64) error { c := m.(*controller.ControllerCfg) old_set, new_set := d.GetChange("network") + req := compute.StopRequest{ + ComputeID: computeID, + Force: true, + } + + _, err := c.CloudAPI().Compute().Stop(ctx, req) + if err != nil { + return err + } + apiErrCount := 0 var lastSavedError error @@ -232,6 +242,14 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData } } + startReq := compute.StartRequest{ComputeID: computeID} + + _, err = c.CloudAPI().Compute().Start(ctx, startReq) + if err != nil { + apiErrCount++ + lastSavedError = err + } + if apiErrCount > 0 { log.Errorf("utilityComputeNetworksConfigure: there were %d error(s) when managing networks of Compute ID %s. Last error was: %s", apiErrCount, d.Id(), lastSavedError) diff --git a/internal/service/cloudapi/vins/resource_vins.go b/internal/service/cloudapi/vins/resource_vins.go index 26d5698..0b70962 100644 --- a/internal/service/cloudapi/vins/resource_vins.go +++ b/internal/service/cloudapi/vins/resource_vins.go @@ -847,11 +847,11 @@ func ResourceVins() *schema.Resource { }, Timeouts: &schema.ResourceTimeout{ - Create: &constants.Timeout600s, - Read: &constants.Timeout300s, - Update: &constants.Timeout300s, - Delete: &constants.Timeout300s, - Default: &constants.Timeout300s, + Create: &constants.Timeout20m, + Read: &constants.Timeout600s, + Update: &constants.Timeout20m, + Delete: &constants.Timeout600s, + Default: &constants.Timeout600s, }, Schema: resourceVinsSchemaMake(), diff --git a/samples/cloudapi/data_account/main.tf b/samples/cloudapi/data_account/main.tf index af70baa..a6fd6a3 100644 --- a/samples/cloudapi/data_account/main.tf +++ b/samples/cloudapi/data_account/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_audits_list/main.tf b/samples/cloudapi/data_account_audits_list/main.tf index 1cd48f5..150deb8 100644 --- a/samples/cloudapi/data_account_audits_list/main.tf +++ b/samples/cloudapi/data_account_audits_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_computes_list/main.tf b/samples/cloudapi/data_account_computes_list/main.tf index 26edae2..b099eb2 100644 --- a/samples/cloudapi/data_account_computes_list/main.tf +++ b/samples/cloudapi/data_account_computes_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_consumed_units/main.tf b/samples/cloudapi/data_account_consumed_units/main.tf index bfe2c2b..74e0798 100644 --- a/samples/cloudapi/data_account_consumed_units/main.tf +++ b/samples/cloudapi/data_account_consumed_units/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_consumed_units_by_type/main.tf b/samples/cloudapi/data_account_consumed_units_by_type/main.tf index 35ed80b..8d981a4 100644 --- a/samples/cloudapi/data_account_consumed_units_by_type/main.tf +++ b/samples/cloudapi/data_account_consumed_units_by_type/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_deleted_list/main.tf b/samples/cloudapi/data_account_deleted_list/main.tf index 7309fcd..9a5f843 100644 --- a/samples/cloudapi/data_account_deleted_list/main.tf +++ b/samples/cloudapi/data_account_deleted_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_disks_list/main.tf b/samples/cloudapi/data_account_disks_list/main.tf index c0ac605..f795e9b 100644 --- a/samples/cloudapi/data_account_disks_list/main.tf +++ b/samples/cloudapi/data_account_disks_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_flipgroups_list/main.tf b/samples/cloudapi/data_account_flipgroups_list/main.tf index 134d621..01fd2d8 100644 --- a/samples/cloudapi/data_account_flipgroups_list/main.tf +++ b/samples/cloudapi/data_account_flipgroups_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_list/main.tf b/samples/cloudapi/data_account_list/main.tf index 722077a..d8a7568 100644 --- a/samples/cloudapi/data_account_list/main.tf +++ b/samples/cloudapi/data_account_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_reserved_units/main.tf b/samples/cloudapi/data_account_reserved_units/main.tf index 5421b3a..70b1de1 100644 --- a/samples/cloudapi/data_account_reserved_units/main.tf +++ b/samples/cloudapi/data_account_reserved_units/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_rg_list/main.tf b/samples/cloudapi/data_account_rg_list/main.tf index 13fbb6d..dae55f4 100644 --- a/samples/cloudapi/data_account_rg_list/main.tf +++ b/samples/cloudapi/data_account_rg_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_templates_list/main.tf b/samples/cloudapi/data_account_templates_list/main.tf index 276fe68..2437236 100644 --- a/samples/cloudapi/data_account_templates_list/main.tf +++ b/samples/cloudapi/data_account_templates_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_account_vins_list/main.tf b/samples/cloudapi/data_account_vins_list/main.tf index e0e8eda..66c336d 100644 --- a/samples/cloudapi/data_account_vins_list/main.tf +++ b/samples/cloudapi/data_account_vins_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_bservice/main.tf b/samples/cloudapi/data_bservice/main.tf index 1b82faf..856c429 100644 --- a/samples/cloudapi/data_bservice/main.tf +++ b/samples/cloudapi/data_bservice/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_bservice_deleted_list/main.tf b/samples/cloudapi/data_bservice_deleted_list/main.tf index 6a0a7d6..aed390a 100644 --- a/samples/cloudapi/data_bservice_deleted_list/main.tf +++ b/samples/cloudapi/data_bservice_deleted_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_bservice_group/main.tf b/samples/cloudapi/data_bservice_group/main.tf index d859c3e..4a72bd0 100644 --- a/samples/cloudapi/data_bservice_group/main.tf +++ b/samples/cloudapi/data_bservice_group/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_bservice_list/main.tf b/samples/cloudapi/data_bservice_list/main.tf index c87579c..d5b411f 100644 --- a/samples/cloudapi/data_bservice_list/main.tf +++ b/samples/cloudapi/data_bservice_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_bservice_snapshot_list/main.tf b/samples/cloudapi/data_bservice_snapshot_list/main.tf index a24097c..16d1cac 100644 --- a/samples/cloudapi/data_bservice_snapshot_list/main.tf +++ b/samples/cloudapi/data_bservice_snapshot_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk/main.tf b/samples/cloudapi/data_disk/main.tf index 941dccf..2e6c639 100644 --- a/samples/cloudapi/data_disk/main.tf +++ b/samples/cloudapi/data_disk/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_list/main.tf b/samples/cloudapi/data_disk_list/main.tf index 1074f83..08ae340 100644 --- a/samples/cloudapi/data_disk_list/main.tf +++ b/samples/cloudapi/data_disk_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_list_deleted/main.tf b/samples/cloudapi/data_disk_list_deleted/main.tf index 5184b37..79bee64 100644 --- a/samples/cloudapi/data_disk_list_deleted/main.tf +++ b/samples/cloudapi/data_disk_list_deleted/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_list_types/main.tf b/samples/cloudapi/data_disk_list_types/main.tf index b984b31..af2d57a 100644 --- a/samples/cloudapi/data_disk_list_types/main.tf +++ b/samples/cloudapi/data_disk_list_types/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_list_types_detailed/main.tf b/samples/cloudapi/data_disk_list_types_detailed/main.tf index 8bcc09e..d491057 100644 --- a/samples/cloudapi/data_disk_list_types_detailed/main.tf +++ b/samples/cloudapi/data_disk_list_types_detailed/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_list_unattached/main.tf b/samples/cloudapi/data_disk_list_unattached/main.tf index 175a7e5..9613772 100644 --- a/samples/cloudapi/data_disk_list_unattached/main.tf +++ b/samples/cloudapi/data_disk_list_unattached/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_snapshot/main.tf b/samples/cloudapi/data_disk_snapshot/main.tf index 1f63f6c..6b68452 100644 --- a/samples/cloudapi/data_disk_snapshot/main.tf +++ b/samples/cloudapi/data_disk_snapshot/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_disk_snapshot_list/main.tf b/samples/cloudapi/data_disk_snapshot_list/main.tf index 6f58cee..6278547 100644 --- a/samples/cloudapi/data_disk_snapshot_list/main.tf +++ b/samples/cloudapi/data_disk_snapshot_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_extnet/main.tf b/samples/cloudapi/data_extnet/main.tf index 2694c76..5b99390 100644 --- a/samples/cloudapi/data_extnet/main.tf +++ b/samples/cloudapi/data_extnet/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_extnet_computes_list/main.tf b/samples/cloudapi/data_extnet_computes_list/main.tf index 1879d37..618238c 100644 --- a/samples/cloudapi/data_extnet_computes_list/main.tf +++ b/samples/cloudapi/data_extnet_computes_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_extnet_default/main.tf b/samples/cloudapi/data_extnet_default/main.tf index cf91c79..a422f2c 100644 --- a/samples/cloudapi/data_extnet_default/main.tf +++ b/samples/cloudapi/data_extnet_default/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_extnet_list/main.tf b/samples/cloudapi/data_extnet_list/main.tf index 355a699..29e37ea 100644 --- a/samples/cloudapi/data_extnet_list/main.tf +++ b/samples/cloudapi/data_extnet_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_flipgroup/main.tf b/samples/cloudapi/data_flipgroup/main.tf new file mode 100644 index 0000000..05b7010 --- /dev/null +++ b/samples/cloudapi/data_flipgroup/main.tf @@ -0,0 +1,32 @@ +#Расскомментируйте этот код, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "oauth2" + oauth2_url = "https://sso.digitalenergy.online" + controller_url = "https://mr4.digitalenergy.online" + app_id = "" + app_secret = "" +} + +data "decort_flipgroup" "fg" { + # ID флипгруппы + # Обязательный параметр + # int + flipgroup_id = 999 +} + +output "fg_out" { + value = data.decort_flipgroup.fg +} diff --git a/samples/cloudapi/data_flipgroup_list/main.tf b/samples/cloudapi/data_flipgroup_list/main.tf new file mode 100644 index 0000000..143dfab --- /dev/null +++ b/samples/cloudapi/data_flipgroup_list/main.tf @@ -0,0 +1,37 @@ +#Расскомментируйте этот код, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "oauth2" + oauth2_url = "https://sso.digitalenergy.online" + controller_url = "https://mr4.digitalenergy.online" + app_id = "" + app_secret = "" +} + +data "decort_flipgroup_list" "fg" { + # Номер страницы + # Опциональный параметр + # int + page = 0 + + # Размер страницы + # Опциональный параметр + # int + size = 0 +} + +output "fg_out" { + value = data.decort_flipgroup_list.fg +} diff --git a/samples/cloudapi/data_image/main.tf b/samples/cloudapi/data_image/main.tf index bf65e29..e7bc553 100644 --- a/samples/cloudapi/data_image/main.tf +++ b/samples/cloudapi/data_image/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_image_list/main.tf b/samples/cloudapi/data_image_list/main.tf index 06084eb..997d01f 100644 --- a/samples/cloudapi/data_image_list/main.tf +++ b/samples/cloudapi/data_image_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_k8s/main.tf b/samples/cloudapi/data_k8s/main.tf index 29722c3..826118d 100644 --- a/samples/cloudapi/data_k8s/main.tf +++ b/samples/cloudapi/data_k8s/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_k8s_computes/main.tf b/samples/cloudapi/data_k8s_computes/main.tf index 11906b5..7577f63 100644 --- a/samples/cloudapi/data_k8s_computes/main.tf +++ b/samples/cloudapi/data_k8s_computes/main.tf @@ -5,7 +5,7 @@ terraform { required_providers { decort = { - source = "terraform.local/local/decort" + source = "basis/decort/decort" version = "" } } diff --git a/samples/cloudapi/data_k8s_list/main.tf b/samples/cloudapi/data_k8s_list/main.tf index d404cc6..1595b1f 100644 --- a/samples/cloudapi/data_k8s_list/main.tf +++ b/samples/cloudapi/data_k8s_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_k8s_list_deleted/main.tf b/samples/cloudapi/data_k8s_list_deleted/main.tf index 831c873..ffa84a4 100644 --- a/samples/cloudapi/data_k8s_list_deleted/main.tf +++ b/samples/cloudapi/data_k8s_list_deleted/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_k8s_wg/main.tf b/samples/cloudapi/data_k8s_wg/main.tf index ea3a014..c906418 100644 --- a/samples/cloudapi/data_k8s_wg/main.tf +++ b/samples/cloudapi/data_k8s_wg/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_k8s_wg_list/main.tf b/samples/cloudapi/data_k8s_wg_list/main.tf index de6d8ee..8bc3ac1 100644 --- a/samples/cloudapi/data_k8s_wg_list/main.tf +++ b/samples/cloudapi/data_k8s_wg_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm/main.tf b/samples/cloudapi/data_kvmvm/main.tf index 260616b..6fa6e75 100644 --- a/samples/cloudapi/data_kvmvm/main.tf +++ b/samples/cloudapi/data_kvmvm/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_audits/main.tf b/samples/cloudapi/data_kvmvm_audits/main.tf index 1ec62a1..f88aceb 100644 --- a/samples/cloudapi/data_kvmvm_audits/main.tf +++ b/samples/cloudapi/data_kvmvm_audits/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_get_audits/main.tf b/samples/cloudapi/data_kvmvm_get_audits/main.tf index e2e9d08..039ee93 100644 --- a/samples/cloudapi/data_kvmvm_get_audits/main.tf +++ b/samples/cloudapi/data_kvmvm_get_audits/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_get_console_url/main.tf b/samples/cloudapi/data_kvmvm_get_console_url/main.tf index e7db2d4..521d1e3 100644 --- a/samples/cloudapi/data_kvmvm_get_console_url/main.tf +++ b/samples/cloudapi/data_kvmvm_get_console_url/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_get_log/main.tf b/samples/cloudapi/data_kvmvm_get_log/main.tf index 4b9bce0..efe3cc4 100644 --- a/samples/cloudapi/data_kvmvm_get_log/main.tf +++ b/samples/cloudapi/data_kvmvm_get_log/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_list/main.tf b/samples/cloudapi/data_kvmvm_list/main.tf index 38ca7d1..17b7ee5 100644 --- a/samples/cloudapi/data_kvmvm_list/main.tf +++ b/samples/cloudapi/data_kvmvm_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_pfw_list/main.tf b/samples/cloudapi/data_kvmvm_pfw_list/main.tf index 648eac6..5a8c836 100644 --- a/samples/cloudapi/data_kvmvm_pfw_list/main.tf +++ b/samples/cloudapi/data_kvmvm_pfw_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_kvmvm_user_list/main.tf b/samples/cloudapi/data_kvmvm_user_list/main.tf index 7bd33db..278fefa 100644 --- a/samples/cloudapi/data_kvmvm_user_list/main.tf +++ b/samples/cloudapi/data_kvmvm_user_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_lb/main.tf b/samples/cloudapi/data_lb/main.tf index 3474d5d..f7d8aeb 100644 --- a/samples/cloudapi/data_lb/main.tf +++ b/samples/cloudapi/data_lb/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_lb_list/main.tf b/samples/cloudapi/data_lb_list/main.tf index 8cbb220..ffe96a6 100644 --- a/samples/cloudapi/data_lb_list/main.tf +++ b/samples/cloudapi/data_lb_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_lb_list_deleted/main.tf b/samples/cloudapi/data_lb_list_deleted/main.tf index 5dd1aa2..48b74a9 100644 --- a/samples/cloudapi/data_lb_list_deleted/main.tf +++ b/samples/cloudapi/data_lb_list_deleted/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_locations_list/main.tf b/samples/cloudapi/data_locations_list/main.tf index 45c1fca..1b31c25 100644 --- a/samples/cloudapi/data_locations_list/main.tf +++ b/samples/cloudapi/data_locations_list/main.tf @@ -12,8 +12,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_rg/main.tf b/samples/cloudapi/data_rg/main.tf index 3063ce7..d7bfecd 100644 --- a/samples/cloudapi/data_rg/main.tf +++ b/samples/cloudapi/data_rg/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_rg_affinity_group_computes/main.tf b/samples/cloudapi/data_rg_affinity_group_computes/main.tf index 1b7de29..ff3c71f 100644 --- a/samples/cloudapi/data_rg_affinity_group_computes/main.tf +++ b/samples/cloudapi/data_rg_affinity_group_computes/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_affinity_groups_get/main.tf b/samples/cloudapi/data_rg_affinity_groups_get/main.tf index 9aab26a..8772261 100644 --- a/samples/cloudapi/data_rg_affinity_groups_get/main.tf +++ b/samples/cloudapi/data_rg_affinity_groups_get/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_affinity_groups_list/main.tf b/samples/cloudapi/data_rg_affinity_groups_list/main.tf index e69fb5b..36bf719 100644 --- a/samples/cloudapi/data_rg_affinity_groups_list/main.tf +++ b/samples/cloudapi/data_rg_affinity_groups_list/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_audits/main.tf b/samples/cloudapi/data_rg_audits/main.tf index 41ba36d..cc737e8 100644 --- a/samples/cloudapi/data_rg_audits/main.tf +++ b/samples/cloudapi/data_rg_audits/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_list/main.tf b/samples/cloudapi/data_rg_list/main.tf index 99b6f45..f1e3d18 100644 --- a/samples/cloudapi/data_rg_list/main.tf +++ b/samples/cloudapi/data_rg_list/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_list_computes/main.tf b/samples/cloudapi/data_rg_list_computes/main.tf index f7f09c2..0ab39a5 100644 --- a/samples/cloudapi/data_rg_list_computes/main.tf +++ b/samples/cloudapi/data_rg_list_computes/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_list_deleted/main.tf b/samples/cloudapi/data_rg_list_deleted/main.tf index 9d97505..a1557f4 100644 --- a/samples/cloudapi/data_rg_list_deleted/main.tf +++ b/samples/cloudapi/data_rg_list_deleted/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_list_lb/main.tf b/samples/cloudapi/data_rg_list_lb/main.tf index df46dd6..9af5971 100644 --- a/samples/cloudapi/data_rg_list_lb/main.tf +++ b/samples/cloudapi/data_rg_list_lb/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_list_pfw/main.tf b/samples/cloudapi/data_rg_list_pfw/main.tf index 14dce5c..1db0d6e 100644 --- a/samples/cloudapi/data_rg_list_pfw/main.tf +++ b/samples/cloudapi/data_rg_list_pfw/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_list_vins/main.tf b/samples/cloudapi/data_rg_list_vins/main.tf index 42892bc..da2972c 100644 --- a/samples/cloudapi/data_rg_list_vins/main.tf +++ b/samples/cloudapi/data_rg_list_vins/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_rg_usage/main.tf b/samples/cloudapi/data_rg_usage/main.tf index e6cd73a..49bbf53 100644 --- a/samples/cloudapi/data_rg_usage/main.tf +++ b/samples/cloudapi/data_rg_usage/main.tf @@ -9,8 +9,8 @@ /* terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } */ diff --git a/samples/cloudapi/data_snapshot_list/main.tf b/samples/cloudapi/data_snapshot_list/main.tf index c8323ee..4962f9a 100644 --- a/samples/cloudapi/data_snapshot_list/main.tf +++ b/samples/cloudapi/data_snapshot_list/main.tf @@ -11,8 +11,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vgpu/main.tf b/samples/cloudapi/data_vgpu/main.tf index 8e9538a..536b18b 100644 --- a/samples/cloudapi/data_vgpu/main.tf +++ b/samples/cloudapi/data_vgpu/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins/main.tf b/samples/cloudapi/data_vins/main.tf index 479590b..a26b504 100644 --- a/samples/cloudapi/data_vins/main.tf +++ b/samples/cloudapi/data_vins/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins_audits/main.tf b/samples/cloudapi/data_vins_audits/main.tf index 328c8e8..69d0742 100644 --- a/samples/cloudapi/data_vins_audits/main.tf +++ b/samples/cloudapi/data_vins_audits/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins_ext_net_list/main.tf b/samples/cloudapi/data_vins_ext_net_list/main.tf index 22740b8..bcf6536 100644 --- a/samples/cloudapi/data_vins_ext_net_list/main.tf +++ b/samples/cloudapi/data_vins_ext_net_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins_ip_list/main.tf b/samples/cloudapi/data_vins_ip_list/main.tf index 387ec12..253885d 100644 --- a/samples/cloudapi/data_vins_ip_list/main.tf +++ b/samples/cloudapi/data_vins_ip_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins_list/main.tf b/samples/cloudapi/data_vins_list/main.tf index 0f44b92..3de2303 100644 --- a/samples/cloudapi/data_vins_list/main.tf +++ b/samples/cloudapi/data_vins_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins_list_deleted/main.tf b/samples/cloudapi/data_vins_list_deleted/main.tf index e1d35ae..4de306a 100644 --- a/samples/cloudapi/data_vins_list_deleted/main.tf +++ b/samples/cloudapi/data_vins_list_deleted/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/data_vins_nat_rule_list/main.tf b/samples/cloudapi/data_vins_nat_rule_list/main.tf index 15736e6..98084a4 100644 --- a/samples/cloudapi/data_vins_nat_rule_list/main.tf +++ b/samples/cloudapi/data_vins_nat_rule_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_account/main.tf b/samples/cloudapi/resource_account/main.tf index 86bd361..023977e 100644 --- a/samples/cloudapi/resource_account/main.tf +++ b/samples/cloudapi/resource_account/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_bservice/main.tf b/samples/cloudapi/resource_bservice/main.tf index b2b592a..d7b5717 100644 --- a/samples/cloudapi/resource_bservice/main.tf +++ b/samples/cloudapi/resource_bservice/main.tf @@ -17,8 +17,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_bservice_group/main.tf b/samples/cloudapi/resource_bservice_group/main.tf index 4b9b5f1..db2b7c1 100644 --- a/samples/cloudapi/resource_bservice_group/main.tf +++ b/samples/cloudapi/resource_bservice_group/main.tf @@ -13,8 +13,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_disk/main.tf b/samples/cloudapi/resource_disk/main.tf index 2b2dccc..ee49878 100644 --- a/samples/cloudapi/resource_disk/main.tf +++ b/samples/cloudapi/resource_disk/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_disk_snapshot/main.tf b/samples/cloudapi/resource_disk_snapshot/main.tf index a5d9863..114c42e 100644 --- a/samples/cloudapi/resource_disk_snapshot/main.tf +++ b/samples/cloudapi/resource_disk_snapshot/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_flipgroup/main.tf b/samples/cloudapi/resource_flipgroup/main.tf new file mode 100644 index 0000000..61cc54f --- /dev/null +++ b/samples/cloudapi/resource_flipgroup/main.tf @@ -0,0 +1,67 @@ +#Расскомментируйте этот код, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "oauth2" + oauth2_url = "https://sso.digitalenergy.online" + controller_url = "https://mr4.digitalenergy.online" + app_id = "" + app_secret = "" +} + +resource "decort_flipgroup" "fg" { + # ID аккаунта + # Обязательный параметр + # int + account_id = 999 + + # Наименование Flipgroup + # Обязательный параметр + # string + name = "flipgroup_name" + + # Тип сети (EXTNET, ViNS) + # Обязательный параметр + # string + net_type = "EXTNET" + + # ID сети + # Обязательный параметр + # int + net_id = 13 + + # Тип клиентов (в данный момент поддерживается только тип 'compute') + # Обязательный параметр + # string + client_type = "compute" + + # IP-адрес + # Опциональный параметр + # string + ip = "127.0.0.1" + + # Список клиентов, прикрепленных к флипгруппе + # Опциональный параметр + # []int + client_ids = [11269] + + # Описание флипгруппы + # Опциональный параметр + # string + desc = "CHANGED" +} + +output "fg_out" { + value = decort_flipgroup.fg +} diff --git a/samples/cloudapi/resource_image/main.tf b/samples/cloudapi/resource_image/main.tf new file mode 100644 index 0000000..7648cef --- /dev/null +++ b/samples/cloudapi/resource_image/main.tf @@ -0,0 +1,102 @@ +#Расскомментируйте этот код, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "oauth2" + oauth2_url = "https://sso.digitalenergy.online" + controller_url = "https://mr4.digitalenergy.online" + app_id = "" + app_secret = "" +} + +resource "decort_image" "img" { + # Наименование образа + # Обязательный параметр + # string + name = "image_name" + + # grid ID платформы + # Обязательный параметр + # int + gid = 2002 + + # Драйверы компьютов, подходящие для данного образа + # Обязательный параметр + # []string + drivers = ["KVM_X86"] + + # Тип образа (linux, windows и др.) + # Обязательный параметр + # string + type = "linux" + + # Прямая ссылка на образ + # Обязательный параметр + # string + url = "https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-virt-3.17.3-x86_64.iso" + + # Тип загрузчика (bios/uefi) + # Обязательный параметр + # string + boot_type = "bios" + + # ID аккаунта + # Опциональный параметр + # int + account_id = 138 + + # Поддержка hot resize + # Опциональный параметр + # bool + hot_resize = true + + # Юзернейм для образа + # Опциональный параметр + # string + username = "userx" + + # Пароль для образа + # Опциональный параметр + # string + password = "passx" + + # Юзернейм для загрузки binary media + # Опциональный параметр + # string + username_dl = "userxdl" + + # Пароль для загрузки binary media + # Опциональный параметр + # string + password_dl = "passxdl" + + # Storage endpoint provider ID + # Опциональный параметр + # int + sep_id = 1 + + # Pool для образа + # Опциональный параметр + # string + pool_name = "pool" + + # Архитектура обраща (X86_64 / PPC64_LE) + # Опциональный параметр + # string + architecture = "PPC64_LE" +} + +output "img_out" { + value = decort_image.img +} diff --git a/samples/cloudapi/resource_k8s/main.tf b/samples/cloudapi/resource_k8s/main.tf index 28c9850..b17348e 100644 --- a/samples/cloudapi/resource_k8s/main.tf +++ b/samples/cloudapi/resource_k8s/main.tf @@ -5,7 +5,7 @@ terraform { required_providers { decort = { - source = "terraform.local/local/decort" + source = "basis/decort/decort" version = "" } } diff --git a/samples/cloudapi/resource_k8s_wg/main.tf b/samples/cloudapi/resource_k8s_wg/main.tf index 75429d6..e709b29 100644 --- a/samples/cloudapi/resource_k8s_wg/main.tf +++ b/samples/cloudapi/resource_k8s_wg/main.tf @@ -1,14 +1,3 @@ -/* -Пример использования -Ресурсов worker group -Ресурсы позволяет: -1. Создавать -2. Редактировать -3. Удалять - -*/ - - #Расскомментируйте этот код, #и внесите необходимые правки в версию и путь, @@ -17,8 +6,8 @@ terraform { required_providers { decort = { - source = "terraform.local/local/decort" - version = "1.0.0" + source = "basis/decort/decort" + version = "" } } } diff --git a/samples/cloudapi/resource_kvmvm/main.tf b/samples/cloudapi/resource_kvmvm/main.tf index 10e0922..ce5f9d3 100644 --- a/samples/cloudapi/resource_kvmvm/main.tf +++ b/samples/cloudapi/resource_kvmvm/main.tf @@ -13,8 +13,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_lb/main.tf b/samples/cloudapi/resource_lb/main.tf index 8002bad..6454c58 100644 --- a/samples/cloudapi/resource_lb/main.tf +++ b/samples/cloudapi/resource_lb/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_lb_backend/main.tf b/samples/cloudapi/resource_lb_backend/main.tf index d91cb6e..7dc00f2 100644 --- a/samples/cloudapi/resource_lb_backend/main.tf +++ b/samples/cloudapi/resource_lb_backend/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_lb_backend_server/main.tf b/samples/cloudapi/resource_lb_backend_server/main.tf index 8102534..a5edee5 100644 --- a/samples/cloudapi/resource_lb_backend_server/main.tf +++ b/samples/cloudapi/resource_lb_backend_server/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_lb_frontend/main.tf b/samples/cloudapi/resource_lb_frontend/main.tf index 9c3ccab..4e32580 100644 --- a/samples/cloudapi/resource_lb_frontend/main.tf +++ b/samples/cloudapi/resource_lb_frontend/main.tf @@ -13,8 +13,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_lb_frontend_bind/main.tf b/samples/cloudapi/resource_lb_frontend_bind/main.tf index e669ee3..0b15ecd 100644 --- a/samples/cloudapi/resource_lb_frontend_bind/main.tf +++ b/samples/cloudapi/resource_lb_frontend_bind/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_pfw/main.tf b/samples/cloudapi/resource_pfw/main.tf new file mode 100644 index 0000000..ea28cfb --- /dev/null +++ b/samples/cloudapi/resource_pfw/main.tf @@ -0,0 +1,52 @@ +#Расскомментируйте этот код, +#и внесите необходимые правки в версию и путь, +#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером +/* +terraform { + required_providers { + decort = { + source = "basis/decort/decort" + version = "" + } + } +} +*/ + +provider "decort" { + authenticator = "oauth2" + oauth2_url = "https://sso.digitalenergy.online" + controller_url = "https://mr4.digitalenergy.online" + app_id = "" + app_secret = "" +} + +resource "decort_pfw" "pfw" { + # ID виртуальной машины + # Обязательный параметр + # int + compute_id = 11269 + + # Начальный порт правила + # Обязательный параметр + # int + public_port_start = 200 + + # Внутренний порт + # Обязательный параметр + # int + local_base_port = 22 + + # Протокол соединения (tcp / udp) + # Обязательный параметр + # string + proto = "tcp" + + # Конечный порт (включительно) + # Опциональный параметр + # int + public_port_end = 21321 +} + +output "pfw_out" { + value = decort_pfw.pfw +} diff --git a/samples/cloudapi/resource_rg/main.tf b/samples/cloudapi/resource_rg/main.tf index 3edc9db..88eeb02 100644 --- a/samples/cloudapi/resource_rg/main.tf +++ b/samples/cloudapi/resource_rg/main.tf @@ -13,8 +13,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_snapshot/main.tf b/samples/cloudapi/resource_snapshot/main.tf index 3fce8a2..08544ba 100644 --- a/samples/cloudapi/resource_snapshot/main.tf +++ b/samples/cloudapi/resource_snapshot/main.tf @@ -15,8 +15,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudapi/resource_vins/main.tf b/samples/cloudapi/resource_vins/main.tf index 2d5b440..666be5f 100644 --- a/samples/cloudapi/resource_vins/main.tf +++ b/samples/cloudapi/resource_vins/main.tf @@ -19,8 +19,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_audits_list/main.tf b/samples/cloudbroker/data_account_audits_list/main.tf index 1cd48f5..150deb8 100644 --- a/samples/cloudbroker/data_account_audits_list/main.tf +++ b/samples/cloudbroker/data_account_audits_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_computes_list/main.tf b/samples/cloudbroker/data_account_computes_list/main.tf index 26edae2..b099eb2 100644 --- a/samples/cloudbroker/data_account_computes_list/main.tf +++ b/samples/cloudbroker/data_account_computes_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_deleted_list/main.tf b/samples/cloudbroker/data_account_deleted_list/main.tf index 7309fcd..9a5f843 100644 --- a/samples/cloudbroker/data_account_deleted_list/main.tf +++ b/samples/cloudbroker/data_account_deleted_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_disks_list/main.tf b/samples/cloudbroker/data_account_disks_list/main.tf index c0ac605..f795e9b 100644 --- a/samples/cloudbroker/data_account_disks_list/main.tf +++ b/samples/cloudbroker/data_account_disks_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_flipgroups_list/main.tf b/samples/cloudbroker/data_account_flipgroups_list/main.tf index 134d621..01fd2d8 100644 --- a/samples/cloudbroker/data_account_flipgroups_list/main.tf +++ b/samples/cloudbroker/data_account_flipgroups_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_list/main.tf b/samples/cloudbroker/data_account_list/main.tf index 381eaed..7291312 100644 --- a/samples/cloudbroker/data_account_list/main.tf +++ b/samples/cloudbroker/data_account_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_rg_list/main.tf b/samples/cloudbroker/data_account_rg_list/main.tf index 13fbb6d..dae55f4 100644 --- a/samples/cloudbroker/data_account_rg_list/main.tf +++ b/samples/cloudbroker/data_account_rg_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_account_vins_list/main.tf b/samples/cloudbroker/data_account_vins_list/main.tf index e0e8eda..66c336d 100644 --- a/samples/cloudbroker/data_account_vins_list/main.tf +++ b/samples/cloudbroker/data_account_vins_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_disk/main.tf b/samples/cloudbroker/data_disk/main.tf index 941dccf..2e6c639 100644 --- a/samples/cloudbroker/data_disk/main.tf +++ b/samples/cloudbroker/data_disk/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_disk_list/main.tf b/samples/cloudbroker/data_disk_list/main.tf index 1074f83..08ae340 100644 --- a/samples/cloudbroker/data_disk_list/main.tf +++ b/samples/cloudbroker/data_disk_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_grid/main.tf b/samples/cloudbroker/data_grid/main.tf index e2f0407..9986b89 100644 --- a/samples/cloudbroker/data_grid/main.tf +++ b/samples/cloudbroker/data_grid/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_grid_list/main.tf b/samples/cloudbroker/data_grid_list/main.tf index d32a191..081bd99 100644 --- a/samples/cloudbroker/data_grid_list/main.tf +++ b/samples/cloudbroker/data_grid_list/main.tf @@ -11,8 +11,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_image/main.tf b/samples/cloudbroker/data_image/main.tf index 45b3ae8..5fea3e1 100644 --- a/samples/cloudbroker/data_image/main.tf +++ b/samples/cloudbroker/data_image/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_image_list/main.tf b/samples/cloudbroker/data_image_list/main.tf index 6eff38e..7102950 100644 --- a/samples/cloudbroker/data_image_list/main.tf +++ b/samples/cloudbroker/data_image_list/main.tf @@ -11,8 +11,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_image_list_stacks/main.tf b/samples/cloudbroker/data_image_list_stacks/main.tf index 85ce856..41e7ed3 100644 --- a/samples/cloudbroker/data_image_list_stacks/main.tf +++ b/samples/cloudbroker/data_image_list_stacks/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_pcidevice/main.tf b/samples/cloudbroker/data_pcidevice/main.tf index 137f403..dcf3cee 100644 --- a/samples/cloudbroker/data_pcidevice/main.tf +++ b/samples/cloudbroker/data_pcidevice/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_pcidevice_list/main.tf b/samples/cloudbroker/data_pcidevice_list/main.tf index 6597c5c..b649c98 100644 --- a/samples/cloudbroker/data_pcidevice_list/main.tf +++ b/samples/cloudbroker/data_pcidevice_list/main.tf @@ -11,8 +11,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_sep/main.tf b/samples/cloudbroker/data_sep/main.tf index 2e7983d..f880f9c 100644 --- a/samples/cloudbroker/data_sep/main.tf +++ b/samples/cloudbroker/data_sep/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_sep_config/main.tf b/samples/cloudbroker/data_sep_config/main.tf index 50e54ad..e19ed3a 100644 --- a/samples/cloudbroker/data_sep_config/main.tf +++ b/samples/cloudbroker/data_sep_config/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_sep_consumption/main.tf b/samples/cloudbroker/data_sep_consumption/main.tf index e0c7e06..c8790db 100644 --- a/samples/cloudbroker/data_sep_consumption/main.tf +++ b/samples/cloudbroker/data_sep_consumption/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_sep_disk_list/main.tf b/samples/cloudbroker/data_sep_disk_list/main.tf index 3f10d49..319e08c 100644 --- a/samples/cloudbroker/data_sep_disk_list/main.tf +++ b/samples/cloudbroker/data_sep_disk_list/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_sep_list/main.tf b/samples/cloudbroker/data_sep_list/main.tf index b64f77d..9e11621 100644 --- a/samples/cloudbroker/data_sep_list/main.tf +++ b/samples/cloudbroker/data_sep_list/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/data_sep_pool/main.tf b/samples/cloudbroker/data_sep_pool/main.tf index 1bed890..53e6983 100644 --- a/samples/cloudbroker/data_sep_pool/main.tf +++ b/samples/cloudbroker/data_sep_pool/main.tf @@ -10,8 +10,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_delete_images/main.tf b/samples/cloudbroker/resource_delete_images/main.tf index f7a0eaf..d210197 100644 --- a/samples/cloudbroker/resource_delete_images/main.tf +++ b/samples/cloudbroker/resource_delete_images/main.tf @@ -12,8 +12,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_disk/main.tf b/samples/cloudbroker/resource_disk/main.tf index 7097213..344550b 100644 --- a/samples/cloudbroker/resource_disk/main.tf +++ b/samples/cloudbroker/resource_disk/main.tf @@ -9,8 +9,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_image/main.tf b/samples/cloudbroker/resource_image/main.tf index f6a78cf..8d4379e 100644 --- a/samples/cloudbroker/resource_image/main.tf +++ b/samples/cloudbroker/resource_image/main.tf @@ -15,8 +15,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_image_cdrom/main.tf b/samples/cloudbroker/resource_image_cdrom/main.tf index 51793b8..8d9a83b 100644 --- a/samples/cloudbroker/resource_image_cdrom/main.tf +++ b/samples/cloudbroker/resource_image_cdrom/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_pcidevice/main.tf b/samples/cloudbroker/resource_pcidevice/main.tf index fd7b112..fb45f4e 100644 --- a/samples/cloudbroker/resource_pcidevice/main.tf +++ b/samples/cloudbroker/resource_pcidevice/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_sep/main.tf b/samples/cloudbroker/resource_sep/main.tf index c7e016c..0cf5554 100644 --- a/samples/cloudbroker/resource_sep/main.tf +++ b/samples/cloudbroker/resource_sep/main.tf @@ -15,8 +15,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_sep_config/main.tf b/samples/cloudbroker/resource_sep_config/main.tf index 83341b6..110dcaa 100644 --- a/samples/cloudbroker/resource_sep_config/main.tf +++ b/samples/cloudbroker/resource_sep_config/main.tf @@ -13,8 +13,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } } diff --git a/samples/cloudbroker/resource_virtual_image/main.tf b/samples/cloudbroker/resource_virtual_image/main.tf index 913d010..481152b 100644 --- a/samples/cloudbroker/resource_virtual_image/main.tf +++ b/samples/cloudbroker/resource_virtual_image/main.tf @@ -14,8 +14,8 @@ terraform { required_providers { decort = { - version = "1.1" - source = "digitalenergy.online/decort/decort" + version = "" + source = "basis/decort/decort" } } }