Skip to content

Commit 00c4c1e

Browse files
suedaozkayaSueeda OezkayaGokceGK
authored
feat(telemetrylink): add enabled field to telemetry link resource and … (#1698)
* feat(telemetrylink): add enable field to telemetry link resource and datasource * make generate docs run * address review comments on testing enabled field * fix: remove duplicated comment --------- Co-authored-by: Sueeda Oezkaya <sueeda.oezkaya@digits.schwarz> Co-authored-by: Gökce Gök Klingel <161626272+GokceGK@users.noreply.github.com>
1 parent 951412a commit 00c4c1e

8 files changed

Lines changed: 144 additions & 1 deletion

File tree

docs/data-sources/telemetrylink.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ data "stackit_telemetrylink" "link" {
3737
- `create_time` (String) The time the Telemetry Link was created.
3838
- `description` (String) The description of the Telemetry Link resource.
3939
- `display_name` (String) The displayed name of the Telemetry Link resource.
40+
- `enabled` (Boolean) Whether the Telemetry Link is enabled or not.
4041
- `id` (String) Terraform's internal resource identifier. It is structured as "`resource_type`, `resource_id`,`region`".
4142
- `status` (String, Deprecated) The status of the TelemetryLink, possible values: Possible values are: `active`, `inactive`, `failed`, `reconciling`, `deleting`.
4243
- `telemetry_router_id` (String) The Telemetry Router ID.

docs/resources/telemetrylink.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ resource "stackit_telemetrylink" "link2" {
5454
- `access_token_wo` (String, Sensitive, [Write-only](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments)) The access token of the Telemetry Router instance. Write-only - never stored in state and never returned by the API. To rotate the token, update this value AND increment `access_token_wo_version`. Changing this field alone will NOT trigger an update.
5555
- `access_token_wo_version` (Number) User-managed rotation counter for `access_token_wo`. Must be incremented every time `access_token_wo` is changed. Terraform diffs this field to detect token rotations - changing `access_token_wo` alone will NOT trigger an update because it is write-only and never stored in state.
5656
- `description` (String) The description of the Telemetry Link resource.
57+
- `enabled` (Boolean) Whether the Telemetry Link is enabled or not.
5758
- `region` (String) STACKIT region name the resource is located in. If not defined, the provider region is used.
5859

5960
### Read-Only

stackit/internal/services/telemetrylink/link/datasource.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type DataSourceModel struct {
3939
TelemetryRouterID types.String `tfsdk:"telemetry_router_id"`
4040
CreateTime types.String `tfsdk:"create_time"`
4141
Status types.String `tfsdk:"status"`
42+
Enabled types.Bool `tfsdk:"enabled"`
4243
}
4344

4445
type telemetryLinkDataSource struct {
@@ -115,6 +116,10 @@ func (d *telemetryLinkDataSource) Schema(_ context.Context, _ datasource.SchemaR
115116
DeprecationMessage: "status is deprecated and will be removed after February 2027.",
116117
Computed: true,
117118
},
119+
"enabled": schema.BoolAttribute{
120+
Description: schemaDescriptions["enabled"],
121+
Computed: true,
122+
},
118123
},
119124
}
120125
}
@@ -197,6 +202,7 @@ func mapDataSourceFields(_ context.Context, link *telemetrylink.TelemetryLinkRes
197202
model.TelemetryRouterID = types.StringValue(link.TelemetryRouterId)
198203
model.CreateTime = types.StringValue(link.CreateTime.Format(time.RFC3339))
199204
model.Status = types.StringValue(string(link.Status))
205+
model.Enabled = types.BoolValue(link.Enabled)
200206

201207
return nil
202208
}

stackit/internal/services/telemetrylink/link/datasource_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func fixtureDataSourceModel(mods ...func(model *DataSourceModel)) *DataSourceMod
2121
TelemetryRouterID: types.StringValue("tlmrid"),
2222
CreateTime: types.StringValue(testTime.Format(time.RFC3339)),
2323
Status: types.StringValue("active"),
24+
Enabled: types.BoolValue(true),
2425
}
2526
for _, mod := range mods {
2627
mod(model)

stackit/internal/services/telemetrylink/link/resource.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/hashicorp/terraform-plugin-framework/path"
1515
"github.com/hashicorp/terraform-plugin-framework/resource"
1616
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
17+
"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
1718
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
1819
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
1920
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
@@ -68,6 +69,7 @@ var schemaDescriptions = map[string]string{
6869
"The status of the TelemetryLink, possible values: %s",
6970
tfutils.FormatPossibleValues(sdkUtils.EnumSliceToStringSlice(telemetrylink.AllowedTelemetryLinkResponseStatusEnumValues)...),
7071
),
72+
"enabled": "Whether the Telemetry Link is enabled or not.",
7173
}
7274

