Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions docs/data-sources/dns_zone.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ data "stackit_dns_zone" "example" {
- `default_ttl` (Number) Default time to live.
- `description` (String) Description of the zone.
- `expire_time` (Number) Expire time.
- `extensions` (Attributes) A single extensions block as defined below. (see [below for nested schema](#nestedatt--extensions))
- `id` (String) Terraform's internal data source. ID. It is structured as "`project_id`,`zone_id`".
- `is_reverse_zone` (Boolean) Specifies, if the zone is a reverse zone or not.
- `name` (String) The user given name of the zone.
Expand All @@ -60,3 +61,19 @@ data "stackit_dns_zone" "example" {
Optional:

- `read` (String) A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).


<a id="nestedatt--extensions"></a>
### Nested Schema for `extensions`

Read-Only:

- `observability` (Attributes) A single observability block as defined below. (see [below for nested schema](#nestedatt--extensions--observability))

<a id="nestedatt--extensions--observability"></a>
### Nested Schema for `extensions.observability`

Read-Only:

- `observability_instance_id` (String) Observability instance ID to choose which Observability instance is used.
- `state` (String) State of the observability extension.
21 changes: 21 additions & 0 deletions docs/resources/dns_zone.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import {
- `default_ttl` (Number) Default time to live. E.g. 3600.
- `description` (String) Description of the zone.
- `expire_time` (Number) Expire time. E.g. 1209600.
- `extensions` (Attributes) A single extensions block as defined below. (see [below for nested schema](#nestedatt--extensions))
- `is_reverse_zone` (Boolean) Specifies, if the zone is a reverse zone or not. Defaults to `false`
- `negative_cache` (Number) Negative caching. E.g. 60
- `primaries` (List of String) Primary name server for secondary zone. E.g. ["1.2.3.4"]
Expand All @@ -66,6 +67,26 @@ import {
- `visibility` (String) Visibility of the zone. E.g. `public`.
- `zone_id` (String) The zone ID.

<a id="nestedatt--extensions"></a>
### Nested Schema for `extensions`

Optional:

- `observability` (Attributes) A single observability block as defined below. (see [below for nested schema](#nestedatt--extensions--observability))

<a id="nestedatt--extensions--observability"></a>
### Nested Schema for `extensions.observability`

Required:

- `observability_instance_id` (String) Observability instance ID to choose which Observability instance is used.

Read-Only:

- `state` (String) State of the extension.



<a id="nestedatt--timeouts"></a>
### Nested Schema for `timeouts`

Expand Down
46 changes: 30 additions & 16 deletions stackit/internal/services/dns/dns_acc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,28 +40,32 @@ var testConfigVarsMin = config.Variables{
}

var testConfigVarsMax = config.Variables{
"project_id": config.StringVariable(testutil.ProjectId),
"name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)),
"dns_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha) + ".example.home"),
"acl": config.StringVariable("0.0.0.0/0"),
"active": config.BoolVariable(true),
"contact_email": config.StringVariable("contact@example.com"),
"default_ttl": config.IntegerVariable(3600),
"description": config.StringVariable("a test description"),
"expire_time": config.IntegerVariable(1 * 24 * 60 * 60),
"project_id": config.StringVariable(testutil.ProjectId),
"name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)),
"dns_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha) + ".example.home"),
"acl": config.StringVariable("0.0.0.0/0"),
"active": config.BoolVariable(true),
"contact_email": config.StringVariable("contact@example.com"),
"default_ttl": config.IntegerVariable(3600),
"description": config.StringVariable("a test description"),
"expire_time": config.IntegerVariable(1 * 24 * 60 * 60),
"ext_observability_instance_id": config.StringVariable("a8f823ad-3abb-47fb-b56a-e3a7e97f65d5"),
// "ext_observability_state": config.StringVariable("disabled"),
"is_reverse_zone": config.BoolVariable(false),
// "negative_cache": config.IntegerVariable(128),
"primaries": config.ListVariable(config.StringVariable("1.1.1.1")),
"refresh_time": config.IntegerVariable(3600),
"retry_time": config.IntegerVariable(600),
"type": config.StringVariable("primary"),

"record_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)),
"record_record1": config.StringVariable("1.2.3.4"),
"record_active": config.BoolVariable(true),
"record_comment": config.StringVariable("a test comment"),
"record_ttl": config.IntegerVariable(3600),
"record_type": config.StringVariable("A"),
"record_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)),
"record_record1": config.StringVariable("1.2.3.4"),
"record_active": config.BoolVariable(true),
"record_comment": config.StringVariable("a test comment"),
"record_ttl": config.IntegerVariable(3600),
"record_type": config.StringVariable("A"),
"observability_instance_name": config.StringVariable(fmt.Sprintf("tf-acc-i%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum))),
"observability_plan_name": config.StringVariable("Observability-Metrics-Endpoint-100k-EU01"),
}

func configVarsInvalid(vars config.Variables) config.Variables {
Expand Down Expand Up @@ -313,6 +317,9 @@ func TestAccDnsMaxResource(t *testing.T) {
resource.TestCheckResourceAttr("stackit_dns_record_set.record_set", "type", testutil.ConvertConfigVariable(testConfigVarsMax["record_type"])),
resource.TestCheckResourceAttrSet("stackit_dns_record_set.record_set", "fqdn"),
resource.TestCheckResourceAttrSet("stackit_dns_record_set.record_set", "state"),

resource.TestCheckResourceAttr("stackit_observability_instance.observability_instance", "name", testutil.ConvertConfigVariable(testConfigVarsMax["observability_instance_name"])),
resource.TestCheckResourceAttr("stackit_observability_instance.observability_instance", "plan_name", testutil.ConvertConfigVariable(testConfigVarsMax["observability_plan_name"])),
),
},
// Data sources
Expand Down Expand Up @@ -404,6 +411,9 @@ func TestAccDnsMaxResource(t *testing.T) {
resource.TestCheckResourceAttr("data.stackit_dns_record_set.record_set", "comment", testutil.ConvertConfigVariable(testConfigVarsMax["record_comment"])),
resource.TestCheckResourceAttr("data.stackit_dns_record_set.record_set", "ttl", testutil.ConvertConfigVariable(testConfigVarsMax["record_ttl"])),
resource.TestCheckResourceAttr("data.stackit_dns_record_set.record_set", "type", testutil.ConvertConfigVariable(testConfigVarsMax["record_type"])),

resource.TestCheckResourceAttr("stackit_observability_instance.observability_instance", "name", testutil.ConvertConfigVariable(testConfigVarsMax["observability_instance_name"])),
resource.TestCheckResourceAttr("stackit_observability_instance.observability_instance", "plan_name", testutil.ConvertConfigVariable(testConfigVarsMax["observability_plan_name"])),
),
},
// Import
Expand Down Expand Up @@ -492,7 +502,11 @@ func TestAccDnsMaxResource(t *testing.T) {
resource.TestCheckResourceAttr("stackit_dns_record_set.record_set", "ttl", testutil.ConvertConfigVariable(testConfigVarsMax["record_ttl"])),
resource.TestCheckResourceAttr("stackit_dns_record_set.record_set", "type", testutil.ConvertConfigVariable(testConfigVarsMax["record_type"])),
resource.TestCheckResourceAttrSet("stackit_dns_record_set.record_set", "fqdn"),
resource.TestCheckResourceAttrSet("stackit_dns_record_set.record_set", "state")),
resource.TestCheckResourceAttrSet("stackit_dns_record_set.record_set", "state"),

resource.TestCheckResourceAttr("stackit_observability_instance.observability_instance", "name", testutil.ConvertConfigVariable(testConfigVarsMax["observability_instance_name"])),
resource.TestCheckResourceAttr("stackit_observability_instance.observability_instance", "plan_name", testutil.ConvertConfigVariable(testConfigVarsMax["observability_plan_name"])),
),
},
// Deletion is done by the framework implicitly
},
Expand Down
31 changes: 22 additions & 9 deletions stackit/internal/services/dns/testdata/resource-max.tf
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ variable "contact_email" {}
variable "default_ttl" {}
variable "description" {}
variable "expire_time" {}
variable "ext_observability_instance_id" {}
variable "is_reverse_zone" {}
# variable "negative_cache" {}
variable "primaries" {}
Expand All @@ -21,19 +22,31 @@ variable "record_comment" {}
variable "record_ttl" {}
variable "record_type" {}

variable "observability_instance_name" {}
variable "observability_plan_name" {}


resource "stackit_observability_instance" "observability_instance" {
project_id = var.project_id
name = var.observability_instance_name
plan_name = var.observability_plan_name
}

resource "stackit_dns_zone" "zone" {
project_id = var.project_id
name = var.name
dns_name = var.dns_name
acl = var.acl
active = var.active
contact_email = var.contact_email
default_ttl = var.default_ttl
description = var.description
expire_time = var.expire_time
project_id = var.project_id
name = var.name
dns_name = var.dns_name
acl = var.acl
active = var.active
contact_email = var.contact_email
default_ttl = var.default_ttl
description = var.description
expire_time = var.expire_time
extensions = {
observability = {
observability_instance_id = stackit_observability_instance.observability_instance.instance_id
}
}
is_reverse_zone = var.is_reverse_zone
# negative_cache = var.negative_cache
primaries = var.primaries
Expand Down
20 changes: 20 additions & 0 deletions stackit/internal/services/dns/zone/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,26 @@ func (d *zoneDataSource) Schema(ctx context.Context, _ datasource.SchemaRequest,
Description: "Expire time.",
Computed: true,
},
"extensions": schema.SingleNestedAttribute{
Description: "A single extensions block as defined below.",
Computed: true,
Attributes: map[string]schema.Attribute{
"observability": schema.SingleNestedAttribute{
Description: "A single observability block as defined below.",
Computed: true,
Attributes: map[string]schema.Attribute{
"observability_instance_id": schema.StringAttribute{
Description: "Observability instance ID to choose which Observability instance is used.",
Computed: true,
},
"state": schema.StringAttribute{
Description: "State of the observability extension.",
Computed: true,
},
},
},
},
},
"is_reverse_zone": schema.BoolAttribute{
Description: "Specifies, if the zone is a reverse zone or not.",
Computed: true,
Expand Down
Loading
Loading