From 04df2f2f896a9429692d6b8a59edbc6c6f60beab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diogo=20Ferr=C3=A3o?= Date: Tue, 4 Jun 2024 13:13:05 +0100 Subject: [PATCH] Add examples, generate docs and fix acc tests (#386) --- docs/data-sources/sqlserverflex_instance.md | 7 +++++ docs/resources/sqlserverflex_instance.md | 27 ++++++++++++++++--- .../data-source.tf | 4 +++ .../resource.tf | 16 +++++++++++ .../sqlserverflex/instance/resource.go | 4 ++- .../sqlserverflex/sqlserverflex_acc_test.go | 6 +++-- 6 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 examples/data-sources/stackit_sqlserverflex_instance/data-source.tf create mode 100644 examples/resources/stackit_sqlserverflex_instance/resource.tf diff --git a/docs/data-sources/sqlserverflex_instance.md b/docs/data-sources/sqlserverflex_instance.md index 118c5d79..3b222c5b 100644 --- a/docs/data-sources/sqlserverflex_instance.md +++ b/docs/data-sources/sqlserverflex_instance.md @@ -10,7 +10,14 @@ description: |- MongoDB Flex instance data source schema. Must have a `region` specified in the provider configuration. +## Example Usage +```terraform +data "stackit_sqlserverflex_instance" "example" { + project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + instance_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +} +``` ## Schema diff --git a/docs/resources/sqlserverflex_instance.md b/docs/resources/sqlserverflex_instance.md index 6e4d0984..5e1e519f 100644 --- a/docs/resources/sqlserverflex_instance.md +++ b/docs/resources/sqlserverflex_instance.md @@ -3,14 +3,33 @@ page_title: "stackit_sqlserverflex_instance Resource - stackit" subcategory: "" description: |- - SQL Server Flex instance resource schema. Must have a region specified in the provider configuration. + SQLServer Flex instance resource schema. Must have a region specified in the provider configuration. --- # stackit_sqlserverflex_instance (Resource) -SQL Server Flex instance resource schema. Must have a `region` specified in the provider configuration. +SQLServer Flex instance resource schema. Must have a `region` specified in the provider configuration. +## Example Usage +```terraform +resource "stackit_sqlserverflex_instance" "example" { + project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + name = "example-instance" + acl = ["XXX.XXX.XXX.X/XX", "XX.XXX.XX.X/XX"] + backup_schedule = "00 00 * * *" + flavor = { + cpu = 4 + ram = 16 + } + replicas = 3 + storage = { + class = "class" + size = 5 + } + version = 2022 +} +``` ## Schema @@ -23,7 +42,7 @@ SQL Server Flex instance resource schema. Must have a `region` specified in the ### Optional -- `acl` (List of String) The Access Control List (ACL) for the SQL Server Flex instance. +- `acl` (List of String) The Access Control List (ACL) for the SQLServer Flex instance. - `backup_schedule` (String) The backup schedule. Should follow the cron scheduling system format (e.g. "0 0 * * *") - `options` (Attributes) (see [below for nested schema](#nestedatt--options)) - `storage` (Attributes) (see [below for nested schema](#nestedatt--storage)) @@ -32,7 +51,7 @@ SQL Server Flex instance resource schema. Must have a `region` specified in the ### Read-Only - `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`instance_id`". -- `instance_id` (String) ID of the SQL Server Flex instance. +- `instance_id` (String) ID of the SQLServer Flex instance. - `replicas` (Number) diff --git a/examples/data-sources/stackit_sqlserverflex_instance/data-source.tf b/examples/data-sources/stackit_sqlserverflex_instance/data-source.tf new file mode 100644 index 00000000..f31899f2 --- /dev/null +++ b/examples/data-sources/stackit_sqlserverflex_instance/data-source.tf @@ -0,0 +1,4 @@ +data "stackit_sqlserverflex_instance" "example" { + project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + instance_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +} diff --git a/examples/resources/stackit_sqlserverflex_instance/resource.tf b/examples/resources/stackit_sqlserverflex_instance/resource.tf new file mode 100644 index 00000000..28de30a5 --- /dev/null +++ b/examples/resources/stackit_sqlserverflex_instance/resource.tf @@ -0,0 +1,16 @@ +resource "stackit_sqlserverflex_instance" "example" { + project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + name = "example-instance" + acl = ["XXX.XXX.XXX.X/XX", "XX.XXX.XX.X/XX"] + backup_schedule = "00 00 * * *" + flavor = { + cpu = 4 + ram = 16 + } + replicas = 3 + storage = { + class = "class" + size = 5 + } + version = 2022 +} diff --git a/stackit/internal/services/sqlserverflex/instance/resource.go b/stackit/internal/services/sqlserverflex/instance/resource.go index 69129f1e..7b6009e0 100644 --- a/stackit/internal/services/sqlserverflex/instance/resource.go +++ b/stackit/internal/services/sqlserverflex/instance/resource.go @@ -695,7 +695,9 @@ func mapFields(ctx context.Context, resp *sqlserverflex.GetInstanceResponse, mod edition := options.Edition editionValue, ok := (*instance.Options)["edition"] if ok { - edition = types.StringValue(editionValue) + // API returns edition in uppercase but validates if it is lowercase + // This is a workaround that should be removed when the API is fixed + edition = types.StringValue(strings.ToLower(editionValue)) } optionsValues = map[string]attr.Value{ diff --git a/stackit/internal/services/sqlserverflex/sqlserverflex_acc_test.go b/stackit/internal/services/sqlserverflex/sqlserverflex_acc_test.go index f6ce798b..c630963e 100644 --- a/stackit/internal/services/sqlserverflex/sqlserverflex_acc_test.go +++ b/stackit/internal/services/sqlserverflex/sqlserverflex_acc_test.go @@ -30,7 +30,7 @@ var instanceResource = map[string]string{ "storage_size": "40", "version": "2022", "replicas": "1", - "options_edition": "developer", + "options_edition": "standard", "options_retention_days": "64", "flavor_id": "4.16-Single", "backup_schedule": "00 6 * * *", @@ -201,7 +201,9 @@ func testAccChecksqlserverflexDestroy(s *terraform.State) error { var client *sqlserverflex.APIClient var err error if testutil.SQLServerFlexCustomEndpoint == "" { - client, err = sqlserverflex.NewAPIClient() + client, err = sqlserverflex.NewAPIClient( + config.WithRegion("eu01"), + ) } else { client, err = sqlserverflex.NewAPIClient( config.WithEndpoint(testutil.SQLServerFlexCustomEndpoint),