7375
type Model struct {
@@ -83,6 +85,7 @@ type Model struct {
8385
AccessTokenWoVersion types.Int64 `tfsdk:"access_token_wo_version"`
8486
CreateTime types.String `tfsdk:"create_time"`
8587
Status types.String `tfsdk:"status"`
88+
Enabled types.Bool `tfsdk:"enabled"`
8689
}
8790

8891
type telemetryLinkResource struct {
@@ -250,6 +253,12 @@ func (r *telemetryLinkResource) Schema(_ context.Context, _ resource.SchemaReque
250253
DeprecationMessage: "status is deprecated and will be removed after February 2027.",
251254
Computed: true,
252255
},
256+
"enabled": schema.BoolAttribute{
257+
Description: schemaDescriptions["enabled"],
258+
Optional: true,
259+
Computed: true,
260+
Default: booldefault.StaticBool(true),
261+
},
253262
},
254263
}
255264
}
@@ -741,6 +750,7 @@ func toCreateOrUpdateOrganizationTelemetryLinkPayload(planModel, configModel *Mo
741750
Description: planModel.Description.ValueStringPointer(),
742751
TelemetryRouterId: planModel.TelemetryRouterID.ValueString(),
743752
AccessToken: getAccessTokenForCreate(planModel, configModel),
753+
Enabled: planModel.Enabled.ValueBool(),
744754
}, nil
745755
}
746756

@@ -757,6 +767,7 @@ func toCreateOrUpdateFolderTelemetryLinkPayload(planModel, configModel *Model) (
757767
Description: planModel.Description.ValueStringPointer(),
758768
TelemetryRouterId: planModel.TelemetryRouterID.ValueString(),
759769
AccessToken: getAccessTokenForCreate(planModel, configModel),
770+
Enabled: planModel.Enabled.ValueBool(),
760771
}, nil
761772
}
762773

@@ -773,6 +784,7 @@ func toCreateOrUpdateProjectTelemetryLinkPayload(planModel, configModel *Model)
773784
Description: planModel.Description.ValueStringPointer(),
774785
TelemetryRouterId: planModel.TelemetryRouterID.ValueString(),
775786
AccessToken: getAccessTokenForCreate(planModel, configModel),
787+
Enabled: planModel.Enabled.ValueBool(),
776788
}, nil
777789
}
778790

@@ -794,6 +806,7 @@ func toPartialUpdateOrganizationTelemetryLinkPayload(planModel, stateModel, conf
794806
Description: new(planModel.Description.ValueString()),
795807
TelemetryRouterId: planModel.TelemetryRouterID.ValueStringPointer(),
796808
AccessToken: getAccessTokenForUpdate(planModel, stateModel, configModel),
809+
Enabled: planModel.Enabled.ValueBoolPointer(),
797810
}, nil
798811
}
799812

@@ -813,6 +826,7 @@ func toPartialUpdateFolderTelemetryLinkPayload(planModel, stateModel, configMode
813826
Description: new(planModel.Description.ValueString()),
814827
TelemetryRouterId: planModel.TelemetryRouterID.ValueStringPointer(),
815828
AccessToken: getAccessTokenForUpdate(planModel, stateModel, configModel),
829+
Enabled: planModel.Enabled.ValueBoolPointer(),
816830
}, nil
817831
}
818832

@@ -832,6 +846,7 @@ func toPartialUpdateProjectTelemetryLinkPayload(planModel, stateModel, configMod
832846
Description: new(planModel.Description.ValueString()),
833847
TelemetryRouterId: planModel.TelemetryRouterID.ValueStringPointer(),
834848
AccessToken: getAccessTokenForUpdate(planModel, stateModel, configModel),
849+
Enabled: planModel.Enabled.ValueBoolPointer(),
835850
}, nil
836851
}
837852

@@ -850,6 +865,7 @@ func mapFields(_ context.Context, link *telemetrylink.TelemetryLinkResponse, mod
850865
model.TelemetryRouterID = types.StringValue(link.TelemetryRouterId)
851866
model.CreateTime = types.StringValue(link.CreateTime.Format(time.RFC3339))
852867
model.Status = types.StringValue(string(link.Status))
868+
model.Enabled = types.BoolValue(link.Enabled)
853869

854870
return nil
855871
}

0 commit comments

Comments
 (0)