Skip to content

Commit 39c52f4

Browse files
authored
feat(observability): add description to credential resource (#992)
relates to STACKITTPR-333, #974
1 parent 4b46119 commit 39c52f4

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

docs/resources/observability_credential.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Observability credential resource schema. Must have a `region` specified in the
1616
resource "stackit_observability_credential" "example" {
1717
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
1818
instance_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
19+
description = "Description of the credential."
1920
}
2021
```
2122

@@ -27,6 +28,10 @@ resource "stackit_observability_credential" "example" {
2728
- `instance_id` (String) The Observability Instance ID the credential belongs to.
2829
- `project_id` (String) STACKIT project ID to which the credential is associated.
2930

31+
### Optional
32+
33+
- `description` (String) A description of the credential.
34+
3035
### Read-Only
3136

3237
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`instance_id`,`username`".
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
resource "stackit_observability_credential" "example" {
22
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
33
instance_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
4+
description = "Description of the credential."
45
}

stackit/internal/services/observability/credential/resource.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ var (
2929
)
3030

3131
type Model struct {
32-
Id types.String `tfsdk:"id"`
33-
ProjectId types.String `tfsdk:"project_id"`
34-
InstanceId types.String `tfsdk:"instance_id"`
35-
Username types.String `tfsdk:"username"`
36-
Password types.String `tfsdk:"password"`
32+
Id types.String `tfsdk:"id"`
33+
ProjectId types.String `tfsdk:"project_id"`
34+
InstanceId types.String `tfsdk:"instance_id"`
35+
Description types.String `tfsdk:"description"`
36+
Username types.String `tfsdk:"username"`
37+
Password types.String `tfsdk:"password"`
3738
}
3839

3940
// NewCredentialResource is a helper function to simplify the provider implementation.
@@ -97,6 +98,13 @@ func (r *credentialResource) Schema(_ context.Context, _ resource.SchemaRequest,
9798
stringplanmodifier.RequiresReplace(),
9899
},
99100
},
101+
"description": schema.StringAttribute{
102+
Description: "A description of the credential.",
103+
Optional: true,
104+
PlanModifiers: []planmodifier.String{
105+
stringplanmodifier.RequiresReplace(),
106+
},
107+
},
100108
"username": schema.StringAttribute{
101109
Description: "Credential username",
102110
Computed: true,
@@ -130,8 +138,13 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ
130138

131139
projectId := model.ProjectId.ValueString()
132140
instanceId := model.InstanceId.ValueString()
141+
description := model.Description.ValueStringPointer()
133142

134-
got, err := r.client.CreateCredentials(ctx, instanceId, projectId).Execute()
143+
got, err := r.client.CreateCredentials(ctx, instanceId, projectId).CreateCredentialsPayload(
144+
observability.CreateCredentialsPayload{
145+
Description: description,
146+
},
147+
).Execute()
135148
if err != nil {
136149
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err))
137150
return

stackit/internal/services/observability/observability_acc_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ var testConfigVarsMax = config.Variables{
104104
"match": config.StringVariable("alert1"),
105105
"match_regex": config.StringVariable("alert1"),
106106
"matchers": config.StringVariable("instance =~ \".*\""),
107+
// credential
108+
"credential_description": config.StringVariable("This is a description for the test credential."),
107109
// logalertgroup
108110
"logalertgroup_for_time": config.StringVariable("60s"),
109111
"logalertgroup_label": config.StringVariable("label1"),
@@ -194,6 +196,7 @@ func TestAccResourceMin(t *testing.T) {
194196
"stackit_observability_instance.instance", "instance_id",
195197
"stackit_observability_credential.credential", "instance_id",
196198
),
199+
resource.TestCheckNoResourceAttr("stackit_observability_credential.credential", "description"),
197200
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "username"),
198201
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "password"),
199202

@@ -436,6 +439,7 @@ func TestAccResourceMin(t *testing.T) {
436439
"stackit_observability_instance.instance", "instance_id",
437440
"stackit_observability_credential.credential", "instance_id",
438441
),
442+
resource.TestCheckNoResourceAttr("stackit_observability_credential.credential", "description"),
439443
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "username"),
440444
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "password"),
441445

@@ -575,6 +579,7 @@ func TestAccResourceMax(t *testing.T) {
575579
"stackit_observability_instance.instance", "instance_id",
576580
"stackit_observability_credential.credential", "instance_id",
577581
),
582+
resource.TestCheckResourceAttr("stackit_observability_credential.credential", "description", testutil.ConvertConfigVariable(testConfigVarsMax["credential_description"])),
578583
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "username"),
579584
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "password"),
580585

@@ -966,6 +971,7 @@ func TestAccResourceMax(t *testing.T) {
966971
"stackit_observability_instance.instance", "instance_id",
967972
"stackit_observability_credential.credential", "instance_id",
968973
),
974+
resource.TestCheckResourceAttr("stackit_observability_credential.credential", "description", testutil.ConvertConfigVariable(testConfigVarsMax["credential_description"])),
969975
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "username"),
970976
resource.TestCheckResourceAttrSet("stackit_observability_credential.credential", "password"),
971977

stackit/internal/services/observability/testdata/resource-max.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ variable "match" {}
4747
variable "match_regex" {}
4848
variable "matchers" {}
4949

50+
variable "credential_description" {}
51+
5052
variable "logalertgroup_name" {}
5153
variable "logalertgroup_alert" {}
5254
variable "logalertgroup_expression" {}
@@ -91,6 +93,7 @@ resource "stackit_observability_alertgroup" "alertgroup" {
9193
resource "stackit_observability_credential" "credential" {
9294
project_id = var.project_id
9395
instance_id = stackit_observability_instance.instance.instance_id
96+
description = var.credential_description
9497
}
9598

9699
resource "stackit_observability_instance" "instance" {

0 commit comments

Comments
 (0)