4842 lines
272 KiB
Go
4842 lines
272 KiB
Go
package iaas_test
|
|
|
|
import (
|
|
"context"
|
|
_ "embed"
|
|
"errors"
|
|
"fmt"
|
|
"maps"
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"sync"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform-plugin-testing/plancheck"
|
|
|
|
"github.com/hashicorp/terraform-plugin-testing/config"
|
|
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
|
|
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
|
|
"github.com/hashicorp/terraform-plugin-testing/terraform"
|
|
stackitSdkConfig "github.com/stackitcloud/stackit-sdk-go/core/config"
|
|
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
|
|
"github.com/stackitcloud/stackit-sdk-go/core/utils"
|
|
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
|
|
"github.com/stackitcloud/stackit-sdk-go/services/iaasalpha"
|
|
waitAlpha "github.com/stackitcloud/stackit-sdk-go/services/iaasalpha/wait"
|
|
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
|
|
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/testutil"
|
|
)
|
|
|
|
var (
|
|
//go:embed testdata/resource-security-group-min.tf
|
|
resourceSecurityGroupMinConfig string
|
|
|
|
//go:embed testdata/resource-security-group-max.tf
|
|
resourceSecurityGroupMaxConfig string
|
|
|
|
//go:embed testdata/datasource-image-v2-variants.tf
|
|
dataSourceImageVariants string
|
|
|
|
//go:embed testdata/datasource-public-ip-ranges.tf
|
|
datasourcePublicIpRanges string
|
|
|
|
//go:embed testdata/resource-image-min.tf
|
|
resourceImageMinConfig string
|
|
|
|
//go:embed testdata/resource-image-max.tf
|
|
resourceImageMaxConfig string
|
|
|
|
//go:embed testdata/resource-key-pair-min.tf
|
|
resourceKeyPairMinConfig string
|
|
|
|
//go:embed testdata/resource-key-pair-max.tf
|
|
resourceKeyPairMaxConfig string
|
|
|
|
//go:embed testdata/resource-network-area-min.tf
|
|
resourceNetworkAreaMinConfig string
|
|
|
|
//go:embed testdata/resource-network-area-max.tf
|
|
resourceNetworkAreaMaxConfig string
|
|
|
|
//go:embed testdata/resource-network-area-region-min.tf
|
|
resourceNetworkAreaRegionMinConfig string
|
|
|
|
//go:embed testdata/resource-network-area-region-max.tf
|
|
resourceNetworkAreaRegionMaxConfig string
|
|
|
|
//go:embed testdata/resource-network-min.tf
|
|
resourceNetworkMinConfig string
|
|
|
|
//go:embed testdata/resource-network-max.tf
|
|
resourceNetworkMaxConfig string
|
|
|
|
//go:embed testdata/resource-network-interface-min.tf
|
|
resourceNetworkInterfaceMinConfig string
|
|
|
|
//go:embed testdata/resource-network-interface-max.tf
|
|
resourceNetworkInterfaceMaxConfig string
|
|
|
|
//go:embed testdata/resource-volume-min.tf
|
|
resourceVolumeMinConfig string
|
|
|
|
//go:embed testdata/resource-volume-max.tf
|
|
resourceVolumeMaxConfig string
|
|
|
|
//go:embed testdata/resource-affinity-group-min.tf
|
|
resourceAffinityGroupMinConfig string
|
|
|
|
//go:embed testdata/resource-server-min.tf
|
|
resourceServerMinConfig string
|
|
|
|
//go:embed testdata/resource-server-max.tf
|
|
resourceServerMaxConfig string
|
|
|
|
//go:embed testdata/resource-server-max-server-attachments.tf
|
|
resourceServerMaxAttachmentConfig string
|
|
|
|
//go:embed testdata/datasource-machinetype.tf
|
|
dataSourceMachineTypeConfig string
|
|
)
|
|
|
|
const (
|
|
keypairPublicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIDsPd27M449akqCtdFg2+AmRVJz6eWio0oMP9dVg7XZ"
|
|
)
|
|
|
|
// SERVER - MIN
|
|
|
|
var testConfigServerVarsMin = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"network_name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"machine_type": config.StringVariable("t1.1"),
|
|
"image_id": config.StringVariable("a2c127b2-b1b5-4aee-986f-41cd11b41279"),
|
|
}
|
|
|
|
var testConfigServerVarsMinUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigServerVarsMin {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(testutil.ProjectId)
|
|
updatedConfig["machine_type"] = config.StringVariable("t1.2")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// SERVER - MAX
|
|
|
|
var testConfigServerVarsMax = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"name_not_updated": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"machine_type": config.StringVariable("t1.1"),
|
|
"image_id": config.StringVariable("a2c127b2-b1b5-4aee-986f-41cd11b41279"),
|
|
"availability_zone": config.StringVariable("eu01-1"),
|
|
"label": config.StringVariable("label"),
|
|
"user_data": config.StringVariable("#!/bin/bash"),
|
|
"policy": config.StringVariable("soft-affinity"),
|
|
"size": config.IntegerVariable(16),
|
|
"service_account_mail": config.StringVariable(testutil.TestProjectServiceAccountEmail),
|
|
"public_key": config.StringVariable(keypairPublicKey),
|
|
"desired_status": config.StringVariable("active"),
|
|
}
|
|
|
|
var testConfigServerVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigServerVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(testutil.ProjectId)
|
|
updatedConfig["machine_type"] = config.StringVariable("t1.2")
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
updatedConfig["desired_status"] = config.StringVariable("inactive")
|
|
return updatedConfig
|
|
}()
|
|
|
|
var testConfigServerVarsMaxUpdatedDesiredStatus = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigServerVarsMaxUpdated {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(testutil.ProjectId)
|
|
updatedConfig["machine_type"] = config.StringVariable("t1.2")
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
updatedConfig["desired_status"] = config.StringVariable("deallocated")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// AFFINITY GROUP - MIN
|
|
|
|
var testConfigAffinityGroupVarsMin = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"policy": config.StringVariable("hard-affinity"),
|
|
}
|
|
|
|
// NETWORK INTERFACE - MIN
|
|
|
|
var testConfigNetworkInterfaceVarsMin = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
}
|
|
|
|
// NETWORK INTERFACE - MAX
|
|
|
|
var testConfigNetworkInterfaceVarsMax = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"allowed_address": config.StringVariable("10.2.10.0/24"),
|
|
"ipv4": config.StringVariable("10.2.10.20"),
|
|
"ipv4_prefix": config.StringVariable("10.2.10.0/24"),
|
|
"security": config.BoolVariable(true),
|
|
"label": config.StringVariable("label"),
|
|
}
|
|
|
|
var testConfigNetworkInterfaceVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigNetworkInterfaceVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["name"])))
|
|
updatedConfig["ipv4"] = config.StringVariable("10.2.10.21")
|
|
updatedConfig["security"] = config.BoolVariable(false)
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// VOLUME - MIN
|
|
|
|
var testConfigVolumeVarsMin = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"availability_zone": config.StringVariable("eu01-1"),
|
|
"size": config.IntegerVariable(16),
|
|
}
|
|
|
|
var testConfigVolumeVarsMinUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigVolumeVarsMin {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["size"] = config.IntegerVariable(20)
|
|
return updatedConfig
|
|
}()
|
|
|
|
// VOLUME - MAX
|
|
|
|
var testConfigVolumeVarsMax = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"availability_zone": config.StringVariable("eu01-1"),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"size": config.IntegerVariable(16),
|
|
"description": config.StringVariable("description"),
|
|
"performance_class": config.StringVariable("storage_premium_perf0"),
|
|
"label": config.StringVariable("label"),
|
|
}
|
|
|
|
var testConfigVolumeVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigVolumeVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["size"] = config.IntegerVariable(20)
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["name"])))
|
|
updatedConfig["description"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["description"])))
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// NETWORK - MIN
|
|
|
|
var testConfigNetworkVarsMin = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
}
|
|
|
|
var testConfigNetworkVarsMinUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
maps.Copy(updatedConfig, testConfigNetworkVarsMin)
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
return updatedConfig
|
|
}()
|
|
|
|
// NETWORK - MAX
|
|
|
|
var testConfigNetworkVarsMax = config.Variables{
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
|
|
"ipv4_gateway": config.StringVariable("10.2.2.1"),
|
|
"ipv4_nameserver_0": config.StringVariable("10.2.2.2"),
|
|
"ipv4_nameserver_1": config.StringVariable("10.2.2.3"),
|
|
"ipv4_prefix": config.StringVariable("10.2.2.0/24"),
|
|
"ipv4_prefix_length": config.IntegerVariable(24),
|
|
"routed": config.BoolVariable(true),
|
|
"label": config.StringVariable("label"),
|
|
"organization_id": config.StringVariable(testutil.OrganizationId),
|
|
"service_account_mail": config.StringVariable(testutil.TestProjectServiceAccountEmail),
|
|
}
|
|
|
|
var testConfigNetworkVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
maps.Copy(updatedConfig, testConfigNetworkVarsMax)
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
updatedConfig["ipv4_gateway"] = config.StringVariable("")
|
|
updatedConfig["ipv4_nameserver_0"] = config.StringVariable("10.2.2.10")
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// NETWORK AREA - MIN
|
|
|
|
var testConfigNetworkAreaVarsMin = config.Variables{
|
|
"organization_id": config.StringVariable(testutil.OrganizationId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
}
|
|
|
|
var testConfigNetworkAreaVarsMinUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigNetworkAreaVarsMin {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
return updatedConfig
|
|
}()
|
|
|
|
// NETWORK AREA - MAX
|
|
|
|
var testConfigNetworkAreaVarsMax = config.Variables{
|
|
"organization_id": config.StringVariable(testutil.OrganizationId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"transfer_network": config.StringVariable("10.1.2.0/24"),
|
|
"network_ranges_prefix": config.StringVariable("10.0.0.0/16"),
|
|
"default_nameservers": config.StringVariable("1.1.1.1"),
|
|
"default_prefix_length": config.IntegerVariable(24),
|
|
"max_prefix_length": config.IntegerVariable(24),
|
|
"min_prefix_length": config.IntegerVariable(16),
|
|
"route_destination_type": config.StringVariable("cidrv4"),
|
|
"route_destination_value": config.StringVariable("1.1.1.0/24"),
|
|
"route_next_hop_type": config.StringVariable("ipv4"),
|
|
"route_next_hop_value": config.StringVariable("1.1.1.1"),
|
|
"label": config.StringVariable("label"),
|
|
}
|
|
|
|
var testConfigNetworkAreaVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigNetworkAreaVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
updatedConfig["network_ranges_prefix"] = config.StringVariable("10.0.0.0/18")
|
|
updatedConfig["default_nameservers"] = config.StringVariable("1.1.1.2")
|
|
updatedConfig["default_prefix_length"] = config.IntegerVariable(25)
|
|
updatedConfig["max_prefix_length"] = config.IntegerVariable(25)
|
|
updatedConfig["min_prefix_length"] = config.IntegerVariable(20)
|
|
// TODO: enable once the IaaS API supports IPv6
|
|
// updatedConfig["route_destination_type"] = config.StringVariable("cidrv6")
|
|
// updatedConfig["route_destination_value"] = config.StringVariable("2001:db8:3c4d:15::1a2b:3c4d/64")
|
|
// updatedConfig["route_next_hop_type"] = config.StringVariable("ipv6")
|
|
// updatedConfig["route_next_hop_value"] = config.StringVariable("2001:db8:3c4d:15::1a2b:3c4d")
|
|
// updatedConfig["label"] = config.StringVariable("updated")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// NETWORK AREA REGION - MIN
|
|
|
|
var testConfigNetworkAreaRegionVarsMin = config.Variables{
|
|
"organization_id": config.StringVariable(testutil.OrganizationId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"transfer_network": config.StringVariable("10.1.2.0/24"),
|
|
"network_ranges_prefix": config.StringVariable("10.0.0.0/16"),
|
|
}
|
|
|
|
var testConfigNetworkAreaRegionVarsMinUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigNetworkAreaRegionVarsMin {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["network_ranges_prefix"] = config.StringVariable("10.0.0.0/18")
|
|
return updatedConfig
|
|
}()
|
|
|
|
// NETWORK AREA REGION - MAX
|
|
|
|
var testConfigNetworkAreaRegionVarsMax = config.Variables{
|
|
"organization_id": config.StringVariable(testutil.OrganizationId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"transfer_network": config.StringVariable("10.1.2.0/24"),
|
|
"network_ranges_prefix": config.StringVariable("10.0.0.0/16"),
|
|
"default_nameservers": config.StringVariable("1.1.1.1"),
|
|
"default_prefix_length": config.IntegerVariable(26),
|
|
"min_prefix_length": config.IntegerVariable(25),
|
|
"max_prefix_length": config.IntegerVariable(28),
|
|
}
|
|
|
|
var testConfigNetworkAreaRegionVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigNetworkAreaRegionVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["network_ranges_prefix"] = config.StringVariable("10.0.0.0/18")
|
|
updatedConfig["default_nameservers"] = config.StringVariable("8.8.8.8")
|
|
updatedConfig["default_prefix_length"] = config.IntegerVariable(27)
|
|
updatedConfig["min_prefix_length"] = config.IntegerVariable(26)
|
|
updatedConfig["max_prefix_length"] = config.IntegerVariable(28)
|
|
return updatedConfig
|
|
}()
|
|
|
|
// SECURITY GROUP - MIN
|
|
|
|
var testConfigSecurityGroupsVarsMin = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"direction": config.StringVariable("ingress"),
|
|
}
|
|
|
|
func testConfigSecurityGroupsVarsMinUpdated() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigSecurityGroupsVarsMin {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
return updatedConfig
|
|
}
|
|
|
|
// SECURITY GROUP - MAX
|
|
|
|
var testConfigSecurityGroupsVarsMax = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"description": config.StringVariable("description"),
|
|
"description_rule": config.StringVariable("description"),
|
|
"label": config.StringVariable("label"),
|
|
"stateful": config.BoolVariable(false),
|
|
"direction": config.StringVariable("ingress"),
|
|
"ether_type": config.StringVariable("IPv4"),
|
|
"ip_range": config.StringVariable("192.168.2.0/24"),
|
|
"port": config.StringVariable("443"),
|
|
"protocol": config.StringVariable("tcp"),
|
|
"icmp_code": config.IntegerVariable(0),
|
|
"icmp_type": config.IntegerVariable(8),
|
|
"name_remote": config.StringVariable(fmt.Sprintf("tf-acc-remote-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
}
|
|
|
|
func testConfigSecurityGroupsVarsMaxUpdated() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigSecurityGroupsVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
updatedConfig["name_remote"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name_remote"])))
|
|
updatedConfig["description"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["description"])))
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
|
|
return updatedConfig
|
|
}
|
|
|
|
// IMAGE - MIN
|
|
|
|
var testConfigImageVarsMin = func() config.Variables {
|
|
localFilePath := testutil.TestImageLocalFilePath
|
|
if localFilePath == "default" {
|
|
localFileForIaasImage = testutil.CreateDefaultLocalFile()
|
|
filePath, err := filepath.Abs(localFileForIaasImage.Name())
|
|
if err != nil {
|
|
fmt.Println("Absolute path for localFileForIaasImage could not be retrieved.")
|
|
}
|
|
localFilePath = filePath
|
|
}
|
|
return config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"disk_format": config.StringVariable("qcow2"),
|
|
"local_file_path": config.StringVariable(localFilePath),
|
|
}
|
|
}()
|
|
|
|
var testConfigImageVarsMinUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigImageVarsMin {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
return updatedConfig
|
|
}()
|
|
|
|
// IMAGE - MAX
|
|
|
|
var testConfigImageVarsMax = func() config.Variables {
|
|
localFilePath := testutil.TestImageLocalFilePath
|
|
if localFilePath == "default" {
|
|
localFileForIaasImage = testutil.CreateDefaultLocalFile()
|
|
filePath, err := filepath.Abs(localFileForIaasImage.Name())
|
|
if err != nil {
|
|
fmt.Println("Absolute path for localFileForIaasImage could not be retrieved.")
|
|
}
|
|
localFilePath = filePath
|
|
}
|
|
return config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"disk_format": config.StringVariable("qcow2"),
|
|
"local_file_path": config.StringVariable(localFilePath),
|
|
"min_disk_size": config.IntegerVariable(20),
|
|
"min_ram": config.IntegerVariable(2048),
|
|
"label": config.StringVariable("label"),
|
|
"boot_menu": config.BoolVariable(false),
|
|
"cdrom_bus": config.StringVariable("scsi"),
|
|
"disk_bus": config.StringVariable("scsi"),
|
|
"nic_model": config.StringVariable("e1000"),
|
|
"operating_system": config.StringVariable("linux"),
|
|
"operating_system_distro": config.StringVariable("ubuntu"),
|
|
"operating_system_version": config.StringVariable("16.04"),
|
|
"rescue_bus": config.StringVariable("sata"),
|
|
"rescue_device": config.StringVariable("cdrom"),
|
|
"secure_boot": config.BoolVariable(true),
|
|
"uefi": config.BoolVariable(true),
|
|
"video_model": config.StringVariable("vga"),
|
|
"virtio_scsi": config.BoolVariable(true),
|
|
}
|
|
}()
|
|
|
|
var testConfigImageVarsMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigImageVarsMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["name"])))
|
|
updatedConfig["min_disk_size"] = config.IntegerVariable(25)
|
|
updatedConfig["min_ram"] = config.IntegerVariable(4096)
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
updatedConfig["boot_menu"] = config.BoolVariable(false)
|
|
updatedConfig["cdrom_bus"] = config.StringVariable("usb")
|
|
updatedConfig["disk_bus"] = config.StringVariable("usb")
|
|
updatedConfig["nic_model"] = config.StringVariable("virtio")
|
|
updatedConfig["operating_system"] = config.StringVariable("windows")
|
|
updatedConfig["operating_system_distro"] = config.StringVariable("debian")
|
|
updatedConfig["operating_system_version"] = config.StringVariable("18.04")
|
|
updatedConfig["rescue_bus"] = config.StringVariable("usb")
|
|
updatedConfig["rescue_device"] = config.StringVariable("disk")
|
|
updatedConfig["secure_boot"] = config.BoolVariable(false)
|
|
updatedConfig["uefi"] = config.BoolVariable(false)
|
|
updatedConfig["video_model"] = config.StringVariable("virtio")
|
|
updatedConfig["virtio_scsi"] = config.BoolVariable(false)
|
|
return updatedConfig
|
|
}()
|
|
|
|
// KEYPAIR - MIN
|
|
|
|
var testConfigKeyPairMin = config.Variables{
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"public_key": config.StringVariable(keypairPublicKey),
|
|
}
|
|
|
|
// KEYPAIR - MAX
|
|
|
|
var testConfigKeyPairMax = config.Variables{
|
|
"name": config.StringVariable(fmt.Sprintf("tf-acc-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlpha))),
|
|
"public_key": config.StringVariable(keypairPublicKey),
|
|
"label": config.StringVariable("label"),
|
|
}
|
|
|
|
var testConfigKeyPairMaxUpdated = func() config.Variables {
|
|
updatedConfig := config.Variables{}
|
|
for k, v := range testConfigKeyPairMax {
|
|
updatedConfig[k] = v
|
|
}
|
|
updatedConfig["label"] = config.StringVariable("updated")
|
|
return updatedConfig
|
|
}()
|
|
|
|
var testConfigMachineTypeVars = config.Variables{
|
|
"project_id": config.StringVariable(testutil.ProjectId),
|
|
}
|
|
|
|
// if no local file is provided the test should create a default file and work with this instead of failing
|
|
var localFileForIaasImage os.File
|
|
|
|
func TestAccNetworkMin(t *testing.T) {
|
|
t.Logf("TestAccNetworkMin name: %s", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfigWithExperiments(), resourceNetworkMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "region", testutil.Region),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "public_ip"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "region"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "routing_table_id"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network" "network" {
|
|
project_id = stackit_network.network.project_id
|
|
network_id = stackit_network.network.network_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfigWithExperiments(), resourceNetworkMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "region", testutil.Region),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "public_ip"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "region"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network.network", "routing_table_id"),
|
|
),
|
|
},
|
|
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMin,
|
|
ResourceName: "stackit_network.network",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network.network"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network.network")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, networkId), nil
|
|
},
|
|
ImportState: true,
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMin["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "public_ip"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "region"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "routing_table_id"),
|
|
),
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMinUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfigWithExperiments(), resourceNetworkMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMinUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMinUpdated["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "public_ip"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "region"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "routing_table_id"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkMax(t *testing.T) {
|
|
t.Logf("TestAccNetworkMax name: %s", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfigWithExperiments(), resourceNetworkMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network with prefix
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"stackit_network.network_prefix", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_gateway", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_gateway"])),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network_prefix", "no_ipv4_gateway"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.#", "2"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_0"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.1", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefix", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefixes.#", "1"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["routed"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["label"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "public_ip"),
|
|
|
|
// Network with prefix_length
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"stackit_network.network_prefix_length", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "ipv4_gateway"),
|
|
// resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "no_ipv4_gateway", "true"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.#", "2"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_0"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.1", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "ipv4_prefix"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network_prefix_length", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["routed"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["label"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "public_ip"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "region", testutil.Region),
|
|
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network.network_prefix_length", "routing_table_id",
|
|
"stackit_routing_table.routing_table", "routing_table_id",
|
|
),
|
|
|
|
// Routing table
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"stackit_routing_table.routing_table", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_routing_table.routing_table", "routing_table_id"),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "labels.%", "0"),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "region", testutil.Region),
|
|
resource.TestCheckNoResourceAttr("stackit_routing_table.routing_table", "description"),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "system_routes", "true"),
|
|
resource.TestCheckResourceAttrSet("stackit_routing_table.routing_table", "created_at"),
|
|
resource.TestCheckResourceAttrSet("stackit_routing_table.routing_table", "updated_at"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network" "network_prefix" {
|
|
project_id = stackit_network.network_prefix.project_id
|
|
network_id = stackit_network.network_prefix.network_id
|
|
}
|
|
|
|
data "stackit_network" "network_prefix_length" {
|
|
project_id = stackit_network.network_prefix_length.project_id
|
|
network_id = stackit_network.network_prefix_length.network_id
|
|
}
|
|
|
|
data "stackit_routing_table" "routing_table" {
|
|
organization_id = stackit_routing_table.routing_table.organization_id
|
|
network_area_id = stackit_routing_table.routing_table.network_area_id
|
|
routing_table_id = stackit_routing_table.routing_table.routing_table_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfigWithExperiments(), resourceNetworkMaxConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network with prefix
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network_prefix", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"data.stackit_network.network_prefix", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "ipv4_gateway", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_gateway"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "ipv4_nameservers.#", "2"),
|
|
resource.TestCheckTypeSetElemAttr("data.stackit_network.network_prefix", "ipv4_nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_0"])),
|
|
resource.TestCheckTypeSetElemAttr("data.stackit_network.network_prefix", "ipv4_nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "ipv4_prefix", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "ipv4_prefixes.#", "1"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network_prefix", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["routed"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["label"])),
|
|
|
|
// Network with prefix_length
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network_prefix_length", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"data.stackit_network.network_prefix_length", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"])),
|
|
// resource.TestCheckNoResourceAttr("data.stackit_network.network_prefix_length", "ipv4_gateway"),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "ipv4_nameservers.#", "2"),
|
|
resource.TestCheckTypeSetElemAttr("data.stackit_network.network_prefix_length", "ipv4_nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_0"])),
|
|
resource.TestCheckTypeSetElemAttr("data.stackit_network.network_prefix_length", "ipv4_nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "ipv4_prefixes.#", "1"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network_prefix_length", "ipv4_prefix"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network.network_prefix_length", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["routed"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network_prefix_length", "region", testutil.Region),
|
|
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network.network_prefix_length", "routing_table_id",
|
|
"data.stackit_routing_table.routing_table", "routing_table_id",
|
|
),
|
|
|
|
// Routing table
|
|
resource.TestCheckResourceAttr("data.stackit_routing_table.routing_table", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"data.stackit_routing_table.routing_table", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_routing_table.routing_table", "routing_table_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_routing_table.routing_table", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_routing_table.routing_table", "labels.%", "0"),
|
|
resource.TestCheckResourceAttr("data.stackit_routing_table.routing_table", "region", testutil.Region),
|
|
resource.TestCheckNoResourceAttr("data.stackit_routing_table.routing_table", "description"),
|
|
resource.TestCheckResourceAttr("data.stackit_routing_table.routing_table", "system_routes", "true"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_routing_table.routing_table", "created_at"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_routing_table.routing_table", "updated_at"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMax,
|
|
ResourceName: "stackit_network.network_prefix",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
projectResource, ok := s.RootModule().Resources["stackit_resourcemanager_project.project"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find stackit_resourcemanager_project.project")
|
|
}
|
|
projectId, ok := projectResource.Primary.Attributes["project_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute project_id")
|
|
}
|
|
|
|
r, ok := s.RootModule().Resources["stackit_network.network_prefix"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network.network_prefix")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", projectId, testutil.Region, networkId), nil
|
|
},
|
|
ImportState: true,
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"stackit_network.network_prefix", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_gateway", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_gateway"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.#", "2"),
|
|
// nameservers may be returned in a randomized order, so we have to check them with a helper function
|
|
resource.TestCheckTypeSetElemAttr("stackit_network.network_prefix", "nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_0"])),
|
|
resource.TestCheckTypeSetElemAttr("stackit_network.network_prefix", "nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefix", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefixes.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefixes.0", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["routed"])),
|
|
),
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMax,
|
|
ResourceName: "stackit_network.network_prefix_length",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
projectResource, ok := s.RootModule().Resources["stackit_resourcemanager_project.project"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find stackit_resourcemanager_project.project")
|
|
}
|
|
projectId, ok := projectResource.Primary.Attributes["project_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute project_id")
|
|
}
|
|
|
|
r, ok := s.RootModule().Resources["stackit_network.network_prefix_length"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network.network_prefix_length")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", projectId, testutil.Region, networkId), nil
|
|
},
|
|
ImportState: true,
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"stackit_network.network_prefix_length", "project_id",
|
|
),
|
|
// resource.TestCheckNoResourceAttr("stackit_network.network_prefix_length", "ipv4_gateway"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.#", "2"),
|
|
// nameservers may be returned in a randomized order, so we have to check them with a helper function
|
|
resource.TestCheckTypeSetElemAttr("stackit_network.network_prefix_length", "nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_0"])),
|
|
resource.TestCheckTypeSetElemAttr("stackit_network.network_prefix_length", "nameservers.*", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "ipv4_prefix"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_prefixes.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMax["routed"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "region", testutil.Region),
|
|
),
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfigWithExperiments(), resourceNetworkMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"stackit_network.network_prefix", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "ipv4_gateway"),
|
|
// resource.TestCheckResourceAttr("stackit_network.network_prefix", "no_ipv4_gateway", "true"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.#", "2"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_nameserver_0"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_nameservers.1", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefix", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_prefix"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "ipv4_prefixes.#", "1"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["routed"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix", "public_ip"),
|
|
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "network_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_resourcemanager_project.project", "project_id",
|
|
"stackit_network.network_prefix_length", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "ipv4_gateway"),
|
|
// resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "no_ipv4_gateway", "true"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.#", "2"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_nameserver_0"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_nameservers.1", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_nameserver_1"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "ipv4_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["ipv4_prefix_length"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "ipv4_prefix"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network_prefix_length", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "routed", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["routed"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network_prefix_length", "public_ip"),
|
|
resource.TestCheckResourceAttr("stackit_network.network_prefix_length", "region", testutil.Region),
|
|
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network.network_prefix_length", "routing_table_id",
|
|
"stackit_routing_table.routing_table", "routing_table_id",
|
|
),
|
|
|
|
// Routing table
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"stackit_routing_table.routing_table", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_routing_table.routing_table", "routing_table_id"),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "name", testutil.ConvertConfigVariable(testConfigNetworkVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "labels.%", "0"),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "region", testutil.Region),
|
|
resource.TestCheckNoResourceAttr("stackit_routing_table.routing_table", "description"),
|
|
resource.TestCheckResourceAttr("stackit_routing_table.routing_table", "system_routes", "true"),
|
|
resource.TestCheckResourceAttrSet("stackit_routing_table.routing_table", "created_at"),
|
|
resource.TestCheckResourceAttrSet("stackit_routing_table.routing_table", "updated_at"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkAreaMin(t *testing.T) {
|
|
t.Logf("TestAccNetworkAreaMin name: %s", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMin["name"]))
|
|
resource.Test(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMin["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.#", "0"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network_area" "network_area" {
|
|
organization_id = stackit_network_area.network_area.organization_id
|
|
network_area_id = stackit_network_area.network_area.network_area_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceNetworkAreaMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMin["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area.network_area", "network_area_id",
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "network_ranges.#", "0"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMinUpdated,
|
|
ResourceName: "stackit_network_area.network_area",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_area.network_area"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_area.network_area")
|
|
}
|
|
networkAreaId, ok := r.Primary.Attributes["network_area_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_area_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s", testutil.OrganizationId, networkAreaId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMinUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMinUpdated["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMinUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.#", "0"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkAreaMax(t *testing.T) {
|
|
t.Logf("TestAccNetworkAreaMax name: %s", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["name"]))
|
|
resource.Test(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["max_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["min_prefix_length"])),
|
|
|
|
// Network Area Route
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area_route.network_area_route", "organization_id",
|
|
"stackit_network_area.network_area", "organization_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area_route.network_area_route", "network_area_id",
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area_route.network_area_route", "network_area_route_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "destination.type", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_destination_type"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "destination.value", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_destination_value"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "next_hop.type", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_next_hop_type"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "next_hop.value", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_next_hop_value"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["label"])),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network_area" "network_area" {
|
|
organization_id = stackit_network_area.network_area.organization_id
|
|
network_area_id = stackit_network_area.network_area.network_area_id
|
|
}
|
|
|
|
data "stackit_network_area_route" "network_area_route" {
|
|
organization_id = stackit_network_area.network_area.organization_id
|
|
network_area_id = stackit_network_area.network_area.network_area_id
|
|
network_area_route_id = stackit_network_area_route.network_area_route.network_area_route_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceNetworkAreaMaxConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area.network_area", "network_area_id",
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area.network_area", "network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["max_prefix_length"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area.network_area", "min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["min_prefix_length"])),
|
|
|
|
// Network Area Route
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area_route.network_area_route", "organization_id",
|
|
"data.stackit_network_area.network_area", "organization_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area_route.network_area_route", "network_area_id",
|
|
"data.stackit_network_area.network_area", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area_route.network_area_route", "network_area_route_id",
|
|
"stackit_network_area_route.network_area_route", "network_area_route_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area_route.network_area_route", "network_area_route_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_route.network_area_route", "destination.type", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_destination_type"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_route.network_area_route", "destination.value", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_destination_value"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_route.network_area_route", "next_hop.type", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_next_hop_type"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_route.network_area_route", "next_hop.value", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["route_next_hop_value"])),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMaxUpdated,
|
|
ResourceName: "stackit_network_area.network_area",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_area.network_area"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_area.network_area")
|
|
}
|
|
networkAreaId, ok := r.Primary.Attributes["network_area_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_area_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s", testutil.OrganizationId, networkAreaId), nil
|
|
},
|
|
ImportState: true,
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["max_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMax["min_prefix_length"])),
|
|
),
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMaxUpdated,
|
|
ResourceName: "stackit_network_area_route.network_area_route",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_area_route.network_area_route"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_area_route.network_area_route")
|
|
}
|
|
networkAreaId, ok := r.Primary.Attributes["network_area_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_area_id")
|
|
}
|
|
networkAreaRouteId, ok := r.Primary.Attributes["network_area_route_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_area_route_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.OrganizationId, networkAreaId, testutil.Region, networkAreaRouteId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_area_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "name", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area.network_area", "network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["max_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["min_prefix_length"])),
|
|
|
|
// Network Area Route
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area_route.network_area_route", "organization_id",
|
|
"stackit_network_area.network_area", "organization_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area_route.network_area_route", "network_area_id",
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area_route.network_area_route", "network_area_route_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "destination.type", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["route_destination_type"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "destination.value", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["route_destination_value"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "next_hop.type", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["route_next_hop_type"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "next_hop.value", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["route_next_hop_value"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_route.network_area_route", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkAreaVarsMaxUpdated["label"])),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkAreaRegionMin(t *testing.T) {
|
|
t.Logf("TestAccNetworkAreaRegionMin name: %s", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["name"]))
|
|
resource.Test(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaRegionMinConfig),
|
|
ConfigPlanChecks: resource.ConfigPlanChecks{
|
|
PreApply: []plancheck.PlanCheck{
|
|
plancheck.ExpectResourceAction("stackit_network_area.network_area", plancheck.ResourceActionCreate),
|
|
plancheck.ExpectResourceAction("stackit_network_area_region.network_area_region", plancheck.ResourceActionCreate),
|
|
},
|
|
},
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"stackit_network_area_region.network_area_region", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.transfer_network", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["transfer_network"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.network_range_id"),
|
|
resource.TestCheckNoResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_nameservers.#"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_prefix_length", "25"), // default value
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.min_prefix_length", "24"), // default value
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.max_prefix_length", "29"), // default value
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network_area_region" "network_area_region" {
|
|
organization_id = stackit_network_area_region.network_area_region.organization_id
|
|
network_area_id = stackit_network_area_region.network_area_region.network_area_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceNetworkAreaRegionMinConfig,
|
|
),
|
|
ConfigPlanChecks: resource.ConfigPlanChecks{
|
|
PreApply: []plancheck.PlanCheck{
|
|
plancheck.ExpectResourceAction("stackit_network_area.network_area", plancheck.ResourceActionNoop),
|
|
plancheck.ExpectResourceAction("stackit_network_area_region.network_area_region", plancheck.ResourceActionNoop),
|
|
},
|
|
},
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area_region.network_area_region", "network_area_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area_region.network_area_region", "network_area_id",
|
|
"stackit_network_area_region.network_area_region", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.transfer_network", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["transfer_network"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMin["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.default_prefix_length", "25"), // default value
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.min_prefix_length", "24"), // default value
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.max_prefix_length", "29"), // default value
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMinUpdated,
|
|
ResourceName: "stackit_network_area_region.network_area_region",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_area_region.network_area_region"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_area_region.network_area_region")
|
|
}
|
|
networkAreaId, ok := r.Primary.Attributes["network_area_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_area_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.OrganizationId, networkAreaId, testutil.Region), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMinUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaRegionMinConfig),
|
|
ConfigPlanChecks: resource.ConfigPlanChecks{
|
|
PreApply: []plancheck.PlanCheck{
|
|
plancheck.ExpectResourceAction("stackit_network_area.network_area", plancheck.ResourceActionNoop),
|
|
plancheck.ExpectResourceAction("stackit_network_area_region.network_area_region", plancheck.ResourceActionUpdate),
|
|
},
|
|
},
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMinUpdated["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"stackit_network_area_region.network_area_region", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.transfer_network", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMinUpdated["transfer_network"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMinUpdated["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_prefix_length", "25"), // default value
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.min_prefix_length", "24"), // default value
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.max_prefix_length", "29"), // default value
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkAreaRegionMax(t *testing.T) {
|
|
t.Logf("TestAccNetworkAreaRegionMax name: %s", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["name"]))
|
|
resource.Test(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaRegionMaxConfig),
|
|
ConfigPlanChecks: resource.ConfigPlanChecks{
|
|
PreApply: []plancheck.PlanCheck{
|
|
plancheck.ExpectResourceAction("stackit_network_area.network_area", plancheck.ResourceActionCreate),
|
|
plancheck.ExpectResourceAction("stackit_network_area_region.network_area_region", plancheck.ResourceActionCreate),
|
|
},
|
|
},
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"stackit_network_area_region.network_area_region", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.transfer_network", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["transfer_network"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["min_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["max_prefix_length"])),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network_area_region" "network_area_region" {
|
|
organization_id = stackit_network_area_region.network_area_region.organization_id
|
|
network_area_id = stackit_network_area_region.network_area_region.network_area_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceNetworkAreaRegionMaxConfig,
|
|
),
|
|
ConfigPlanChecks: resource.ConfigPlanChecks{
|
|
PreApply: []plancheck.PlanCheck{
|
|
plancheck.ExpectResourceAction("stackit_network_area.network_area", plancheck.ResourceActionNoop),
|
|
plancheck.ExpectResourceAction("stackit_network_area_region.network_area_region", plancheck.ResourceActionNoop),
|
|
},
|
|
},
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["organization_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area_region.network_area_region", "network_area_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_area_region.network_area_region", "network_area_id",
|
|
"stackit_network_area_region.network_area_region", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.transfer_network", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["transfer_network"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["min_prefix_length"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_area_region.network_area_region", "ipv4.max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMax["max_prefix_length"])),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMaxUpdated,
|
|
ResourceName: "stackit_network_area_region.network_area_region",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_area_region.network_area_region"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_area_region.network_area_region")
|
|
}
|
|
networkAreaId, ok := r.Primary.Attributes["network_area_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_area_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.OrganizationId, networkAreaId, testutil.Region), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkAreaRegionVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkAreaRegionMaxConfig),
|
|
ConfigPlanChecks: resource.ConfigPlanChecks{
|
|
PreApply: []plancheck.PlanCheck{
|
|
plancheck.ExpectResourceAction("stackit_network_area.network_area", plancheck.ResourceActionNoop),
|
|
plancheck.ExpectResourceAction("stackit_network_area_region.network_area_region", plancheck.ResourceActionUpdate),
|
|
},
|
|
},
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network Area
|
|
resource.TestCheckResourceAttr("stackit_network_area.network_area", "organization_id", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["organization_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_area.network_area", "network_area_id",
|
|
"stackit_network_area_region.network_area_region", "network_area_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.transfer_network", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["transfer_network"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.prefix", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["network_ranges_prefix"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_area_region.network_area_region", "ipv4.network_ranges.0.network_range_id"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_nameservers.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_nameservers.0", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["default_nameservers"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.default_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["default_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.min_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["min_prefix_length"])),
|
|
resource.TestCheckResourceAttr("stackit_network_area_region.network_area_region", "ipv4.max_prefix_length", testutil.ConvertConfigVariable(testConfigNetworkAreaRegionVarsMaxUpdated["max_prefix_length"])),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccVolumeMin(t *testing.T) {
|
|
t.Logf("TestAccVolumeMin name: null")
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceVolumeMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Volume size
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_size", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_size", "performance_class"),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_size", "server_id"),
|
|
|
|
// Volume source
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_source", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_source", "performance_class"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_source", "source.id",
|
|
"stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "source.type", "volume"),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_source", "server_id"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_volume" "volume_size" {
|
|
project_id = stackit_volume.volume_size.project_id
|
|
volume_id = stackit_volume.volume_size.volume_id
|
|
}
|
|
|
|
data "stackit_volume" "volume_source" {
|
|
project_id = stackit_volume.volume_source.project_id
|
|
volume_id = stackit_volume.volume_source.volume_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceVolumeMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Volume size
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_size", "volume_id",
|
|
"data.stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["availability_zone"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_volume.volume_size", "performance_class"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_volume.volume_size", "server_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["size"])),
|
|
|
|
// Volume source
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_source", "volume_id",
|
|
"data.stackit_volume.volume_source", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["availability_zone"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["size"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_volume.volume_source", "performance_class"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_volume.volume_source", "server_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_volume.volume_source", "source.id",
|
|
"data.stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "source.type", "volume"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMin,
|
|
ResourceName: "stackit_volume.volume_size",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_volume.volume_size"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_volume.volume_size")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMin,
|
|
ResourceName: "stackit_volume.volume_source",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_volume.volume_source"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_volume.volume")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMinUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceVolumeMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Volume size
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMinUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_size", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMinUpdated["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMinUpdated["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_size", "performance_class"),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_size", "server_id"),
|
|
|
|
// Volume source
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMinUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_source", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMinUpdated["availability_zone"])),
|
|
// Volume from source doesn't change size. So here the initial size will be used
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMin["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_source", "performance_class"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_source", "source.id",
|
|
"stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "source.type", "volume"),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_source", "server_id"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccVolumeMax(t *testing.T) {
|
|
t.Logf("TestAccVolumeMax name: %s", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceVolumeMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Volume size
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_size", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "description", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["description"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "performance_class", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["performance_class"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "name", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "labels.acc-test", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["label"])),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_size", "server_id"),
|
|
|
|
// Volume source
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_source", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "description", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["description"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "performance_class", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["performance_class"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "name", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "labels.acc-test", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["label"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_source", "source.id",
|
|
"stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "source.type", "volume"),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_source", "server_id"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_volume" "volume_size" {
|
|
project_id = stackit_volume.volume_size.project_id
|
|
volume_id = stackit_volume.volume_size.volume_id
|
|
}
|
|
|
|
data "stackit_volume" "volume_source" {
|
|
project_id = stackit_volume.volume_source.project_id
|
|
volume_id = stackit_volume.volume_source.volume_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceVolumeMaxConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Volume size
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_size", "volume_id",
|
|
"data.stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "region", testutil.Region),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["availability_zone"])),
|
|
resource.TestCheckNoResourceAttr("data.stackit_volume.volume_size", "server_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["size"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "description", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["description"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "performance_class", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["performance_class"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "name", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_size", "labels.acc-test", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["label"])),
|
|
|
|
// Volume source
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_volume.volume_source", "volume_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_volume.volume_source", "volume_id",
|
|
"stackit_volume.volume_source", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["size"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "description", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["description"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "performance_class", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["performance_class"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "name", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "labels.acc-test", testutil.ConvertConfigVariable(testConfigVolumeVarsMax["label"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_volume.volume_source", "source.id",
|
|
"data.stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_volume.volume_source", "source.type", "volume"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_volume.volume_source", "server_id"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMax,
|
|
ResourceName: "stackit_volume.volume_size",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_volume.volume_size"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_volume.volume_size")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMax,
|
|
ResourceName: "stackit_volume.volume_source",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_volume.volume_source"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_volume.volume_source")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigVolumeVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceVolumeMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Volume size
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_size", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "description", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["description"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "performance_class", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["performance_class"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "name", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["name"])),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_size", "server_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_size", "labels.acc-test", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["label"])),
|
|
|
|
// Volume source
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "project_id", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.volume_source", "volume_id"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "availability_zone", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "size", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "description", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["description"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "performance_class", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["performance_class"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "name", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "labels.acc-test", testutil.ConvertConfigVariable(testConfigVolumeVarsMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.volume_source", "source.id",
|
|
"stackit_volume.volume_size", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_volume.volume_source", "source.type", "volume"),
|
|
resource.TestCheckNoResourceAttr("stackit_volume.volume_source", "server_id"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccServerMin(t *testing.T) {
|
|
t.Logf("TestAccServerMin name: %s", testutil.ConvertConfigVariable(testConfigServerVarsMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigServerVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceServerMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Server
|
|
resource.TestCheckResourceAttr("stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMin["machine_type"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.%"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "image"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_id", testutil.ConvertConfigVariable(testConfigServerVarsMin["image_id"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.delete_on_termination", "true"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "boot_volume.performance_class"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.size"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "image"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "image_id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "labels.%", "0"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "availability_zone"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "desired_status"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "user_data"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "keypair_name"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "network_interfaces.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "network_interfaces.0",
|
|
"stackit_network_interface.nic", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "created_at"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "launched_at"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "updated_at"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigServerVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_server" "server" {
|
|
project_id = stackit_server.server.project_id
|
|
server_id = stackit_server.server.server_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceServerMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Server
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMin["machine_type"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "boot_volume.%"),
|
|
// boot_volume.attributes are unknown in the datasource. only boot_volume.id and boot_volume.delete_on_termination are returned from the api
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.source_type"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.source_id"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.size"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.performance_class"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.source_type"),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "boot_volume.delete_on_termination", "true"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_server.server", "boot_volume.id",
|
|
"stackit_server.server", "boot_volume.id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_server.server", "server_id",
|
|
"stackit_server.server", "server_id",
|
|
),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "image_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "labels.%", "0"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "availability_zone"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "desired_status"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "user_data"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "keypair_name"),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "network_interfaces.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_server.server", "network_interfaces.0",
|
|
"stackit_network_interface.nic", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "created_at"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "launched_at"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "updated_at"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigServerVarsMin,
|
|
ResourceName: "stackit_server.server",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_server.server"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_server.server")
|
|
}
|
|
serverId, ok := r.Primary.Attributes["server_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute server_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, serverId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
ImportStateVerifyIgnore: []string{"boot_volume", "network_interfaces"}, // Field is not mapped as it is only relevant on creation
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigServerVarsMinUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceServerMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Server
|
|
resource.TestCheckResourceAttr("stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMinUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMinUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMinUpdated["machine_type"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.%"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "image"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_id", testutil.ConvertConfigVariable(testConfigServerVarsMinUpdated["image_id"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.delete_on_termination", "true"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "boot_volume.performance_class"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.size"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "image"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "image_id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "labels.%", "0"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "availability_zone"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "desired_status"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "user_data"),
|
|
resource.TestCheckNoResourceAttr("stackit_server.server", "keypair_name"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "network_interfaces.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "network_interfaces.0",
|
|
"stackit_network_interface.nic", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "created_at"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "launched_at"),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "updated_at"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccServerMax(t *testing.T) {
|
|
t.Logf("TestAccServerMax name: %s", testutil.ConvertConfigVariable(testConfigServerVarsMax["name"]))
|
|
resource.Test(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s\n%s", testutil.IaaSProviderConfig(), resourceServerMaxConfig, resourceServerMaxAttachmentConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Affinity group
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "name", testutil.ConvertConfigVariable(testConfigServerVarsMax["name_not_updated"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "policy", testutil.ConvertConfigVariable(testConfigServerVarsMax["policy"])),
|
|
resource.TestCheckResourceAttrSet("stackit_affinity_group.affinity_group", "affinity_group_id"),
|
|
|
|
// Volume base
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "size", testutil.ConvertConfigVariable(testConfigServerVarsMax["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "source.id", testutil.ConvertConfigVariable(testConfigServerVarsMax["image_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "source.type", "image"),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.base_volume", "volume_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.base_volume", "volume_id",
|
|
"stackit_server.server", "boot_volume.source_id",
|
|
),
|
|
|
|
// Volume data
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "size", testutil.ConvertConfigVariable(testConfigServerVarsMax["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.data_volume", "volume_id"),
|
|
|
|
// Volume data attach
|
|
resource.TestCheckResourceAttr("stackit_server_volume_attach.data_volume_attachment", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server_volume_attach.data_volume_attachment", "server_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_volume_attach.data_volume_attachment", "server_id",
|
|
"stackit_server.server", "server_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_server_volume_attach.data_volume_attachment", "volume_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.data_volume", "volume_id",
|
|
"stackit_server_volume_attach.data_volume_attachment", "volume_id",
|
|
),
|
|
|
|
// Network
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigServerVarsMax["name"])),
|
|
|
|
// Network interface init
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_init", "project_id",
|
|
"stackit_network.network", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_init", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_init", "network_interface_id"),
|
|
|
|
// Network interface second
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_second", "project_id",
|
|
"stackit_network.network", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_second", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_second", "network_interface_id"),
|
|
|
|
// Network interface attachment
|
|
resource.TestCheckResourceAttr("stackit_server_network_interface_attach.network_interface_second_attachment", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_network_interface_attach.network_interface_second_attachment", "network_interface_id",
|
|
"stackit_network_interface.network_interface_second", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_network_interface_attach.network_interface_second_attachment", "server_id",
|
|
"stackit_server.server", "server_id",
|
|
),
|
|
|
|
// Keypair
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigServerVarsMax["name_not_updated"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigServerVarsMax["public_key"])),
|
|
|
|
// Service account attachment
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_service_account_attach.attached_service_account", "project_id",
|
|
"stackit_server.server", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_service_account_attach.attached_service_account", "server_id",
|
|
"stackit_server.server", "server_id",
|
|
),
|
|
resource.TestCheckResourceAttr(
|
|
"stackit_server_service_account_attach.attached_service_account", "service_account_email",
|
|
testutil.ConvertConfigVariable(testConfigServerVarsMax["service_account_mail"]),
|
|
),
|
|
|
|
// Server
|
|
resource.TestCheckResourceAttr("stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMax["machine_type"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "desired_status", testutil.ConvertConfigVariable(testConfigServerVarsMax["desired_status"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "affinity_group",
|
|
"stackit_affinity_group.affinity_group", "affinity_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_key_pair.key_pair", "name",
|
|
"stackit_server.server", "keypair_name",
|
|
),
|
|
// The network interface which was attached by "stackit_server_network_interface_attach" should not appear here
|
|
resource.TestCheckResourceAttr("stackit_server.server", "network_interfaces.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "network_interfaces.0",
|
|
"stackit_network_interface.network_interface_init", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "user_data", testutil.ConvertConfigVariable(testConfigServerVarsMax["user_data"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "volume"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "boot_volume.source_id",
|
|
"stackit_volume.base_volume", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "labels.acc-test", testutil.ConvertConfigVariable(testConfigServerVarsMax["label"])),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
%s
|
|
|
|
data "stackit_server" "server" {
|
|
project_id = stackit_server.server.project_id
|
|
server_id = stackit_server.server.server_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceServerMaxConfig, resourceServerMaxAttachmentConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Server
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMax["machine_type"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_server.server", "affinity_group",
|
|
"stackit_affinity_group.affinity_group", "affinity_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMax["availability_zone"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_key_pair.key_pair", "name",
|
|
"data.stackit_server.server", "keypair_name",
|
|
),
|
|
// All network interface which was are attached appear here
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "network_interfaces.#", "2"),
|
|
resource.TestCheckTypeSetElemAttrPair(
|
|
"data.stackit_server.server", "network_interfaces.*",
|
|
"stackit_network_interface.network_interface_init", "network_interface_id",
|
|
),
|
|
resource.TestCheckTypeSetElemAttrPair(
|
|
"data.stackit_server.server", "network_interfaces.*",
|
|
"stackit_network_interface.network_interface_second", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "user_data", testutil.ConvertConfigVariable(testConfigServerVarsMax["user_data"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_server.server", "boot_volume.id"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.source_type"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_server.server", "boot_volume.source_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_server.server", "labels.acc-test", testutil.ConvertConfigVariable(testConfigServerVarsMax["label"])),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_affinity_group.affinity_group",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_affinity_group.affinity_group"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_affinity_group.affinity_group")
|
|
}
|
|
affinityGroupId, ok := r.Primary.Attributes["affinity_group_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute affinity_group_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, affinityGroupId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_volume.base_volume",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_volume.base_volume"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_volume.base_volume")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_volume.data_volume",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_volume.data_volume"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_volume.data_volume")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_server_volume_attach.data_volume_attachment",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_server_volume_attach.data_volume_attachment"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_server_volume_attach.data_volume_attachment")
|
|
}
|
|
serverId, ok := r.Primary.Attributes["server_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute server_id")
|
|
}
|
|
volumeId, ok := r.Primary.Attributes["volume_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, serverId, volumeId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: false,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_network.network",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network.network"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network.network")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, networkId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
ImportStateVerifyIgnore: []string{"ipv4_prefix_length", "ipv4_prefix"}, // Field is not returned by the API
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_network_interface.network_interface_init",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_interface.network_interface_init"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_interface.network_interface_init")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, networkId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_network_interface.network_interface_second",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_interface.network_interface_second"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_interface.network_interface_second")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, networkId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_server_network_interface_attach.network_interface_second_attachment",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_server_network_interface_attach.network_interface_second_attachment"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_server_network_interface_attach.network_interface_second_attachment")
|
|
}
|
|
serverId, ok := r.Primary.Attributes["server_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, serverId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: false,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_key_pair.key_pair",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_key_pair.key_pair"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_key_pair.key_pair")
|
|
}
|
|
keyPairName, ok := r.Primary.Attributes["name"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute name")
|
|
}
|
|
return keyPairName, nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_server_service_account_attach.attached_service_account",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_server_service_account_attach.attached_service_account"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_server_service_account_attach.attached_service_account")
|
|
}
|
|
serverId, ok := r.Primary.Attributes["server_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute server_id")
|
|
}
|
|
serviceAccountEmail, ok := r.Primary.Attributes["service_account_email"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute volume_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, serverId, serviceAccountEmail), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: false,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigServerVarsMax,
|
|
ResourceName: "stackit_server.server",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_server.server"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_server.server")
|
|
}
|
|
serverId, ok := r.Primary.Attributes["server_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute server_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, serverId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
ImportStateVerifyIgnore: []string{"boot_volume", "desired_status", "network_interfaces"}, // Field is not mapped as it is only relevant on creation
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigServerVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceServerMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Affinity group
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["name_not_updated"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "policy", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["policy"])),
|
|
resource.TestCheckResourceAttrSet("stackit_affinity_group.affinity_group", "affinity_group_id"),
|
|
|
|
// Volume base
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "size", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "source.id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["image_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "source.type", "image"),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.base_volume", "volume_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.base_volume", "volume_id",
|
|
"stackit_server.server", "boot_volume.source_id",
|
|
),
|
|
|
|
// Volume data
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "size", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.data_volume", "volume_id"),
|
|
|
|
// Network
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["name"])),
|
|
|
|
// Network interface init
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_init", "project_id",
|
|
"stackit_network.network", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_init", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_init", "network_interface_id"),
|
|
|
|
// Network interface second
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_second", "project_id",
|
|
"stackit_network.network", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_second", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_second", "network_interface_id"),
|
|
|
|
// Keypair
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["name_not_updated"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["public_key"])),
|
|
|
|
// Service account attachment
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_service_account_attach.attached_service_account", "project_id",
|
|
"stackit_server.server", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_service_account_attach.attached_service_account", "server_id",
|
|
"stackit_server.server", "server_id",
|
|
),
|
|
resource.TestCheckResourceAttr(
|
|
"stackit_server_service_account_attach.attached_service_account", "service_account_email",
|
|
testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["service_account_mail"]),
|
|
),
|
|
|
|
// Server
|
|
resource.TestCheckResourceAttr("stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["machine_type"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "desired_status", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["desired_status"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "affinity_group",
|
|
"stackit_affinity_group.affinity_group", "affinity_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["availability_zone"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_key_pair.key_pair", "name",
|
|
"stackit_server.server", "keypair_name",
|
|
),
|
|
// The network interface which was attached by "stackit_server_network_interface_attach" should not appear here
|
|
resource.TestCheckResourceAttr("stackit_server.server", "network_interfaces.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "network_interfaces.0",
|
|
"stackit_network_interface.network_interface_init", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "user_data", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["user_data"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "volume"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "boot_volume.source_id",
|
|
"stackit_volume.base_volume", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "labels.acc-test", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdated["label"])),
|
|
),
|
|
},
|
|
// Updated desired status
|
|
{
|
|
ConfigVariables: testConfigServerVarsMaxUpdatedDesiredStatus,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceServerMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Affinity group
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["name_not_updated"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "policy", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["policy"])),
|
|
resource.TestCheckResourceAttrSet("stackit_affinity_group.affinity_group", "affinity_group_id"),
|
|
|
|
// Volume base
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "size", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["size"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "source.id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["image_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.base_volume", "source.type", "image"),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.base_volume", "volume_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_volume.base_volume", "volume_id",
|
|
"stackit_server.server", "boot_volume.source_id",
|
|
),
|
|
|
|
// Volume data
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["availability_zone"])),
|
|
resource.TestCheckResourceAttr("stackit_volume.data_volume", "size", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["size"])),
|
|
resource.TestCheckResourceAttrSet("stackit_volume.data_volume", "volume_id"),
|
|
|
|
// Network
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["name"])),
|
|
|
|
// Network interface init
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_init", "project_id",
|
|
"stackit_network.network", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_init", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_init", "network_interface_id"),
|
|
|
|
// Network interface second
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_second", "project_id",
|
|
"stackit_network.network", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_second", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_second", "network_interface_id"),
|
|
|
|
// Keypair
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["name_not_updated"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["public_key"])),
|
|
|
|
// Service account attachment
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_service_account_attach.attached_service_account", "project_id",
|
|
"stackit_server.server", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server_service_account_attach.attached_service_account", "server_id",
|
|
"stackit_server.server", "server_id",
|
|
),
|
|
resource.TestCheckResourceAttr(
|
|
"stackit_server_service_account_attach.attached_service_account", "service_account_email",
|
|
testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["service_account_mail"]),
|
|
),
|
|
|
|
// Server
|
|
resource.TestCheckResourceAttr("stackit_server.server", "project_id", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "server_id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "name", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["name"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "machine_type", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["machine_type"])),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "desired_status", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["desired_status"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "affinity_group",
|
|
"stackit_affinity_group.affinity_group", "affinity_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "availability_zone", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["availability_zone"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_key_pair.key_pair", "name",
|
|
"stackit_server.server", "keypair_name",
|
|
),
|
|
// The network interface which was attached by "stackit_server_network_interface_attach" should not appear here
|
|
resource.TestCheckResourceAttr("stackit_server.server", "network_interfaces.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "network_interfaces.0",
|
|
"stackit_network_interface.network_interface_init", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "user_data", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["user_data"])),
|
|
resource.TestCheckResourceAttrSet("stackit_server.server", "boot_volume.id"),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "boot_volume.source_type", "volume"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_server.server", "boot_volume.source_id",
|
|
"stackit_volume.base_volume", "volume_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_server.server", "labels.acc-test", testutil.ConvertConfigVariable(testConfigServerVarsMaxUpdatedDesiredStatus["label"])),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccAffinityGroupMin(t *testing.T) {
|
|
t.Logf("TestAccAffinityGroupMin name: %s", testutil.ConvertConfigVariable(testConfigAffinityGroupVarsMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigAffinityGroupVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceAffinityGroupMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "project_id", testutil.ConvertConfigVariable(testConfigAffinityGroupVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_affinity_group.affinity_group", "affinity_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "name", testutil.ConvertConfigVariable(testConfigAffinityGroupVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("stackit_affinity_group.affinity_group", "policy", testutil.ConvertConfigVariable(testConfigAffinityGroupVarsMin["policy"])),
|
|
resource.TestCheckNoResourceAttr("stackit_affinity_group.affinity_group", "members.#"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigAffinityGroupVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_affinity_group" "affinity_group" {
|
|
project_id = stackit_affinity_group.affinity_group.project_id
|
|
affinity_group_id = stackit_affinity_group.affinity_group.affinity_group_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceAffinityGroupMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("data.stackit_affinity_group.affinity_group", "project_id", testutil.ConvertConfigVariable(testConfigAffinityGroupVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_affinity_group.affinity_group", "affinity_group_id",
|
|
"data.stackit_affinity_group.affinity_group", "affinity_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_affinity_group.affinity_group", "name", testutil.ConvertConfigVariable(testConfigAffinityGroupVarsMin["name"])),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigAffinityGroupVarsMin,
|
|
ResourceName: "stackit_affinity_group.affinity_group",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_affinity_group.affinity_group"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_affinity_group.affinity_group")
|
|
}
|
|
affinityGroupId, ok := r.Primary.Attributes["affinity_group_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute affinity_group_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, affinityGroupId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// In this minimal setup, no update can be performed
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccIaaSSecurityGroupMin(t *testing.T) {
|
|
t.Logf("TestAccIaaSSecurityGroupMin name: %s", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceSecurityGroupMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Security Group
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group", "security_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group", "stateful"),
|
|
|
|
// Security Group Rule
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["direction"])),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_security_group" "security_group" {
|
|
project_id = stackit_security_group.security_group.project_id
|
|
security_group_id = stackit_security_group.security_group.security_group_id
|
|
}
|
|
|
|
data "stackit_security_group_rule" "security_group_rule" {
|
|
project_id = stackit_security_group.security_group.project_id
|
|
security_group_id = stackit_security_group.security_group.security_group_id
|
|
security_group_rule_id = stackit_security_group_rule.security_group_rule.security_group_rule_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceSecurityGroupMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Instance
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
"data.stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["name"])),
|
|
|
|
// Security Group Rule
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMin["direction"])),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMin,
|
|
ResourceName: "stackit_security_group.security_group",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_security_group.security_group"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_security_group.security_group")
|
|
}
|
|
securityGroupId, ok := r.Primary.Attributes["security_group_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute security_group_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, securityGroupId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMin,
|
|
ResourceName: "stackit_security_group_rule.security_group_rule",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_security_group_rule.security_group_rule"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_security_group_rule.security_group_rule")
|
|
}
|
|
securityGroupId, ok := r.Primary.Attributes["security_group_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute security_group_id")
|
|
}
|
|
securityGroupRuleId, ok := r.Primary.Attributes["security_group_rule_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute security_group_rule_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, securityGroupId, securityGroupRuleId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMinUpdated(),
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceSecurityGroupMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Security Group
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMinUpdated()["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group", "security_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMinUpdated()["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group", "stateful"),
|
|
|
|
// Security Group Rule
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMinUpdated()["direction"])),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccIaaSSecurityGroupMax(t *testing.T) {
|
|
t.Logf("TestAccIaaSSecurityGroupMax name: %s", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceSecurityGroupMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Security Group (default)
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group", "security_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["description"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "stateful", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["stateful"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "labels.acc-test", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["label"])),
|
|
|
|
// Security Group (remote)
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group_remote", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group_remote", "security_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group_remote", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["name_remote"])),
|
|
|
|
// Security Group Rule (default)
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["direction"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["description_rule"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "ether_type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ether_type"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "port_range.min", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["port"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "port_range.max", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["port"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "protocol.name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["protocol"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "ip_range", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ip_range"])),
|
|
|
|
// Security Group Rule (icmp)
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule_icmp", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule_icmp", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule_icmp", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["direction"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["description_rule"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "ether_type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ether_type"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "icmp_parameters.code", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["icmp_code"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "icmp_parameters.type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["icmp_type"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "protocol.name", "icmp"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "ip_range", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ip_range"])),
|
|
|
|
// Security Group Rule (remote)
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule_remote_security_group", "remote_security_group_id",
|
|
"stackit_security_group.security_group_remote", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["direction"])),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_security_group" "security_group" {
|
|
project_id = stackit_security_group.security_group.project_id
|
|
security_group_id = stackit_security_group.security_group.security_group_id
|
|
}
|
|
|
|
data "stackit_security_group" "security_group_remote" {
|
|
project_id = stackit_security_group.security_group_remote.project_id
|
|
security_group_id = stackit_security_group.security_group_remote.security_group_id
|
|
}
|
|
|
|
data "stackit_security_group_rule" "security_group_rule" {
|
|
project_id = stackit_security_group.security_group.project_id
|
|
security_group_id = stackit_security_group.security_group.security_group_id
|
|
security_group_rule_id = stackit_security_group_rule.security_group_rule.security_group_rule_id
|
|
}
|
|
|
|
data "stackit_security_group_rule" "security_group_rule_icmp" {
|
|
project_id = stackit_security_group.security_group.project_id
|
|
security_group_id = stackit_security_group.security_group.security_group_id
|
|
security_group_rule_id = stackit_security_group_rule.security_group_rule_icmp.security_group_rule_id
|
|
}
|
|
|
|
data "stackit_security_group_rule" "security_group_rule_remote_security_group" {
|
|
project_id = stackit_security_group.security_group.project_id
|
|
security_group_id = stackit_security_group.security_group.security_group_id
|
|
security_group_rule_id = stackit_security_group_rule.security_group_rule_remote_security_group.security_group_rule_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceSecurityGroupMaxConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Security Group (default)
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group.security_group", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group.security_group", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_security_group.security_group", "security_group_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["description"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "stateful", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["stateful"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group", "labels.acc-test", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["label"])),
|
|
|
|
// Security Group (remote)
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group.security_group_remote", "project_id",
|
|
"stackit_security_group.security_group_remote", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group.security_group_remote", "security_group_id",
|
|
"stackit_security_group.security_group_remote", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group_remote", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_security_group.security_group_remote", "security_group_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group.security_group_remote", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["name_remote"])),
|
|
|
|
// Security Group Rule (default)
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule", "project_id",
|
|
"data.stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"data.stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule", "security_group_rule_id",
|
|
"stackit_security_group_rule.security_group_rule", "security_group_rule_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["direction"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["description_rule"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "ether_type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ether_type"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "port_range.min", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["port"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "port_range.max", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["port"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "protocol.name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["protocol"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "ip_range", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ip_range"])),
|
|
|
|
// Security Group Rule (icmp)
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_icmp", "project_id",
|
|
"data.stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_icmp", "security_group_id",
|
|
"data.stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_icmp", "security_group_rule_id",
|
|
"stackit_security_group_rule.security_group_rule_icmp", "security_group_rule_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_icmp", "project_id",
|
|
"stackit_security_group_rule.security_group_rule_icmp", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_icmp", "security_group_id",
|
|
"stackit_security_group_rule.security_group_rule_icmp", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_security_group_rule.security_group_rule_icmp", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["direction"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["description_rule"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "ether_type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ether_type"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "icmp_parameters.code", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["icmp_code"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "icmp_parameters.type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["icmp_type"])),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "protocol.name", "icmp"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule_icmp", "ip_range", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["ip_range"])),
|
|
|
|
// Security Group Rule (remote)
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "project_id",
|
|
"data.stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "security_group_id",
|
|
"data.stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "security_group_rule_id",
|
|
"stackit_security_group_rule.security_group_rule_remote_security_group", "security_group_rule_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "project_id",
|
|
"stackit_security_group_rule.security_group_rule_remote_security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "security_group_id",
|
|
"stackit_security_group_rule.security_group_rule_remote_security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "remote_security_group_id",
|
|
"stackit_security_group_rule.security_group_rule_remote_security_group", "remote_security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_security_group_rule.security_group_rule_remote_security_group", "remote_security_group_id",
|
|
"data.stackit_security_group.security_group_remote", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMax["direction"])),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMax,
|
|
ResourceName: "stackit_security_group.security_group",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_security_group.security_group"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_security_group.security_group")
|
|
}
|
|
securityGroupId, ok := r.Primary.Attributes["security_group_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute security_group_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, securityGroupId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMax,
|
|
ResourceName: "stackit_security_group_rule.security_group_rule",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_security_group_rule.security_group_rule"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_security_group_rule.security_group_rule")
|
|
}
|
|
securityGroupId, ok := r.Primary.Attributes["security_group_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute security_group_id")
|
|
}
|
|
securityGroupRuleId, ok := r.Primary.Attributes["security_group_rule_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute security_group_rule_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, securityGroupId, securityGroupRuleId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigSecurityGroupsVarsMaxUpdated(),
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceSecurityGroupMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Security Group (default)
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group", "security_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["name"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["description"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "stateful", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["stateful"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group", "labels.acc-test", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["label"])),
|
|
|
|
// Security Group (remote)
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group_remote", "project_id", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group.security_group_remote", "security_group_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group.security_group_remote", "name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["name_remote"])),
|
|
|
|
// Security Group Rule (default)
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["direction"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["description_rule"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "ether_type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["ether_type"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "port_range.min", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["port"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "port_range.max", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["port"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "protocol.name", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["protocol"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "ip_range", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["ip_range"])),
|
|
|
|
// Security Group Rule (icmp)
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule_icmp", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule_icmp", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule_icmp", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["direction"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "description", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["description_rule"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "ether_type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["ether_type"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "icmp_parameters.code", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["icmp_code"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "icmp_parameters.type", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["icmp_type"])),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "protocol.name", "icmp"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule_icmp", "ip_range", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["ip_range"])),
|
|
|
|
// Security Group Rule (remote)
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "project_id",
|
|
"stackit_security_group.security_group", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule", "security_group_id",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_security_group_rule.security_group_rule_remote_security_group", "remote_security_group_id",
|
|
"stackit_security_group.security_group_remote", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_security_group_rule.security_group_rule", "security_group_rule_id"),
|
|
resource.TestCheckResourceAttr("stackit_security_group_rule.security_group_rule", "direction", testutil.ConvertConfigVariable(testConfigSecurityGroupsVarsMaxUpdated()["direction"])),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkInterfaceMin(t *testing.T) {
|
|
t.Logf("TestAccNetworkInterfaceMin name: %s", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkInterfaceMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network interface instance
|
|
resource.TestCheckNoResourceAttr("stackit_network_interface.network_interface", "name"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "ipv4"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "allowed_addresses.#"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "security", "true"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "labels.#", "0"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "security_group_ids.#", "0"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "mac"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "network_interface_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "type"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
|
|
// Network instance
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "public_ip"),
|
|
|
|
// Public ip
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip", "public_ip_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip", "ip"),
|
|
resource.TestCheckNoResourceAttr("stackit_public_ip.public_ip", "network_interface_id"),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "labels.%", "0"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network_interface" "network_interface" {
|
|
project_id = stackit_network_interface.network_interface.project_id
|
|
network_id = stackit_network_interface.network_interface.network_id
|
|
network_interface_id = stackit_network_interface.network_interface.network_interface_id
|
|
}
|
|
|
|
data "stackit_network" "network" {
|
|
project_id = stackit_network.network.project_id
|
|
network_id = stackit_network.network.network_id
|
|
}
|
|
|
|
data "stackit_public_ip" "public_ip" {
|
|
project_id = stackit_public_ip.public_ip.project_id
|
|
public_ip_id = stackit_public_ip.public_ip.public_ip_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceNetworkInterfaceMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network interface instance
|
|
resource.TestCheckNoResourceAttr("data.stackit_network_interface.network_interface", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "ipv4"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network_interface.network_interface", "allowed_addresses.#"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "security", "true"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "labels.#", "0"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "security_group_ids.#", "0"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "mac"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "network_interface_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "type"),
|
|
|
|
// Network instance
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["name"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "public_ip"),
|
|
|
|
// Public ip
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip", "public_ip_id",
|
|
"stackit_public_ip.public_ip", "public_ip_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip", "ip",
|
|
"stackit_public_ip.public_ip", "ip",
|
|
),
|
|
resource.TestCheckNoResourceAttr("data.stackit_public_ip.public_ip", "network_interface_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip", "labels.%", "0"),
|
|
),
|
|
},
|
|
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMin,
|
|
ResourceName: "stackit_network_interface.network_interface",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_interface.network_interface"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_interface.network_interface")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, networkId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMin,
|
|
ResourceName: "stackit_network.network",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network.network"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network.network")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, networkId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMin,
|
|
ResourceName: "stackit_public_ip.public_ip",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_public_ip.public_ip"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_public_ip.public_ip")
|
|
}
|
|
publicIpId, ok := r.Primary.Attributes["public_ip_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute public_ip_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, publicIpId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// In this minimal setup, no update can be performed
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccNetworkInterfaceMax(t *testing.T) {
|
|
t.Logf("TestAccNetworkInterfaceMax name: %s", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkInterfaceMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network interface instance
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "ipv4", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["ipv4"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "allowed_addresses.#", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "allowed_addresses.0", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["allowed_address"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "security", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["security"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "security_group_ids.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface", "security_group_ids.0",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "mac"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "network_interface_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "type"),
|
|
|
|
// Network instance
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "public_ip"),
|
|
|
|
// Public ip
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip", "public_ip_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip", "ip"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip.public_ip", "network_interface_id",
|
|
"stackit_network_interface.network_interface", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["label"])),
|
|
|
|
// Network interface simple
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface_simple", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_simple", "network_interface_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_simple", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
|
|
// Public ip simple
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip_simple", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip_simple", "public_ip_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip_simple", "ip"),
|
|
resource.TestCheckNoResourceAttr("stackit_public_ip.public_ip_simple", "network_interface_id"),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip_simple", "labels.%", "0"),
|
|
|
|
// Nic and public ip attach
|
|
resource.TestCheckResourceAttr("stackit_public_ip_associate.nic_public_ip_attach", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip_associate.nic_public_ip_attach", "public_ip_id",
|
|
"stackit_public_ip.public_ip_simple", "public_ip_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip_associate.nic_public_ip_attach", "network_interface_id",
|
|
"stackit_network_interface.network_interface_simple", "network_interface_id",
|
|
),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_network_interface" "network_interface" {
|
|
project_id = stackit_network_interface.network_interface.project_id
|
|
network_id = stackit_network_interface.network_interface.network_id
|
|
network_interface_id = stackit_network_interface.network_interface.network_interface_id
|
|
}
|
|
|
|
data "stackit_network" "network" {
|
|
project_id = stackit_network.network.project_id
|
|
network_id = stackit_network.network.network_id
|
|
}
|
|
|
|
data "stackit_public_ip" "public_ip" {
|
|
project_id = stackit_public_ip.public_ip.project_id
|
|
public_ip_id = stackit_public_ip.public_ip.public_ip_id
|
|
}
|
|
|
|
data "stackit_network_interface" "network_interface_simple" {
|
|
project_id = stackit_network_interface.network_interface_simple.project_id
|
|
network_id = stackit_network_interface.network_interface_simple.network_id
|
|
network_interface_id = stackit_network_interface.network_interface_simple.network_interface_id
|
|
}
|
|
|
|
data "stackit_public_ip" "public_ip_simple" {
|
|
project_id = stackit_public_ip.public_ip_simple.project_id
|
|
public_ip_id = stackit_public_ip.public_ip_simple.public_ip_id
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceNetworkInterfaceMaxConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network interface instance
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_interface.network_interface", "project_id",
|
|
"stackit_network_interface.network_interface", "project_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_interface.network_interface", "network_interface_id",
|
|
"stackit_network_interface.network_interface", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "ipv4", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["ipv4"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "allowed_addresses.#", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "allowed_addresses.0", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["allowed_address"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "security", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["security"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface", "security_group_ids.#", "1"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_network_interface.network_interface", "security_group_ids.0",
|
|
"stackit_security_group.security_group", "security_group_id",
|
|
),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "mac"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "network_interface_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface", "type"),
|
|
|
|
// Network instance
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttr("data.stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["name"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network.network", "public_ip"),
|
|
|
|
// Public ip
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip", "public_ip_id",
|
|
"stackit_public_ip.public_ip", "public_ip_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip", "ip",
|
|
"stackit_public_ip.public_ip", "ip",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip", "network_interface_id",
|
|
"data.stackit_network_interface.network_interface", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["label"])),
|
|
|
|
// Network interface simple
|
|
resource.TestCheckNoResourceAttr("data.stackit_network_interface.network_interface_simple", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface_simple", "ipv4"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_network_interface.network_interface_simple", "allowed_addresses.#"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface_simple", "security", "true"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface_simple", "labels.#", "0"),
|
|
resource.TestCheckResourceAttr("data.stackit_network_interface.network_interface_simple", "security_group_ids.#", "0"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface_simple", "mac"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface_simple", "network_interface_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_network_interface.network_interface_simple", "type"),
|
|
|
|
// Public ip simple
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip_simple", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip_simple", "public_ip_id",
|
|
"stackit_public_ip.public_ip_simple", "public_ip_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip_simple", "ip",
|
|
"stackit_public_ip.public_ip_simple", "ip",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"data.stackit_public_ip.public_ip_simple", "network_interface_id",
|
|
"data.stackit_network_interface.network_interface_simple", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("data.stackit_public_ip.public_ip_simple", "labels.%", "0"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
ResourceName: "stackit_network_interface.network_interface",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_interface.network_interface"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_interface.network_interface")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, networkId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
ResourceName: "stackit_network.network",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network.network"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network.network")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, networkId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
ResourceName: "stackit_public_ip.public_ip",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_public_ip.public_ip"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_public_ip.public_ip")
|
|
}
|
|
publicIpId, ok := r.Primary.Attributes["public_ip_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute public_ip_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, publicIpId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
ResourceName: "stackit_network_interface.network_interface_simple",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_network_interface.network_interface_simple"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_network_interface.network_interface_simple")
|
|
}
|
|
networkId, ok := r.Primary.Attributes["network_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, networkId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
ResourceName: "stackit_public_ip.public_ip_simple",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_public_ip.public_ip_simple"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_public_ip.public_ip_simple")
|
|
}
|
|
publicIpId, ok := r.Primary.Attributes["public_ip_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute public_ip_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, publicIpId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMax,
|
|
ResourceName: "stackit_public_ip_associate.nic_public_ip_attach",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_public_ip.public_ip"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_public_ip.public_ip")
|
|
}
|
|
publicIpId, ok := r.Primary.Attributes["public_ip_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute public_ip_id")
|
|
}
|
|
networkInterfaceId, ok := r.Primary.Attributes["network_interface_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute network_interface_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s,%s", testutil.ProjectId, testutil.Region, publicIpId, networkInterfaceId), nil
|
|
},
|
|
ImportState: true,
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_public_ip_associate.nic_public_ip_attach", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip_associate.nic_public_ip_attach", "public_ip_id",
|
|
"stackit_public_ip.public_ip_simple", "public_ip_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip_associate.nic_public_ip_attach", "network_interface_id",
|
|
"stackit_network_interface.network_interface_simple", "network_interface_id",
|
|
),
|
|
),
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigNetworkInterfaceVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceNetworkInterfaceMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Network interface instance
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "ipv4", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["ipv4"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "allowed_addresses.#", "0"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "security", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["security"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface", "security_group_ids.#", "0"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "mac"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "network_interface_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface", "type"),
|
|
|
|
// Network instance
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "network_id"),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttr("stackit_network.network", "name", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "ipv4_prefixes.#"),
|
|
resource.TestCheckNoResourceAttr("stackit_network.network", "ipv6_prefixes.#"),
|
|
resource.TestCheckResourceAttrSet("stackit_network.network", "public_ip"),
|
|
|
|
// Public ip
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip", "public_ip_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip", "ip"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip.public_ip", "network_interface_id",
|
|
"stackit_network_interface.network_interface", "network_interface_id",
|
|
),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "labels.%", "1"),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip", "labels.acc-test", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["label"])),
|
|
|
|
// Network interface simple
|
|
resource.TestCheckResourceAttr("stackit_network_interface.network_interface_simple", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_network_interface.network_interface_simple", "network_interface_id"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_network_interface.network_interface_simple", "network_id",
|
|
"stackit_network.network", "network_id",
|
|
),
|
|
|
|
// Public ip simple
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip_simple", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip_simple", "public_ip_id"),
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip_simple", "ip"),
|
|
// The network gets re-created, which triggers a re-create of the 'network_interface_simple' NIC, which leads the 'stackit_public_ip_associate' resource to update the
|
|
// networkInterfaceId of the public IP. All that without the public ip resource noticing. So the public ip resource will still hold the networkInterfaceId of the old NIC.
|
|
// So we can only check that *some* network interface ID is set here, but can't compare it with the networkInterfaceId of the NIC resource (old vs. new NIC id)
|
|
resource.TestCheckResourceAttrSet("stackit_public_ip.public_ip_simple", "network_interface_id"),
|
|
resource.TestCheckResourceAttr("stackit_public_ip.public_ip_simple", "labels.%", "0"),
|
|
|
|
// Nic and public ip attach
|
|
resource.TestCheckResourceAttr("stackit_public_ip_associate.nic_public_ip_attach", "project_id", testutil.ConvertConfigVariable(testConfigNetworkInterfaceVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip_associate.nic_public_ip_attach", "public_ip_id",
|
|
"stackit_public_ip.public_ip_simple", "public_ip_id",
|
|
),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_public_ip_associate.nic_public_ip_attach", "network_interface_id",
|
|
"stackit_network_interface.network_interface_simple", "network_interface_id",
|
|
),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccKeyPairMin(t *testing.T) {
|
|
t.Logf("TestAccKeyPairMin name: %s", testutil.ConvertConfigVariable(testConfigKeyPairMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigKeyPairMin,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceKeyPairMinConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigKeyPairMin["name"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigKeyPairMin["public_key"])),
|
|
resource.TestCheckResourceAttrSet("stackit_key_pair.key_pair", "fingerprint"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigKeyPairMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_key_pair" "key_pair" {
|
|
name = stackit_key_pair.key_pair.name
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceKeyPairMinConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Instance
|
|
resource.TestCheckResourceAttr("data.stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigKeyPairMin["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigKeyPairMin["public_key"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_key_pair.key_pair", "fingerprint"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_key_pair.key_pair", "fingerprint",
|
|
"data.stackit_key_pair.key_pair", "fingerprint",
|
|
),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigKeyPairMin,
|
|
ResourceName: "stackit_key_pair.key_pair",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_key_pair.key_pair"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_key_pair.key_pair")
|
|
}
|
|
keyPairName, ok := r.Primary.Attributes["name"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute name")
|
|
}
|
|
return keyPairName, nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
// In this minimal setup, no update can be performed
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccKeyPairMax(t *testing.T) {
|
|
t.Logf("TestAccKeyPairMax name: %s", testutil.ConvertConfigVariable(testConfigKeyPairMax["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigKeyPairMax,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceKeyPairMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigKeyPairMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigKeyPairMax["public_key"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "labels.acc-test", testutil.ConvertConfigVariable(testConfigKeyPairMax["label"])),
|
|
resource.TestCheckResourceAttrSet("stackit_key_pair.key_pair", "fingerprint"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigKeyPairMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_key_pair" "key_pair" {
|
|
name = stackit_key_pair.key_pair.name
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), resourceKeyPairMaxConfig,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Instance
|
|
resource.TestCheckResourceAttr("data.stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigKeyPairMax["name"])),
|
|
resource.TestCheckResourceAttr("data.stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigKeyPairMax["public_key"])),
|
|
resource.TestCheckResourceAttr("data.stackit_key_pair.key_pair", "labels.acc-test", testutil.ConvertConfigVariable(testConfigKeyPairMax["label"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_key_pair.key_pair", "fingerprint"),
|
|
resource.TestCheckResourceAttrPair(
|
|
"stackit_key_pair.key_pair", "fingerprint",
|
|
"data.stackit_key_pair.key_pair", "fingerprint",
|
|
),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigKeyPairMax,
|
|
ResourceName: "stackit_key_pair.key_pair",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_key_pair.key_pair"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_key_pair.key_pair")
|
|
}
|
|
keyPairName, ok := r.Primary.Attributes["name"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute name")
|
|
}
|
|
return keyPairName, nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
},
|
|
{
|
|
ConfigVariables: testConfigKeyPairMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", testutil.IaaSProviderConfig(), resourceKeyPairMaxConfig),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "name", testutil.ConvertConfigVariable(testConfigKeyPairMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "public_key", testutil.ConvertConfigVariable(testConfigKeyPairMaxUpdated["public_key"])),
|
|
resource.TestCheckResourceAttr("stackit_key_pair.key_pair", "labels.acc-test", testutil.ConvertConfigVariable(testConfigKeyPairMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttrSet("stackit_key_pair.key_pair", "fingerprint"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccImageMin(t *testing.T) {
|
|
t.Logf("TestAccImageMin name: %s", testutil.ConvertConfigVariable(testConfigImageVarsMin["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigImageVarsMin,
|
|
Config: fmt.Sprintf("%s\n%s", resourceImageMinConfig, testutil.IaaSProviderConfig()),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_image.image", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "image_id"),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "name", testutil.ConvertConfigVariable(testConfigImageVarsMin["name"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "disk_format", testutil.ConvertConfigVariable(testConfigImageVarsMin["disk_format"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "local_file_path", testutil.ConvertConfigVariable(testConfigImageVarsMin["local_file_path"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "scope"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigImageVarsMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_image" "image" {
|
|
project_id = stackit_image.image.project_id
|
|
image_id = stackit_image.image.image_id
|
|
}
|
|
`,
|
|
resourceImageMinConfig, testutil.IaaSProviderConfig(),
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Instance
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMin["project_id"])),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "image_id", "stackit_image.image", "image_id"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "name", "stackit_image.image", "name"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "disk_format", "stackit_image.image", "disk_format"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "min_disk_size", "stackit_image.image", "min_disk_size"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "min_ram", "stackit_image.image", "min_ram"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "protected", "stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.digest"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.digest"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigImageVarsMin,
|
|
ResourceName: "stackit_image.image",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_image.image"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_image.image")
|
|
}
|
|
imageId, ok := r.Primary.Attributes["image_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute image_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, imageId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
ImportStateVerifyIgnore: []string{"local_file_path"},
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigImageVarsMinUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", resourceImageMinConfig, testutil.IaaSProviderConfig()),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_image.image", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMinUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "image_id"),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "name", testutil.ConvertConfigVariable(testConfigImageVarsMinUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "disk_format", testutil.ConvertConfigVariable(testConfigImageVarsMinUpdated["disk_format"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "local_file_path", testutil.ConvertConfigVariable(testConfigImageVarsMinUpdated["local_file_path"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "scope"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccImageMax(t *testing.T) {
|
|
t.Logf("TestAccImageMax name: %s", testutil.ConvertConfigVariable(testConfigImageVarsMax["name"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
CheckDestroy: testAccCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
|
|
// Creation
|
|
{
|
|
ConfigVariables: testConfigImageVarsMax,
|
|
Config: fmt.Sprintf("%s\n%s", resourceImageMaxConfig, testutil.IaaSProviderConfig()),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_image.image", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "image_id"),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "name", testutil.ConvertConfigVariable(testConfigImageVarsMax["name"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "disk_format", testutil.ConvertConfigVariable(testConfigImageVarsMax["disk_format"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "local_file_path", testutil.ConvertConfigVariable(testConfigImageVarsMax["local_file_path"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "min_disk_size", testutil.ConvertConfigVariable(testConfigImageVarsMax["min_disk_size"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "min_ram", testutil.ConvertConfigVariable(testConfigImageVarsMax["min_ram"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "labels.acc-test", testutil.ConvertConfigVariable(testConfigImageVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.boot_menu", testutil.ConvertConfigVariable(testConfigImageVarsMax["boot_menu"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.cdrom_bus", testutil.ConvertConfigVariable(testConfigImageVarsMax["cdrom_bus"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.disk_bus", testutil.ConvertConfigVariable(testConfigImageVarsMax["disk_bus"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.nic_model", testutil.ConvertConfigVariable(testConfigImageVarsMax["nic_model"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.operating_system", testutil.ConvertConfigVariable(testConfigImageVarsMax["operating_system"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.operating_system_distro", testutil.ConvertConfigVariable(testConfigImageVarsMax["operating_system_distro"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.operating_system_version", testutil.ConvertConfigVariable(testConfigImageVarsMax["operating_system_version"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.rescue_bus", testutil.ConvertConfigVariable(testConfigImageVarsMax["rescue_bus"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.rescue_device", testutil.ConvertConfigVariable(testConfigImageVarsMax["rescue_device"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.secure_boot", testutil.ConvertConfigVariable(testConfigImageVarsMax["secure_boot"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.uefi", testutil.ConvertConfigVariable(testConfigImageVarsMax["uefi"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.video_model", testutil.ConvertConfigVariable(testConfigImageVarsMax["video_model"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.virtio_scsi", testutil.ConvertConfigVariable(testConfigImageVarsMax["virtio_scsi"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "scope"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
),
|
|
},
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigImageVarsMax,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
%s
|
|
|
|
data "stackit_image" "image" {
|
|
project_id = stackit_image.image.project_id
|
|
image_id = stackit_image.image.image_id
|
|
}
|
|
`,
|
|
resourceImageMaxConfig, testutil.IaaSProviderConfig(),
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Instance
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "image_id", "stackit_image.image", "image_id"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "name", "stackit_image.image", "name"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "disk_format", "stackit_image.image", "disk_format"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "min_disk_size", "stackit_image.image", "min_disk_size"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "min_ram", "stackit_image.image", "min_ram"),
|
|
resource.TestCheckResourceAttrPair("data.stackit_image.image", "protected", "stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "min_disk_size", testutil.ConvertConfigVariable(testConfigImageVarsMax["min_disk_size"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "min_ram", testutil.ConvertConfigVariable(testConfigImageVarsMax["min_ram"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "labels.acc-test", testutil.ConvertConfigVariable(testConfigImageVarsMax["label"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.boot_menu", testutil.ConvertConfigVariable(testConfigImageVarsMax["boot_menu"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.cdrom_bus", testutil.ConvertConfigVariable(testConfigImageVarsMax["cdrom_bus"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.disk_bus", testutil.ConvertConfigVariable(testConfigImageVarsMax["disk_bus"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.nic_model", testutil.ConvertConfigVariable(testConfigImageVarsMax["nic_model"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.operating_system", testutil.ConvertConfigVariable(testConfigImageVarsMax["operating_system"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.operating_system_distro", testutil.ConvertConfigVariable(testConfigImageVarsMax["operating_system_distro"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.operating_system_version", testutil.ConvertConfigVariable(testConfigImageVarsMax["operating_system_version"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.rescue_bus", testutil.ConvertConfigVariable(testConfigImageVarsMax["rescue_bus"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.rescue_device", testutil.ConvertConfigVariable(testConfigImageVarsMax["rescue_device"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.secure_boot", testutil.ConvertConfigVariable(testConfigImageVarsMax["secure_boot"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.uefi", testutil.ConvertConfigVariable(testConfigImageVarsMax["uefi"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.video_model", testutil.ConvertConfigVariable(testConfigImageVarsMax["video_model"])),
|
|
resource.TestCheckResourceAttr("data.stackit_image.image", "config.virtio_scsi", testutil.ConvertConfigVariable(testConfigImageVarsMax["virtio_scsi"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.digest"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image.image", "checksum.digest"),
|
|
),
|
|
},
|
|
// Import
|
|
{
|
|
ConfigVariables: testConfigImageVarsMax,
|
|
ResourceName: "stackit_image.image",
|
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
|
r, ok := s.RootModule().Resources["stackit_image.image"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find resource stackit_image.image")
|
|
}
|
|
imageId, ok := r.Primary.Attributes["image_id"]
|
|
if !ok {
|
|
return "", fmt.Errorf("couldn't find attribute image_id")
|
|
}
|
|
return fmt.Sprintf("%s,%s,%s", testutil.ProjectId, testutil.Region, imageId), nil
|
|
},
|
|
ImportState: true,
|
|
ImportStateVerify: true,
|
|
ImportStateVerifyIgnore: []string{"local_file_path"},
|
|
},
|
|
// Update
|
|
{
|
|
ConfigVariables: testConfigImageVarsMaxUpdated,
|
|
Config: fmt.Sprintf("%s\n%s", resourceImageMaxConfig, testutil.IaaSProviderConfig()),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("stackit_image.image", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["project_id"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "image_id"),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "name", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["name"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "disk_format", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["disk_format"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "local_file_path", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["local_file_path"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "min_disk_size", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["min_disk_size"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "min_ram", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["min_ram"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "labels.acc-test", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["label"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.boot_menu", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["boot_menu"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.cdrom_bus", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["cdrom_bus"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.disk_bus", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["disk_bus"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.nic_model", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["nic_model"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.operating_system", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["operating_system"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.operating_system_distro", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["operating_system_distro"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.operating_system_version", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["operating_system_version"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.rescue_bus", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["rescue_bus"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.rescue_device", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["rescue_device"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.secure_boot", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["secure_boot"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.uefi", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["uefi"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.video_model", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["video_model"])),
|
|
resource.TestCheckResourceAttr("stackit_image.image", "config.virtio_scsi", testutil.ConvertConfigVariable(testConfigImageVarsMaxUpdated["virtio_scsi"])),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "protected"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "scope"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("stackit_image.image", "checksum.digest"),
|
|
),
|
|
},
|
|
// Deletion is done by the framework implicitly
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccImageDatasourceSearchVariants(t *testing.T) {
|
|
t.Log("TestDataSource Image Variants")
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
Steps: []resource.TestStep{
|
|
// Creation
|
|
{
|
|
ConfigVariables: config.Variables{"project_id": config.StringVariable(testutil.ProjectId)},
|
|
Config: fmt.Sprintf("%s\n%s", dataSourceImageVariants, testutil.IaaSProviderConfigWithBetaResourcesEnabled()),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.name_match_ubuntu_22_04", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_match_ubuntu_22_04", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.ubuntu_by_image_id", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_by_image_id", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.regex_match_ubuntu_22_04", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.regex_match_ubuntu_22_04", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.filter_debian_11", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_debian_11", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.filter_uefi_ubuntu", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.filter_uefi_ubuntu", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_regex_and_filter_rhel_9_1", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.name_windows_2022_standard", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.name_windows_2022_standard", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.ubuntu_arm64_latest", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_latest", "checksum.digest"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_image_v2.ubuntu_arm64_oldest", "project_id", testutil.ConvertConfigVariable(testConfigImageVarsMax["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "image_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "min_disk_size"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "min_ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "protected"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "scope"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "checksum.algorithm"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_image_v2.ubuntu_arm64_oldest", "checksum.digest"),
|
|
|
|
// e2e test that ascending sort is working
|
|
func(s *terraform.State) error {
|
|
latest := s.RootModule().Resources["data.stackit_image_v2.ubuntu_arm64_latest"]
|
|
oldest := s.RootModule().Resources["data.stackit_image_v2.ubuntu_arm64_oldest"]
|
|
|
|
if latest == nil {
|
|
return fmt.Errorf("datasource 'data.stackit_image_v2.ubuntu_arm64_latest' not found")
|
|
}
|
|
if oldest == nil {
|
|
return fmt.Errorf("datasource 'data.stackit_image_v2.ubuntu_arm64_oldest' not found")
|
|
}
|
|
|
|
nameLatest := latest.Primary.Attributes["name"]
|
|
nameOldest := oldest.Primary.Attributes["name"]
|
|
|
|
if nameLatest == nameOldest {
|
|
return fmt.Errorf("expected image names to differ, but both are %q", nameLatest)
|
|
}
|
|
|
|
return nil
|
|
},
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccDatasourcePublicIpRanges(t *testing.T) {
|
|
t.Log("TestDataSource STACKIT Public Ip Ranges")
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
Steps: []resource.TestStep{
|
|
// Read
|
|
{
|
|
ConfigVariables: config.Variables{},
|
|
Config: fmt.Sprintf("%s\n%s", datasourcePublicIpRanges, testutil.IaaSProviderConfig()),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("data.stackit_public_ip_ranges.example", "id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_public_ip_ranges.example", "public_ip_ranges.0.cidr"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_public_ip_ranges.example", "cidr_list.0"),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccProject(t *testing.T) {
|
|
projectId := testutil.ProjectId
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
Steps: []resource.TestStep{
|
|
// Data source
|
|
{
|
|
ConfigVariables: testConfigKeyPairMin,
|
|
Config: fmt.Sprintf(`
|
|
%s
|
|
|
|
data "stackit_iaas_project" "project" {
|
|
project_id = %q
|
|
}
|
|
`,
|
|
testutil.IaaSProviderConfig(), testutil.ProjectId,
|
|
),
|
|
Check: resource.ComposeAggregateTestCheckFunc(
|
|
// Instance
|
|
resource.TestCheckResourceAttr("data.stackit_iaas_project.project", "project_id", projectId),
|
|
resource.TestCheckResourceAttr("data.stackit_iaas_project.project", "id", projectId),
|
|
resource.TestCheckResourceAttrSet("data.stackit_iaas_project.project", "area_id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_iaas_project.project", "internet_access"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_iaas_project.project", "state"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_iaas_project.project", "status"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_iaas_project.project", "created_at"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_iaas_project.project", "updated_at"),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccMachineType(t *testing.T) {
|
|
t.Logf("TestAccMachineType projectid: %s", testutil.ConvertConfigVariable(testConfigMachineTypeVars["project_id"]))
|
|
resource.ParallelTest(t, resource.TestCase{
|
|
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
|
|
Steps: []resource.TestStep{
|
|
{
|
|
ConfigVariables: testConfigMachineTypeVars,
|
|
Config: fmt.Sprintf("%s\n%s", dataSourceMachineTypeConfig, testutil.IaaSProviderConfigWithBetaResourcesEnabled()),
|
|
Check: resource.ComposeTestCheckFunc(
|
|
resource.TestCheckResourceAttr("data.stackit_machine_type.two_vcpus_filter", "project_id", testutil.ConvertConfigVariable(testConfigMachineTypeVars["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "vcpus"),
|
|
resource.TestCheckResourceAttr("data.stackit_machine_type.two_vcpus_filter", "vcpus", "2"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "disk"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "description"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.two_vcpus_filter", "extra_specs.cpu"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_machine_type.filter_sorted_ascending_false", "project_id", testutil.ConvertConfigVariable(testConfigMachineTypeVars["project_id"])),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "id"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "name"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "vcpus"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "ram"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "disk"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "description"),
|
|
resource.TestCheckResourceAttrSet("data.stackit_machine_type.filter_sorted_ascending_false", "extra_specs.cpu"),
|
|
|
|
resource.TestCheckResourceAttr("data.stackit_machine_type.no_match", "project_id", testutil.ConvertConfigVariable(testConfigMachineTypeVars["project_id"])),
|
|
resource.TestCheckNoResourceAttr("data.stackit_machine_type.no_match", "description"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_machine_type.no_match", "disk"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_machine_type.no_match", "extra_specs"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_machine_type.no_match", "id"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_machine_type.no_match", "name"),
|
|
resource.TestCheckNoResourceAttr("data.stackit_machine_type.no_match", "ram"),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func testAccCheckDestroy(s *terraform.State) error {
|
|
checkFunctions := []func(s *terraform.State) error{
|
|
testAccCheckIaaSVolumeDestroy,
|
|
testAccCheckServerDestroy,
|
|
testAccCheckAffinityGroupDestroy,
|
|
testAccCheckIaaSSecurityGroupDestroy,
|
|
testAccCheckIaaSPublicIpDestroy,
|
|
testAccCheckIaaSKeyPairDestroy,
|
|
testAccCheckIaaSImageDestroy,
|
|
testAccCheckNetworkDestroy,
|
|
testAccCheckNetworkInterfaceDestroy,
|
|
testAccCheckNetworkAreaRegionDestroy,
|
|
testAccCheckNetworkAreaDestroy,
|
|
}
|
|
var errs []error
|
|
|
|
wg := sync.WaitGroup{}
|
|
wg.Add(len(checkFunctions))
|
|
|
|
for _, f := range checkFunctions {
|
|
go func() {
|
|
err := f(s)
|
|
if err != nil {
|
|
errs = append(errs, err)
|
|
}
|
|
wg.Done()
|
|
}()
|
|
}
|
|
wg.Wait()
|
|
return errors.Join(errs...)
|
|
}
|
|
|
|
func testAccCheckNetworkDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaasalpha.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaasalpha.NewAPIClient()
|
|
} else {
|
|
client, err = iaasalpha.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
var errs []error
|
|
// networks
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_network" {
|
|
continue
|
|
}
|
|
region := strings.Split(rs.Primary.ID, core.Separator)[1]
|
|
networkId := strings.Split(rs.Primary.ID, core.Separator)[2]
|
|
err := client.DeleteNetworkExecute(ctx, testutil.ProjectId, region, networkId)
|
|
if err != nil {
|
|
var oapiErr *oapierror.GenericOpenAPIError
|
|
if errors.As(err, &oapiErr) {
|
|
if oapiErr.StatusCode == http.StatusNotFound {
|
|
continue
|
|
}
|
|
}
|
|
errs = append(errs, fmt.Errorf("cannot trigger network deletion %q: %w", networkId, err))
|
|
}
|
|
_, err = waitAlpha.DeleteNetworkWaitHandler(ctx, client, testutil.ProjectId, region, networkId).WaitWithContext(ctx)
|
|
if err != nil {
|
|
errs = append(errs, fmt.Errorf("cannot delete network %q: %w", networkId, err))
|
|
}
|
|
}
|
|
|
|
return errors.Join(errs...)
|
|
}
|
|
|
|
func testAccCheckNetworkInterfaceDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
var errs []error
|
|
// network interfaces
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_network_interface" {
|
|
continue
|
|
}
|
|
ids := strings.Split(rs.Primary.ID, core.Separator)
|
|
region := ids[1]
|
|
networkId := ids[2]
|
|
networkInterfaceId := ids[3]
|
|
err := client.DeleteNicExecute(ctx, testutil.ProjectId, region, networkId, networkInterfaceId)
|
|
if err != nil {
|
|
var oapiErr *oapierror.GenericOpenAPIError
|
|
if errors.As(err, &oapiErr) {
|
|
if oapiErr.StatusCode == http.StatusNotFound || oapiErr.StatusCode == http.StatusBadRequest {
|
|
continue
|
|
}
|
|
}
|
|
errs = append(errs, fmt.Errorf("cannot trigger network interface deletion %q: %w", networkInterfaceId, err))
|
|
}
|
|
if err != nil {
|
|
errs = append(errs, fmt.Errorf("cannot delete network interface %q: %w", networkInterfaceId, err))
|
|
}
|
|
}
|
|
|
|
return errors.Join(errs...)
|
|
}
|
|
|
|
func testAccCheckNetworkAreaRegionDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
// network areas
|
|
networkAreasToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_network_area_region" {
|
|
continue
|
|
}
|
|
networkAreaId := strings.Split(rs.Primary.ID, core.Separator)[1]
|
|
networkAreasToDestroy = append(networkAreasToDestroy, networkAreaId)
|
|
}
|
|
|
|
networkAreasResp, err := client.ListNetworkAreasExecute(ctx, testutil.OrganizationId)
|
|
if err != nil {
|
|
return fmt.Errorf("getting networkAreasResp: %w", err)
|
|
}
|
|
|
|
networkAreas := *networkAreasResp.Items
|
|
for i := range networkAreas {
|
|
if networkAreas[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(networkAreasToDestroy, *networkAreas[i].Id) {
|
|
err := client.DeleteNetworkAreaRegionExecute(ctx, testutil.OrganizationId, *networkAreas[i].Id, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying network area %s during CheckDestroy: %w", *networkAreas[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckNetworkAreaDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
// network areas
|
|
networkAreasToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_network_area" {
|
|
continue
|
|
}
|
|
networkAreaId := strings.Split(rs.Primary.ID, core.Separator)[1]
|
|
networkAreasToDestroy = append(networkAreasToDestroy, networkAreaId)
|
|
}
|
|
|
|
networkAreasResp, err := client.ListNetworkAreasExecute(ctx, testutil.OrganizationId)
|
|
if err != nil {
|
|
return fmt.Errorf("getting networkAreasResp: %w", err)
|
|
}
|
|
|
|
networkAreas := *networkAreasResp.Items
|
|
for i := range networkAreas {
|
|
if networkAreas[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(networkAreasToDestroy, *networkAreas[i].Id) {
|
|
err := client.DeleteNetworkAreaExecute(ctx, testutil.OrganizationId, *networkAreas[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying network area %s during CheckDestroy: %w", *networkAreas[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckIaaSVolumeDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
volumesToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_volume" {
|
|
continue
|
|
}
|
|
// volume terraform ID: "[project_id],[volume_id]"
|
|
volumeId := strings.Split(rs.Primary.ID, core.Separator)[1]
|
|
volumesToDestroy = append(volumesToDestroy, volumeId)
|
|
}
|
|
|
|
volumesResp, err := client.ListVolumesExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting volumesResp: %w", err)
|
|
}
|
|
|
|
volumes := *volumesResp.Items
|
|
for i := range volumes {
|
|
if volumes[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(volumesToDestroy, *volumes[i].Id) {
|
|
err := client.DeleteVolumeExecute(ctx, testutil.ProjectId, testutil.Region, *volumes[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying volume %s during CheckDestroy: %w", *volumes[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckServerDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var alphaClient *iaas.APIClient
|
|
var client *iaas.APIClient
|
|
var err error
|
|
var alphaErr error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
alphaClient, alphaErr = iaas.NewAPIClient()
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
alphaClient, alphaErr = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
client, err = iaas.NewAPIClient()
|
|
}
|
|
if err != nil || alphaErr != nil {
|
|
return fmt.Errorf("creating client: %w, %w", err, alphaErr)
|
|
}
|
|
|
|
// Servers
|
|
|
|
serversToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_server" {
|
|
continue
|
|
}
|
|
// server terraform ID: "[project_id],[region],[server_id]"
|
|
serverId := strings.Split(rs.Primary.ID, core.Separator)[2]
|
|
serversToDestroy = append(serversToDestroy, serverId)
|
|
}
|
|
|
|
serversResp, err := alphaClient.ListServersExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting serversResp: %w", err)
|
|
}
|
|
|
|
servers := *serversResp.Items
|
|
for i := range servers {
|
|
if servers[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(serversToDestroy, *servers[i].Id) {
|
|
err := alphaClient.DeleteServerExecute(ctx, testutil.ProjectId, testutil.Region, *servers[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying server %s during CheckDestroy: %w", *servers[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Networks
|
|
|
|
networksToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_network" {
|
|
continue
|
|
}
|
|
// network terraform ID: "[project_id],[network_id]"
|
|
networkId := strings.Split(rs.Primary.ID, core.Separator)[1]
|
|
networksToDestroy = append(networksToDestroy, networkId)
|
|
}
|
|
|
|
networksResp, err := client.ListNetworksExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting networksResp: %w", err)
|
|
}
|
|
|
|
networks := *networksResp.Items
|
|
for i := range networks {
|
|
if networks[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(networksToDestroy, *networks[i].Id) {
|
|
err := client.DeleteNetworkExecute(ctx, testutil.ProjectId, testutil.Region, *networks[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying network %s during CheckDestroy: %w", *networks[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckAffinityGroupDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
affinityGroupsToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_affinity_group" {
|
|
continue
|
|
}
|
|
// affinity group terraform ID: "[project_id],[region],[affinity_group_id]"
|
|
affinityGroupId := strings.Split(rs.Primary.ID, core.Separator)[2]
|
|
affinityGroupsToDestroy = append(affinityGroupsToDestroy, affinityGroupId)
|
|
}
|
|
|
|
affinityGroupsResp, err := client.ListAffinityGroupsExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting securityGroupsResp: %w", err)
|
|
}
|
|
|
|
affinityGroups := *affinityGroupsResp.Items
|
|
for i := range affinityGroups {
|
|
if affinityGroups[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(affinityGroupsToDestroy, *affinityGroups[i].Id) {
|
|
err := client.DeleteAffinityGroupExecute(ctx, testutil.ProjectId, testutil.Region, *affinityGroups[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying affinity group %s during CheckDestroy: %w", *affinityGroups[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckIaaSSecurityGroupDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
securityGroupsToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_security_group" {
|
|
continue
|
|
}
|
|
// security group terraform ID: "[project_id],[region],[security_group_id]"
|
|
securityGroupId := strings.Split(rs.Primary.ID, core.Separator)[2]
|
|
securityGroupsToDestroy = append(securityGroupsToDestroy, securityGroupId)
|
|
}
|
|
|
|
securityGroupsResp, err := client.ListSecurityGroupsExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting securityGroupsResp: %w", err)
|
|
}
|
|
|
|
securityGroups := *securityGroupsResp.Items
|
|
for i := range securityGroups {
|
|
if securityGroups[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(securityGroupsToDestroy, *securityGroups[i].Id) {
|
|
err := client.DeleteSecurityGroupExecute(ctx, testutil.ProjectId, testutil.Region, *securityGroups[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying security group %s during CheckDestroy: %w", *securityGroups[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckIaaSPublicIpDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
publicIpsToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_public_ip" {
|
|
continue
|
|
}
|
|
// public IP terraform ID: "[project_id],[region],[public_ip_id]"
|
|
publicIpId := strings.Split(rs.Primary.ID, core.Separator)[2]
|
|
publicIpsToDestroy = append(publicIpsToDestroy, publicIpId)
|
|
}
|
|
|
|
publicIpsResp, err := client.ListPublicIPsExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting publicIpsResp: %w", err)
|
|
}
|
|
|
|
publicIps := *publicIpsResp.Items
|
|
for i := range publicIps {
|
|
if publicIps[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(publicIpsToDestroy, *publicIps[i].Id) {
|
|
err := client.DeletePublicIPExecute(ctx, testutil.ProjectId, testutil.Region, *publicIps[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying public IP %s during CheckDestroy: %w", *publicIps[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckIaaSKeyPairDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
keyPairsToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_key_pair" {
|
|
continue
|
|
}
|
|
// Key pair terraform ID: "[name]"
|
|
keyPairsToDestroy = append(keyPairsToDestroy, rs.Primary.ID)
|
|
}
|
|
|
|
keyPairsResp, err := client.ListKeyPairsExecute(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("getting key pairs: %w", err)
|
|
}
|
|
|
|
keyPairs := *keyPairsResp.Items
|
|
for i := range keyPairs {
|
|
if keyPairs[i].Name == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(keyPairsToDestroy, *keyPairs[i].Name) {
|
|
err := client.DeleteKeyPairExecute(ctx, *keyPairs[i].Name)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying key pair %s during CheckDestroy: %w", *keyPairs[i].Name, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckIaaSImageDestroy(s *terraform.State) error {
|
|
ctx := context.Background()
|
|
var client *iaas.APIClient
|
|
var err error
|
|
|
|
if testutil.IaaSCustomEndpoint == "" {
|
|
client, err = iaas.NewAPIClient()
|
|
} else {
|
|
client, err = iaas.NewAPIClient(
|
|
stackitSdkConfig.WithEndpoint(testutil.IaaSCustomEndpoint),
|
|
)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("creating client: %w", err)
|
|
}
|
|
|
|
imagesToDestroy := []string{}
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "stackit_image" {
|
|
continue
|
|
}
|
|
// Image terraform ID: "[project_id],[region],[image_id]"
|
|
imageId := strings.Split(rs.Primary.ID, core.Separator)[2]
|
|
imagesToDestroy = append(imagesToDestroy, imageId)
|
|
}
|
|
|
|
imagesResp, err := client.ListImagesExecute(ctx, testutil.ProjectId, testutil.Region)
|
|
if err != nil {
|
|
return fmt.Errorf("getting images: %w", err)
|
|
}
|
|
|
|
images := *imagesResp.Items
|
|
for i := range images {
|
|
if images[i].Id == nil {
|
|
continue
|
|
}
|
|
if utils.Contains(imagesToDestroy, *images[i].Id) {
|
|
err := client.DeleteImageExecute(ctx, testutil.ProjectId, testutil.Region, *images[i].Id)
|
|
if err != nil {
|
|
return fmt.Errorf("destroying image %s during CheckDestroy: %w", *images[i].Id, err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|