From a42b1d6b31fd56da1c0b2838884b0e03893fc6a8 Mon Sep 17 00:00:00 2001 From: "Marcel S. Henselin" Date: Fri, 13 Feb 2026 15:54:08 +0100 Subject: [PATCH 1/2] fix: fix wrong order of params --- cmd/cmd/build/templates/resource_scaffold.gotmpl | 13 +++++++++---- .../services/postgresflexalpha/database/resource.go | 6 +++--- .../services/sqlserverflexbeta/user/resource.go | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/cmd/cmd/build/templates/resource_scaffold.gotmpl b/cmd/cmd/build/templates/resource_scaffold.gotmpl index 8b612f9c..3fafc10c 100644 --- a/cmd/cmd/build/templates/resource_scaffold.gotmpl +++ b/cmd/cmd/build/templates/resource_scaffold.gotmpl @@ -39,11 +39,14 @@ type {{.NameCamel}}Resource struct{ providerData core.ProviderData } +// resourceModel represents the Terraform resource state +type resourceModel = {{.PackageName}}.{{.NamePascal}}Model + type {{.NamePascal}}ResourceIdentityModel struct { ProjectID types.String `tfsdk:"project_id"` Region types.String `tfsdk:"region"` // TODO: implement further needed parts - {{.NamePascal}}ID types.String `tfsdk:"instance_id"` + {{.NamePascal}}ID types.String `tfsdk:"{{.NameSnake}}_id"` } // Metadata defines terraform resource name @@ -51,6 +54,9 @@ func (r *{{.NameCamel}}Resource) Metadata(ctx context.Context, req resource.Meta resp.TypeName = req.ProviderTypeName + "_{{.PackageName}}_{{.NameSnake}}" } +//go:embed planModifiers.yaml +var modifiersFileByte []byte + // Schema loads the schema from generated files and adds plan modifiers func (r *{{.NameCamel}}Resource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { schema = {{.PackageName}}ResGen.{{.NamePascal}}ResourceSchema(ctx) @@ -82,6 +88,7 @@ func (r *instanceResource) IdentitySchema(_ context.Context, _ resource.Identity "instance_id": identityschema.StringAttribute{ RequiredForImport: true, // can be defaulted by the provider configuration }, + // TODO: implement remaining schema parts }, } } @@ -160,9 +167,6 @@ func (r *{{.NameCamel}}Resource) ModifyPlan( } } -//go:embed planModifiers.yaml -var modifiersFileByte []byte - // Create creates a new resource func (r *{{.NameCamel}}Resource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { var data {{.PackageName}}ResGen.{{.NamePascal}}Model @@ -180,6 +184,7 @@ func (r *{{.NameCamel}}Resource) Create(ctx context.Context, req resource.Create region := data.Region.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "region", region) + // TODO: add remaining fields // TODO: Create API call logic /* diff --git a/stackit/internal/services/postgresflexalpha/database/resource.go b/stackit/internal/services/postgresflexalpha/database/resource.go index c42744cd..fbc4f6b1 100644 --- a/stackit/internal/services/postgresflexalpha/database/resource.go +++ b/stackit/internal/services/postgresflexalpha/database/resource.go @@ -290,7 +290,7 @@ func (r *databaseResource) Read( ctx = core.InitProviderContext(ctx) - projectId, instanceId, region, databaseId, errExt := r.extractIdentityData(model, identityData) + projectId, region, instanceId, databaseId, errExt := r.extractIdentityData(model, identityData) if errExt != nil { core.LogAndAddError( ctx, @@ -376,7 +376,7 @@ func (r *databaseResource) Update( ctx = core.InitProviderContext(ctx) - projectId, instanceId, region, databaseId64, errExt := r.extractIdentityData(model, identityData) + projectId, region, instanceId, databaseId64, errExt := r.extractIdentityData(model, identityData) if errExt != nil { core.LogAndAddError( ctx, @@ -502,7 +502,7 @@ func (r *databaseResource) Delete( ctx = core.InitProviderContext(ctx) - projectId, instanceId, region, databaseId64, errExt := r.extractIdentityData(model, identityData) + projectId, region, instanceId, databaseId64, errExt := r.extractIdentityData(model, identityData) if errExt != nil { core.LogAndAddError( ctx, diff --git a/stackit/internal/services/sqlserverflexbeta/user/resource.go b/stackit/internal/services/sqlserverflexbeta/user/resource.go index 27b198e6..a5de43ea 100644 --- a/stackit/internal/services/sqlserverflexbeta/user/resource.go +++ b/stackit/internal/services/sqlserverflexbeta/user/resource.go @@ -488,7 +488,7 @@ func (r *userResource) ImportState( resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("instance_id"), idParts[2])...) resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("user_id"), userId)...) - tflog.Info(ctx, "Postgres Flex user state imported") + tflog.Info(ctx, "SQLServer Flex user state imported") return } -- 2.49.1 From 8dae6333cb346b46338eae84cb4a7dc47aef1b32 Mon Sep 17 00:00:00 2001 From: "Marcel S. Henselin" Date: Fri, 13 Feb 2026 16:48:07 +0100 Subject: [PATCH 2/2] fix: fix wrong order of params --- .../services/postgresflexalpha/database/datasource.go | 1 - .../services/postgresflexalpha/database/resource.go | 8 +++----- .../services/postgresflexalpha/user/mapper_test.go | 1 - .../internal/services/postgresflexalpha/user/resource.go | 3 --- .../services/sqlserverflexalpha/database/datasource.go | 1 - .../services/sqlserverflexalpha/database/resource.go | 2 -- .../services/sqlserverflexalpha/instance/functions.go | 1 - .../services/sqlserverflexalpha/instance/resource.go | 1 - .../services/sqlserverflexalpha/user/mapper_test.go | 1 - .../internal/services/sqlserverflexalpha/user/resource.go | 2 -- .../services/sqlserverflexbeta/database/resource.go | 1 - .../services/sqlserverflexbeta/instance/functions.go | 2 -- .../services/sqlserverflexbeta/user/mapper_test.go | 1 - .../internal/services/sqlserverflexbeta/user/resource.go | 2 -- stackit/internal/wait/postgresflexalpha/wait.go | 6 +++++- 15 files changed, 8 insertions(+), 25 deletions(-) diff --git a/stackit/internal/services/postgresflexalpha/database/datasource.go b/stackit/internal/services/postgresflexalpha/database/datasource.go index f9e3a447..ead08493 100644 --- a/stackit/internal/services/postgresflexalpha/database/datasource.go +++ b/stackit/internal/services/postgresflexalpha/database/datasource.go @@ -73,7 +73,6 @@ func (r *databaseDataSource) Configure( // Schema defines the schema for the data source. func (r *databaseDataSource) Schema(ctx context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) { - s := postgresflexalpha2.DatabaseDataSourceSchema(ctx) s.Attributes["id"] = schema.StringAttribute{ Description: "Terraform's internal resource ID. It is structured as \\\"`project_id`,`region`,`instance_id`," + diff --git a/stackit/internal/services/postgresflexalpha/database/resource.go b/stackit/internal/services/postgresflexalpha/database/resource.go index fbc4f6b1..d88b8c8d 100644 --- a/stackit/internal/services/postgresflexalpha/database/resource.go +++ b/stackit/internal/services/postgresflexalpha/database/resource.go @@ -234,7 +234,7 @@ func (r *databaseResource) Create( return } - database, err := postgresflexalpha3.GetDatabaseByIdWaitHandler(ctx, r.client, projectId, region, instanceId, databaseId). + database, err := postgresflexalpha3.GetDatabaseByIdWaitHandler(ctx, r.client, projectId, instanceId, region, databaseId). SetTimeout(15 * time.Minute). SetSleepBeforeWait(15 * time.Second). WaitWithContext(ctx) @@ -305,7 +305,7 @@ func (r *databaseResource) Read( ctx = tflog.SetField(ctx, "region", region) ctx = tflog.SetField(ctx, "database_id", databaseId) - databaseResp, err := postgresflexalpha3.GetDatabaseByIdWaitHandler(ctx, r.client, projectId, region, instanceId, databaseId). + databaseResp, err := postgresflexalpha3.GetDatabaseByIdWaitHandler(ctx, r.client, projectId, instanceId, region, databaseId). SetTimeout(15 * time.Minute). SetSleepBeforeWait(15 * time.Second). WaitWithContext(ctx) @@ -437,7 +437,7 @@ func (r *databaseResource) Update( ctx = core.LogResponse(ctx) - databaseResp, err := postgresflexalpha3.GetDatabaseByIdWaitHandler(ctx, r.client, projectId, region, instanceId, databaseId64). + databaseResp, err := postgresflexalpha3.GetDatabaseByIdWaitHandler(ctx, r.client, projectId, instanceId, region, databaseId64). SetTimeout(15 * time.Minute). SetSleepBeforeWait(15 * time.Second). WaitWithContext(ctx) @@ -540,11 +540,9 @@ func (r *databaseResource) ImportState( req resource.ImportStateRequest, resp *resource.ImportStateResponse, ) { - ctx = core.InitProviderContext(ctx) if req.ID != "" { - idParts := strings.Split(req.ID, core.Separator) if len(idParts) != 4 || idParts[0] == "" || idParts[1] == "" || idParts[2] == "" || idParts[3] == "" { diff --git a/stackit/internal/services/postgresflexalpha/user/mapper_test.go b/stackit/internal/services/postgresflexalpha/user/mapper_test.go index 06ba3d50..1a8c3f99 100644 --- a/stackit/internal/services/postgresflexalpha/user/mapper_test.go +++ b/stackit/internal/services/postgresflexalpha/user/mapper_test.go @@ -52,7 +52,6 @@ func TestMapDataSourceFields(t *testing.T) { }, testRegion, dataSourceModel{ - UserModel: data.UserModel{ Id: types.Int64Value(1), UserId: types.Int64Value(1), diff --git a/stackit/internal/services/postgresflexalpha/user/resource.go b/stackit/internal/services/postgresflexalpha/user/resource.go index 6c7e3979..4adbaff0 100644 --- a/stackit/internal/services/postgresflexalpha/user/resource.go +++ b/stackit/internal/services/postgresflexalpha/user/resource.go @@ -586,11 +586,9 @@ func (r *userResource) ImportState( req resource.ImportStateRequest, resp *resource.ImportStateResponse, ) { - ctx = core.InitProviderContext(ctx) if req.ID != "" { - idParts := strings.Split(req.ID, core.Separator) if len(idParts) != 4 || idParts[0] == "" || idParts[1] == "" || idParts[2] == "" || idParts[3] == "" { @@ -651,7 +649,6 @@ func (r *userResource) extractIdentityData( model resourceModel, identity UserResourceIdentityModel, ) (*clientArg, error) { - var projectId, region, instanceId string var userId int64 diff --git a/stackit/internal/services/sqlserverflexalpha/database/datasource.go b/stackit/internal/services/sqlserverflexalpha/database/datasource.go index 05c8c1ec..18930414 100644 --- a/stackit/internal/services/sqlserverflexalpha/database/datasource.go +++ b/stackit/internal/services/sqlserverflexalpha/database/datasource.go @@ -80,7 +80,6 @@ func (d *databaseDataSource) Configure( // Read retrieves the resource's state from the API. func (d *databaseDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { - var model dataSourceModel diags := req.Config.Get(ctx, &model) resp.Diagnostics.Append(diags...) diff --git a/stackit/internal/services/sqlserverflexalpha/database/resource.go b/stackit/internal/services/sqlserverflexalpha/database/resource.go index c9ac17e2..73a410ae 100644 --- a/stackit/internal/services/sqlserverflexalpha/database/resource.go +++ b/stackit/internal/services/sqlserverflexalpha/database/resource.go @@ -422,11 +422,9 @@ func (r *databaseResource) ImportState( req resource.ImportStateRequest, resp *resource.ImportStateResponse, ) { - ctx = core.InitProviderContext(ctx) if req.ID != "" { - idParts := strings.Split(req.ID, core.Separator) if len(idParts) != 4 || idParts[0] == "" || idParts[1] == "" || idParts[2] == "" || idParts[3] == "" { diff --git a/stackit/internal/services/sqlserverflexalpha/instance/functions.go b/stackit/internal/services/sqlserverflexalpha/instance/functions.go index 4c091eff..28f82aa4 100644 --- a/stackit/internal/services/sqlserverflexalpha/instance/functions.go +++ b/stackit/internal/services/sqlserverflexalpha/instance/functions.go @@ -105,7 +105,6 @@ func handleEncryption( resp.Encryption.KekKeyRingId == nil || resp.Encryption.KekKeyVersion == nil || resp.Encryption.ServiceAccount == nil { - if encryptionValue.IsNull() || encryptionValue.IsUnknown() { return sqlserverflexResGen.NewEncryptionValueNull() } diff --git a/stackit/internal/services/sqlserverflexalpha/instance/resource.go b/stackit/internal/services/sqlserverflexalpha/instance/resource.go index 4e4dd4ca..36b4d2e7 100644 --- a/stackit/internal/services/sqlserverflexalpha/instance/resource.go +++ b/stackit/internal/services/sqlserverflexalpha/instance/resource.go @@ -144,7 +144,6 @@ var modifiersFileByte []byte // Schema defines the schema for the resource. func (r *instanceResource) Schema(ctx context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { - schema := sqlserverflexalpha2.InstanceResourceSchema(ctx) fields, err := utils.ReadModifiersConfig(modifiersFileByte) diff --git a/stackit/internal/services/sqlserverflexalpha/user/mapper_test.go b/stackit/internal/services/sqlserverflexalpha/user/mapper_test.go index 46c8418d..cb4e39f3 100644 --- a/stackit/internal/services/sqlserverflexalpha/user/mapper_test.go +++ b/stackit/internal/services/sqlserverflexalpha/user/mapper_test.go @@ -42,7 +42,6 @@ func TestMapDataSourceFields(t *testing.T) { { "simple_values", &sqlserverflexalpha.GetUserResponse{ - Roles: &[]string{ "role_1", "role_2", diff --git a/stackit/internal/services/sqlserverflexalpha/user/resource.go b/stackit/internal/services/sqlserverflexalpha/user/resource.go index 64fefde3..3119a06c 100644 --- a/stackit/internal/services/sqlserverflexalpha/user/resource.go +++ b/stackit/internal/services/sqlserverflexalpha/user/resource.go @@ -389,11 +389,9 @@ func (r *userResource) ImportState( req resource.ImportStateRequest, resp *resource.ImportStateResponse, ) { - ctx = core.InitProviderContext(ctx) if req.ID != "" { - idParts := strings.Split(req.ID, core.Separator) if len(idParts) != 4 || idParts[0] == "" || idParts[1] == "" || idParts[2] == "" || idParts[3] == "" { diff --git a/stackit/internal/services/sqlserverflexbeta/database/resource.go b/stackit/internal/services/sqlserverflexbeta/database/resource.go index fd970722..39879cae 100644 --- a/stackit/internal/services/sqlserverflexbeta/database/resource.go +++ b/stackit/internal/services/sqlserverflexbeta/database/resource.go @@ -73,7 +73,6 @@ func (r *databaseResource) Metadata( var modifiersFileByte []byte func (r *databaseResource) Schema(ctx context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { - s := sqlserverflexbetaResGen.DatabaseResourceSchema(ctx) fields, err := utils.ReadModifiersConfig(modifiersFileByte) diff --git a/stackit/internal/services/sqlserverflexbeta/instance/functions.go b/stackit/internal/services/sqlserverflexbeta/instance/functions.go index de2dd9d6..3893279a 100644 --- a/stackit/internal/services/sqlserverflexbeta/instance/functions.go +++ b/stackit/internal/services/sqlserverflexbeta/instance/functions.go @@ -139,7 +139,6 @@ func handleEncryption( resp.Encryption.KekKeyRingId == nil || resp.Encryption.KekKeyVersion == nil || resp.Encryption.ServiceAccount == nil { - if m.Encryption.IsNull() || m.Encryption.IsUnknown() { return sqlserverflexbetaResGen.NewEncryptionValueNull() } @@ -172,7 +171,6 @@ func handleDSEncryption( resp.Encryption.KekKeyRingId == nil || resp.Encryption.KekKeyVersion == nil || resp.Encryption.ServiceAccount == nil { - if m.Encryption.IsNull() || m.Encryption.IsUnknown() { return sqlserverflexbetaDataGen.NewEncryptionValueNull() } diff --git a/stackit/internal/services/sqlserverflexbeta/user/mapper_test.go b/stackit/internal/services/sqlserverflexbeta/user/mapper_test.go index 1fc1f36e..b0e2bb02 100644 --- a/stackit/internal/services/sqlserverflexbeta/user/mapper_test.go +++ b/stackit/internal/services/sqlserverflexbeta/user/mapper_test.go @@ -42,7 +42,6 @@ func TestMapDataSourceFields(t *testing.T) { { "simple_values", &sqlserverflexbeta.GetUserResponse{ - Roles: &[]string{ "role_1", "role_2", diff --git a/stackit/internal/services/sqlserverflexbeta/user/resource.go b/stackit/internal/services/sqlserverflexbeta/user/resource.go index a5de43ea..9508c743 100644 --- a/stackit/internal/services/sqlserverflexbeta/user/resource.go +++ b/stackit/internal/services/sqlserverflexbeta/user/resource.go @@ -453,11 +453,9 @@ func (r *userResource) ImportState( req resource.ImportStateRequest, resp *resource.ImportStateResponse, ) { - ctx = core.InitProviderContext(ctx) if req.ID != "" { - idParts := strings.Split(req.ID, core.Separator) if len(idParts) != 4 || idParts[0] == "" || idParts[1] == "" || idParts[2] == "" || idParts[3] == "" { diff --git a/stackit/internal/wait/postgresflexalpha/wait.go b/stackit/internal/wait/postgresflexalpha/wait.go index 330932f2..5c41c4b1 100644 --- a/stackit/internal/wait/postgresflexalpha/wait.go +++ b/stackit/internal/wait/postgresflexalpha/wait.go @@ -272,8 +272,12 @@ func GetDatabaseByIdWaitHandler( } switch oapiErr.StatusCode { case http.StatusBadGateway, http.StatusGatewayTimeout, http.StatusServiceUnavailable: + tflog.Warn(ctx, "api responded with 50[2,3,4] status", map[string]interface{}{ + "status": oapiErr.StatusCode, + }) + return false, nil, nil case http.StatusNotFound: - tflog.Warn(ctx, "api responded with status", map[string]interface{}{ + tflog.Warn(ctx, "api responded with 404 status", map[string]interface{}{ "status": oapiErr.StatusCode, }) return false, nil, nil -- 2.49.1