Skip to content

Commit 10dc583

Browse files
authored
fix(observabilty): Add deprecation for grafana_initial_admin_user and grafana_initial_admin_password (#1192)
Revert commit f9f2829 Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de>
1 parent 62962d0 commit 10dc583

5 files changed

Lines changed: 61 additions & 11 deletions

File tree

docs/data-sources/observability_instance.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ data "stackit_observability_instance" "example" {
3434
- `alerting_url` (String) Specifies Alerting URL.
3535
- `dashboard_url` (String) Specifies Observability instance dashboard URL.
3636
- `grafana_admin_enabled` (Boolean) If true, a default Grafana server admin user was created.
37+
- `grafana_initial_admin_password` (String, Sensitive, Deprecated) Specifies an initial Grafana admin password.
38+
- `grafana_initial_admin_user` (String, Deprecated) Specifies an initial Grafana admin username.
3739
- `grafana_public_read_access` (Boolean) If true, anyone can access Grafana dashboards without logging in.
3840
- `grafana_url` (String) Specifies Grafana URL.
3941
- `id` (String) Terraform's internal data source. ID. It is structured as "`project_id`,`instance_id`".

docs/resources/observability_instance.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ import {
5757

5858
- `alerting_url` (String) Specifies Alerting URL.
5959
- `dashboard_url` (String) Specifies Observability instance dashboard URL.
60+
- `grafana_initial_admin_password` (String, Sensitive, Deprecated) Specifies an initial Grafana admin password.
61+
- `grafana_initial_admin_user` (String, Deprecated) Specifies an initial Grafana admin username.
6062
- `grafana_public_read_access` (Boolean) If true, anyone can access Grafana dashboards without logging in.
6163
- `grafana_url` (String) Specifies Grafana URL.
6264
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`instance_id`".

stackit/internal/services/observability/instance/datasource.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ func (d *instanceDataSource) Schema(_ context.Context, _ datasource.SchemaReques
123123
Description: "Specifies Grafana URL.",
124124
Computed: true,
125125
},
126+
"grafana_initial_admin_user": schema.StringAttribute{
127+
DeprecationMessage: "This attribute is deprecated and will be removed on July 5, 2026. Use `grafana_admin_enabled` instead.",
128+
Description: "Specifies an initial Grafana admin username.",
129+
Computed: true,
130+
},
131+
"grafana_initial_admin_password": schema.StringAttribute{
132+
DeprecationMessage: "This attribute is deprecated and will be removed on July 5, 2026. Use `grafana_admin_enabled` instead.",
133+
Description: "Specifies an initial Grafana admin password.",
134+
Computed: true,
135+
Sensitive: true,
136+
},
126137
"grafana_admin_enabled": schema.BoolAttribute{
127138
Description: "If true, a default Grafana server admin user was created.",
128139
Computed: true,

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

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,21 @@ var (
5252
)
5353

5454
type Model struct {
55-
Id types.String `tfsdk:"id"` // needed by TF
56-
ProjectId types.String `tfsdk:"project_id"`
57-
InstanceId types.String `tfsdk:"instance_id"`
58-
Name types.String `tfsdk:"name"`
59-
PlanName types.String `tfsdk:"plan_name"`
60-
PlanId types.String `tfsdk:"plan_id"`
61-
Parameters types.Map `tfsdk:"parameters"`
62-
DashboardURL types.String `tfsdk:"dashboard_url"`
63-
IsUpdatable types.Bool `tfsdk:"is_updatable"`
64-
GrafanaURL types.String `tfsdk:"grafana_url"`
65-
GrafanaPublicReadAccess types.Bool `tfsdk:"grafana_public_read_access"`
55+
Id types.String `tfsdk:"id"` // needed by TF
56+
ProjectId types.String `tfsdk:"project_id"`
57+
InstanceId types.String `tfsdk:"instance_id"`
58+
Name types.String `tfsdk:"name"`
59+
PlanName types.String `tfsdk:"plan_name"`
60+
PlanId types.String `tfsdk:"plan_id"`
61+
Parameters types.Map `tfsdk:"parameters"`
62+
DashboardURL types.String `tfsdk:"dashboard_url"`
63+
IsUpdatable types.Bool `tfsdk:"is_updatable"`
64+
GrafanaURL types.String `tfsdk:"grafana_url"`
65+
GrafanaPublicReadAccess types.Bool `tfsdk:"grafana_public_read_access"`
66+
// Deprecated: GrafanaInitialAdminPassword is deprecated and will be removed after 5th July 2026. Use GrafanaAdminEnabled instead.
67+
GrafanaInitialAdminPassword types.String `tfsdk:"grafana_initial_admin_password"`
68+
// Deprecated: GrafanaInitialAdminUser is deprecated and will be removed after 5th July 2026. Use GrafanaAdminEnabled instead.
69+
GrafanaInitialAdminUser types.String `tfsdk:"grafana_initial_admin_user"`
6670
GrafanaAdminEnabled types.Bool `tfsdk:"grafana_admin_enabled"`
6771
MetricsRetentionDays types.Int64 `tfsdk:"metrics_retention_days"`
6872
MetricsRetentionDays5mDownsampling types.Int64 `tfsdk:"metrics_retention_days_5m_downsampling"`
@@ -499,6 +503,23 @@ func (r *instanceResource) Schema(_ context.Context, _ resource.SchemaRequest, r
499503
stringplanmodifier.UseStateForUnknown(),
500504
},
501505
},
506+
"grafana_initial_admin_user": schema.StringAttribute{
507+
DeprecationMessage: "This attribute is deprecated and will be removed on July 5, 2026. Use `grafana_admin_enabled` instead.",
508+
Description: "Specifies an initial Grafana admin username.",
509+
Computed: true,
510+
PlanModifiers: []planmodifier.String{
511+
stringplanmodifier.UseStateForUnknown(),
512+
},
513+
},
514+
"grafana_initial_admin_password": schema.StringAttribute{
515+
DeprecationMessage: "This attribute is deprecated and will be removed on July 5, 2026. Use `grafana_admin_enabled` instead.",
516+
Description: "Specifies an initial Grafana admin password.",
517+
Computed: true,
518+
Sensitive: true,
519+
PlanModifiers: []planmodifier.String{
520+
stringplanmodifier.UseStateForUnknown(),
521+
},
522+
},
502523
"grafana_admin_enabled": schema.BoolAttribute{
503524
Description: "If true, a default Grafana server admin user is created. It's recommended to set this to false and use STACKIT SSO (Owner or Observability Grafana Server Admin role) instead. It is still possible to manually create a new Grafana admin user via the Grafana UI later.",
504525
Optional: true,
@@ -1548,6 +1569,10 @@ func mapFields(ctx context.Context, r *observability.GetInstanceResponse, model
15481569
i := *r.Instance
15491570
model.GrafanaURL = types.StringPointerValue(i.GrafanaUrl)
15501571
model.GrafanaPublicReadAccess = types.BoolPointerValue(i.GrafanaPublicReadAccess)
1572+
//nolint:staticcheck // SA1019: This field deprecated but needs to be supported. It is removed on 5th July 2026.
1573+
model.GrafanaInitialAdminPassword = types.StringPointerValue(i.GrafanaAdminPassword)
1574+
//nolint:staticcheck // SA1019: This field deprecated but needs to be supported. It is removed on 5th July 2026.
1575+
model.GrafanaInitialAdminUser = types.StringPointerValue(i.GrafanaAdminUser)
15511576
model.MetricsURL = types.StringPointerValue(i.MetricsUrl)
15521577
model.MetricsPushURL = types.StringPointerValue(i.PushMetricsUrl)
15531578
model.TargetsURL = types.StringPointerValue(i.TargetsUrl)

stackit/internal/services/observability/observability_acc_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ func TestAccResourceMin(t *testing.T) {
169169
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "is_updatable"),
170170
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_public_read_access"),
171171
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_url"),
172+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_user"),
173+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_password"),
172174
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_url"),
173175
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_push_url"),
174176
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "targets_url"),
@@ -412,6 +414,8 @@ func TestAccResourceMin(t *testing.T) {
412414
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "is_updatable"),
413415
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_public_read_access"),
414416
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_url"),
417+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_user"),
418+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_password"),
415419
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_url"),
416420
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_push_url"),
417421
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "targets_url"),
@@ -492,6 +496,8 @@ func TestAccResourceMax(t *testing.T) {
492496
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "is_updatable"),
493497
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_public_read_access"),
494498
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_url"),
499+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_user"),
500+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_password"),
495501
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_url"),
496502
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_push_url"),
497503
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "targets_url"),
@@ -661,6 +667,8 @@ func TestAccResourceMax(t *testing.T) {
661667
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "is_updatable"),
662668
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "grafana_public_read_access"),
663669
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "grafana_url"),
670+
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "grafana_initial_admin_user"),
671+
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "grafana_initial_admin_password"),
664672
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "metrics_url"),
665673
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "metrics_push_url"),
666674
resource.TestCheckResourceAttrSet("data.stackit_observability_instance.instance", "targets_url"),
@@ -888,6 +896,8 @@ func TestAccResourceMax(t *testing.T) {
888896
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "is_updatable"),
889897
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_public_read_access"),
890898
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_url"),
899+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_user"),
900+
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "grafana_initial_admin_password"),
891901
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_url"),
892902
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "metrics_push_url"),
893903
resource.TestCheckResourceAttrSet("stackit_observability_instance.instance", "targets_url"),

0 commit comments

Comments
 (0)