From c833da17798ad9e9422392d9ccfa6dc3a1ac3082 Mon Sep 17 00:00:00 2001 From: Marcel Jacek Date: Fri, 14 Nov 2025 16:57:08 +0100 Subject: [PATCH 1/2] feat(iaas): log trace id --- stackit/internal/core/core.go | 18 ++++++++++++++++++ .../services/iaas/affinitygroup/datasource.go | 2 ++ .../services/iaas/affinitygroup/resource.go | 6 ++++++ .../internal/services/iaas/image/datasource.go | 2 ++ .../internal/services/iaas/image/resource.go | 8 ++++++++ .../services/iaas/imagev2/datasource.go | 3 +++ .../services/iaas/keypair/datasource.go | 2 ++ .../internal/services/iaas/keypair/resource.go | 8 ++++++++ .../services/iaas/machinetype/datasource.go | 2 ++ .../iaas/network/utils/v1network/datasource.go | 2 ++ .../iaas/network/utils/v1network/resource.go | 8 ++++++++ .../iaas/network/utils/v2network/datasource.go | 2 ++ .../iaas/network/utils/v2network/resource.go | 8 ++++++++ .../services/iaas/networkarea/datasource.go | 2 ++ .../services/iaas/networkarea/resource.go | 8 ++++++++ .../iaas/networkarearoute/datasource.go | 2 ++ .../services/iaas/networkarearoute/resource.go | 8 ++++++++ .../iaas/networkinterface/datasource.go | 2 ++ .../services/iaas/networkinterface/resource.go | 8 ++++++++ .../iaas/networkinterfaceattach/resource.go | 6 ++++++ .../services/iaas/project/datasource.go | 2 ++ .../services/iaas/publicip/datasource.go | 2 ++ .../services/iaas/publicip/resource.go | 8 ++++++++ .../iaas/publicipassociate/resource.go | 6 ++++++ .../services/iaas/publicipranges/datasource.go | 2 ++ .../services/iaas/securitygroup/datasource.go | 2 ++ .../services/iaas/securitygroup/resource.go | 8 ++++++++ .../iaas/securitygrouprule/datasource.go | 2 ++ .../iaas/securitygrouprule/resource.go | 6 ++++++ .../services/iaas/server/datasource.go | 2 ++ .../internal/services/iaas/server/resource.go | 8 ++++++++ .../iaas/serviceaccountattach/resource.go | 6 ++++++ .../services/iaas/volume/datasource.go | 2 ++ .../internal/services/iaas/volume/resource.go | 8 ++++++++ .../services/iaas/volumeattach/resource.go | 6 ++++++ 35 files changed, 177 insertions(+) diff --git a/stackit/internal/core/core.go b/stackit/internal/core/core.go index 405bf0c90..c6e72d656 100644 --- a/stackit/internal/core/core.go +++ b/stackit/internal/core/core.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/stackitcloud/stackit-sdk-go/core/runtime" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-log/tflog" @@ -102,6 +103,9 @@ func DiagsToError(diags diag.Diagnostics) error { // LogAndAddError Logs the error and adds it to the diags func LogAndAddError(ctx context.Context, diags *diag.Diagnostics, summary, detail string) { + if traceId := runtime.GetTraceId(ctx); traceId != "" { + detail = fmt.Sprintf("%s\nTrace ID: %q", detail, traceId) + } tflog.Error(ctx, fmt.Sprintf("%s | %s", summary, detail)) diags.AddError(summary, detail) } @@ -125,3 +129,17 @@ func LogAndAddErrorBeta(ctx context.Context, diags *diag.Diagnostics, name strin tflog.Error(ctx, fmt.Sprintf("%s | %s", errTitle, errContent)) diags.AddError(errTitle, errContent) } + +func InitProviderContext(ctx context.Context) context.Context { + // Capture http response to get trace-id + var httpResp *http.Response + ctx = runtime.WithCaptureHTTPResponse(ctx, &httpResp) + + return ctx +} + +func LogResponse(ctx context.Context) context.Context { + // Logs the trace-id of the request + ctx = tflog.SetField(ctx, "x-trace-id", runtime.GetTraceId(ctx)) + return ctx +} diff --git a/stackit/internal/services/iaas/affinitygroup/datasource.go b/stackit/internal/services/iaas/affinitygroup/datasource.go index ed4507001..21fbdc794 100644 --- a/stackit/internal/services/iaas/affinitygroup/datasource.go +++ b/stackit/internal/services/iaas/affinitygroup/datasource.go @@ -118,6 +118,7 @@ func (d *affinityGroupDatasource) Read(ctx context.Context, req datasource.ReadR } projectId := model.ProjectId.ValueString() affinityGroupId := model.AffinityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "affinity_group_id", affinityGroupId) @@ -136,6 +137,7 @@ func (d *affinityGroupDatasource) Read(ctx context.Context, req datasource.ReadR resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, affinityGroupResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/affinitygroup/resource.go b/stackit/internal/services/iaas/affinitygroup/resource.go index 1110e4296..a7b99ee20 100644 --- a/stackit/internal/services/iaas/affinitygroup/resource.go +++ b/stackit/internal/services/iaas/affinitygroup/resource.go @@ -154,6 +154,7 @@ func (r *affinityGroupResource) Create(ctx context.Context, req resource.CreateR return } projectId := model.ProjectId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) // Create new affinityGroup @@ -167,6 +168,7 @@ func (r *affinityGroupResource) Create(ctx context.Context, req resource.CreateR core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating affinity group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "affinity_group_id", affinityGroupResp.Id) // Map response body to schema @@ -194,6 +196,7 @@ func (r *affinityGroupResource) Read(ctx context.Context, req resource.ReadReque } projectId := model.ProjectId.ValueString() affinityGroupId := model.AffinityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "affinity_group_id", affinityGroupId) @@ -207,6 +210,7 @@ func (r *affinityGroupResource) Read(ctx context.Context, req resource.ReadReque core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading affinity group", fmt.Sprintf("Call API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, affinityGroupResp, &model) if err != nil { @@ -237,6 +241,7 @@ func (r *affinityGroupResource) Delete(ctx context.Context, req resource.DeleteR projectId := model.ProjectId.ValueString() affinityGroupId := model.AffinityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "affinity_group_id", affinityGroupId) @@ -246,6 +251,7 @@ func (r *affinityGroupResource) Delete(ctx context.Context, req resource.DeleteR core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting affinity group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Affinity group deleted") } diff --git a/stackit/internal/services/iaas/image/datasource.go b/stackit/internal/services/iaas/image/datasource.go index 4b24a8ff7..dc5cfa192 100644 --- a/stackit/internal/services/iaas/image/datasource.go +++ b/stackit/internal/services/iaas/image/datasource.go @@ -213,6 +213,7 @@ func (r *imageDataSource) Read(ctx context.Context, req datasource.ReadRequest, } projectId := model.ProjectId.ValueString() imageId := model.ImageId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "image_id", imageId) @@ -231,6 +232,7 @@ func (r *imageDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapDataSourceFields(ctx, imageResp, &model) diff --git a/stackit/internal/services/iaas/image/resource.go b/stackit/internal/services/iaas/image/resource.go index 2d9716836..02e0c57b2 100644 --- a/stackit/internal/services/iaas/image/resource.go +++ b/stackit/internal/services/iaas/image/resource.go @@ -378,6 +378,7 @@ func (r *imageResource) Create(ctx context.Context, req resource.CreateRequest, } projectId := model.ProjectId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) // Generate API request body from model @@ -393,6 +394,7 @@ func (r *imageResource) Create(ctx context.Context, req resource.CreateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating image", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "image_id", *imageCreateResp.Id) // Get the image object, as the create response does not contain all fields @@ -458,6 +460,7 @@ func (r *imageResource) Read(ctx context.Context, req resource.ReadRequest, resp } projectId := model.ProjectId.ValueString() imageId := model.ImageId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "image_id", imageId) @@ -471,6 +474,7 @@ func (r *imageResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading image", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, imageResp, &model) @@ -498,6 +502,7 @@ func (r *imageResource) Update(ctx context.Context, req resource.UpdateRequest, } projectId := model.ProjectId.ValueString() imageId := model.ImageId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "image_id", imageId) @@ -521,6 +526,7 @@ func (r *imageResource) Update(ctx context.Context, req resource.UpdateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating image", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, updatedImage, &model) if err != nil { @@ -547,6 +553,7 @@ func (r *imageResource) Delete(ctx context.Context, req resource.DeleteRequest, projectId := model.ProjectId.ValueString() imageId := model.ImageId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "image_id", imageId) @@ -556,6 +563,7 @@ func (r *imageResource) Delete(ctx context.Context, req resource.DeleteRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting image", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteImageWaitHandler(ctx, r.client, projectId, imageId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting image", fmt.Sprintf("image deletion waiting: %v", err)) diff --git a/stackit/internal/services/iaas/imagev2/datasource.go b/stackit/internal/services/iaas/imagev2/datasource.go index e39562393..b9906ad9e 100644 --- a/stackit/internal/services/iaas/imagev2/datasource.go +++ b/stackit/internal/services/iaas/imagev2/datasource.go @@ -370,6 +370,7 @@ func (d *imageDataV2Source) Read(ctx context.Context, req datasource.ReadRequest } } + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectID) ctx = tflog.SetField(ctx, "image_id", imageID) ctx = tflog.SetField(ctx, "name", name) @@ -391,6 +392,7 @@ func (d *imageDataV2Source) Read(ctx context.Context, req datasource.ReadRequest resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) } else { // Case 2: Lookup by name or name_regex @@ -410,6 +412,7 @@ func (d *imageDataV2Source) Read(ctx context.Context, req datasource.ReadRequest utils.LogError(ctx, &resp.Diagnostics, err, "List images", "Unable to fetch images", nil) return } + ctx = core.LogResponse(ctx) // Step 1: Match images by name or regular expression (name or name_regex, if provided) var matchedImages []*iaas.Image diff --git a/stackit/internal/services/iaas/keypair/datasource.go b/stackit/internal/services/iaas/keypair/datasource.go index 513607f5b..c3668b255 100644 --- a/stackit/internal/services/iaas/keypair/datasource.go +++ b/stackit/internal/services/iaas/keypair/datasource.go @@ -92,6 +92,7 @@ func (r *keyPairDataSource) Read(ctx context.Context, req datasource.ReadRequest return } name := model.Name.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "name", name) keypairResp, err := r.client.GetKeyPair(ctx, name).Execute() @@ -107,6 +108,7 @@ func (r *keyPairDataSource) Read(ctx context.Context, req datasource.ReadRequest resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, keypairResp, &model) diff --git a/stackit/internal/services/iaas/keypair/resource.go b/stackit/internal/services/iaas/keypair/resource.go index ccae2565c..c514290f2 100644 --- a/stackit/internal/services/iaas/keypair/resource.go +++ b/stackit/internal/services/iaas/keypair/resource.go @@ -146,6 +146,7 @@ func (r *keyPairResource) Create(ctx context.Context, req resource.CreateRequest } name := model.Name.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "name", name) // Generate API request body from model @@ -162,6 +163,7 @@ func (r *keyPairResource) Create(ctx context.Context, req resource.CreateRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating key pair", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, keyPair, &model) @@ -187,6 +189,7 @@ func (r *keyPairResource) Read(ctx context.Context, req resource.ReadRequest, re return } name := model.Name.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "name", name) keyPairResp, err := r.client.GetKeyPair(ctx, name).Execute() @@ -199,6 +202,7 @@ func (r *keyPairResource) Read(ctx context.Context, req resource.ReadRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading key pair", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, keyPairResp, &model) @@ -225,6 +229,7 @@ func (r *keyPairResource) Update(ctx context.Context, req resource.UpdateRequest return } name := model.Name.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "name", name) // Retrieve values from state @@ -247,6 +252,7 @@ func (r *keyPairResource) Update(ctx context.Context, req resource.UpdateRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating key pair", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, updatedKeyPair, &model) if err != nil { @@ -272,6 +278,7 @@ func (r *keyPairResource) Delete(ctx context.Context, req resource.DeleteRequest } name := model.Name.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "name", name) // Delete existing key pair @@ -280,6 +287,7 @@ func (r *keyPairResource) Delete(ctx context.Context, req resource.DeleteRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting key pair", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Key pair deleted") } diff --git a/stackit/internal/services/iaas/machinetype/datasource.go b/stackit/internal/services/iaas/machinetype/datasource.go index ed2c1c9d1..7276ef3cf 100644 --- a/stackit/internal/services/iaas/machinetype/datasource.go +++ b/stackit/internal/services/iaas/machinetype/datasource.go @@ -144,6 +144,7 @@ func (d *machineTypeDataSource) Read(ctx context.Context, req datasource.ReadReq projectId := model.ProjectId.ValueString() sortAscending := model.SortAscending.ValueBool() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "filter_is_null", model.Filter.IsNull()) ctx = tflog.SetField(ctx, "filter_is_unknown", model.Filter.IsUnknown()) @@ -165,6 +166,7 @@ func (d *machineTypeDataSource) Read(ctx context.Context, req datasource.ReadReq resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) if apiResp.Items == nil || len(*apiResp.Items) == 0 { core.LogAndAddWarning(ctx, &resp.Diagnostics, "No machine types found", "No matching machine types.") diff --git a/stackit/internal/services/iaas/network/utils/v1network/datasource.go b/stackit/internal/services/iaas/network/utils/v1network/datasource.go index 08f8da5bd..ae7c60c73 100644 --- a/stackit/internal/services/iaas/network/utils/v1network/datasource.go +++ b/stackit/internal/services/iaas/network/utils/v1network/datasource.go @@ -23,6 +23,7 @@ func DatasourceRead(ctx context.Context, req datasource.ReadRequest, resp *datas if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -43,6 +44,7 @@ func DatasourceRead(ctx context.Context, req datasource.ReadRequest, resp *datas resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapDataSourceFields(ctx, networkResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/network/utils/v1network/resource.go b/stackit/internal/services/iaas/network/utils/v1network/resource.go index fa21084d2..d97693609 100644 --- a/stackit/internal/services/iaas/network/utils/v1network/resource.go +++ b/stackit/internal/services/iaas/network/utils/v1network/resource.go @@ -32,6 +32,7 @@ func Create(ctx context.Context, req resource.CreateRequest, resp *resource.Crea } projectId := model.ProjectId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) // Generate API request body from model @@ -48,6 +49,7 @@ func Create(ctx context.Context, req resource.CreateRequest, resp *resource.Crea core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) networkId := *network.NetworkId network, err = wait.CreateNetworkWaitHandler(ctx, client, projectId, networkId).WaitWithContext(ctx) @@ -82,6 +84,7 @@ func Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResp } projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) @@ -95,6 +98,7 @@ func Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, networkResp, &model) @@ -121,6 +125,7 @@ func Update(ctx context.Context, req resource.UpdateRequest, resp *resource.Upda } projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) @@ -149,6 +154,7 @@ func Update(ctx context.Context, req resource.UpdateRequest, resp *resource.Upda core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network", fmt.Sprintf("Network update waiting: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, waitResp, &model) if err != nil { @@ -174,6 +180,7 @@ func Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.Dele projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) @@ -183,6 +190,7 @@ func Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.Dele core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteNetworkWaitHandler(ctx, client, projectId, networkId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network", fmt.Sprintf("Network deletion waiting: %v", err)) diff --git a/stackit/internal/services/iaas/network/utils/v2network/datasource.go b/stackit/internal/services/iaas/network/utils/v2network/datasource.go index bc447b825..6f3b75f73 100644 --- a/stackit/internal/services/iaas/network/utils/v2network/datasource.go +++ b/stackit/internal/services/iaas/network/utils/v2network/datasource.go @@ -26,6 +26,7 @@ func DatasourceRead(ctx context.Context, req datasource.ReadRequest, resp *datas projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() region := providerData.GetRegionWithOverride(model.Region) + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) @@ -44,6 +45,7 @@ func DatasourceRead(ctx context.Context, req datasource.ReadRequest, resp *datas resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapDataSourceFields(ctx, networkResp, &model, region) if err != nil { diff --git a/stackit/internal/services/iaas/network/utils/v2network/resource.go b/stackit/internal/services/iaas/network/utils/v2network/resource.go index dbf318209..77b2978f7 100644 --- a/stackit/internal/services/iaas/network/utils/v2network/resource.go +++ b/stackit/internal/services/iaas/network/utils/v2network/resource.go @@ -33,6 +33,7 @@ func Create(ctx context.Context, req resource.CreateRequest, resp *resource.Crea projectId := model.ProjectId.ValueString() region := model.Region.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "region", region) @@ -50,6 +51,7 @@ func Create(ctx context.Context, req resource.CreateRequest, resp *resource.Crea core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) networkId := *network.Id network, err = wait.CreateNetworkWaitHandler(ctx, client, projectId, region, networkId).WaitWithContext(ctx) @@ -85,6 +87,7 @@ func Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResp projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() region := providerData.GetRegionWithOverride(model.Region) + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "region", region) @@ -99,6 +102,7 @@ func Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, networkResp, &model, region) @@ -126,6 +130,7 @@ func Update(ctx context.Context, req resource.UpdateRequest, resp *resource.Upda projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() region := model.Region.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "region", region) @@ -150,6 +155,7 @@ func Update(ctx context.Context, req resource.UpdateRequest, resp *resource.Upda core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.UpdateNetworkWaitHandler(ctx, client, projectId, region, networkId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network", fmt.Sprintf("Network update waiting: %v", err)) @@ -181,6 +187,7 @@ func Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.Dele projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() region := model.Region.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "region", region) @@ -191,6 +198,7 @@ func Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.Dele core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteNetworkWaitHandler(ctx, client, projectId, region, networkId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network", fmt.Sprintf("Network deletion waiting: %v", err)) diff --git a/stackit/internal/services/iaas/networkarea/datasource.go b/stackit/internal/services/iaas/networkarea/datasource.go index 15deb0886..840f96cd5 100644 --- a/stackit/internal/services/iaas/networkarea/datasource.go +++ b/stackit/internal/services/iaas/networkarea/datasource.go @@ -172,6 +172,7 @@ func (d *networkAreaDataSource) Read(ctx context.Context, req datasource.ReadReq } organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) @@ -190,6 +191,7 @@ func (d *networkAreaDataSource) Read(ctx context.Context, req datasource.ReadReq resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) networkAreaRanges := networkAreaResp.Ipv4.NetworkRanges diff --git a/stackit/internal/services/iaas/networkarea/resource.go b/stackit/internal/services/iaas/networkarea/resource.go index a688e7d88..63a5ae6cc 100644 --- a/stackit/internal/services/iaas/networkarea/resource.go +++ b/stackit/internal/services/iaas/networkarea/resource.go @@ -240,6 +240,7 @@ func (r *networkAreaResource) Create(ctx context.Context, req resource.CreateReq } organizationId := model.OrganizationId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) // Generate API request body from model @@ -255,6 +256,7 @@ func (r *networkAreaResource) Create(ctx context.Context, req resource.CreateReq core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network area", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) networkArea, err := wait.CreateNetworkAreaWaitHandler(ctx, r.client, organizationId, *area.AreaId).WaitWithContext(context.Background()) if err != nil { @@ -291,6 +293,7 @@ func (r *networkAreaResource) Read(ctx context.Context, req resource.ReadRequest } organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) @@ -304,6 +307,7 @@ func (r *networkAreaResource) Read(ctx context.Context, req resource.ReadRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network area", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) networkAreaRanges := networkAreaResp.Ipv4.NetworkRanges @@ -333,6 +337,7 @@ func (r *networkAreaResource) Update(ctx context.Context, req resource.UpdateReq } organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) @@ -365,6 +370,7 @@ func (r *networkAreaResource) Update(ctx context.Context, req resource.UpdateReq core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network area", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.UpdateNetworkAreaWaitHandler(ctx, r.client, organizationId, networkAreaId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network area", fmt.Sprintf("Network area update waiting: %v", err)) @@ -416,6 +422,7 @@ func (r *networkAreaResource) Delete(ctx context.Context, req resource.DeleteReq organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) @@ -431,6 +438,7 @@ func (r *networkAreaResource) Delete(ctx context.Context, req resource.DeleteReq core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network area", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteNetworkAreaWaitHandler(ctx, r.client, organizationId, networkAreaId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network area", fmt.Sprintf("Network area deletion waiting: %v", err)) diff --git a/stackit/internal/services/iaas/networkarearoute/datasource.go b/stackit/internal/services/iaas/networkarearoute/datasource.go index 19b139d3f..5f325bf71 100644 --- a/stackit/internal/services/iaas/networkarearoute/datasource.go +++ b/stackit/internal/services/iaas/networkarearoute/datasource.go @@ -116,6 +116,7 @@ func (d *networkAreaRouteDataSource) Read(ctx context.Context, req datasource.Re organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() networkAreaRouteId := model.NetworkAreaRouteId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) ctx = tflog.SetField(ctx, "network_area_route_id", networkAreaRouteId) @@ -135,6 +136,7 @@ func (d *networkAreaRouteDataSource) Read(ctx context.Context, req datasource.Re resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, networkAreaRouteResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/networkarearoute/resource.go b/stackit/internal/services/iaas/networkarearoute/resource.go index e29b3fdc0..198b5da3b 100644 --- a/stackit/internal/services/iaas/networkarearoute/resource.go +++ b/stackit/internal/services/iaas/networkarearoute/resource.go @@ -160,6 +160,7 @@ func (r *networkAreaRouteResource) Create(ctx context.Context, req resource.Crea return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() ctx = tflog.SetField(ctx, "organization_id", organizationId) networkAreaId := model.NetworkAreaId.ValueString() @@ -178,6 +179,7 @@ func (r *networkAreaRouteResource) Create(ctx context.Context, req resource.Crea core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network area route", fmt.Sprintf("Calling API: %v", err)) return } + core.LogResponse(ctx) if routes.Items == nil || len(*routes.Items) == 0 { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network area route.", "Empty response from API") return @@ -221,6 +223,7 @@ func (r *networkAreaRouteResource) Read(ctx context.Context, req resource.ReadRe organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() networkAreaRouteId := model.NetworkAreaRouteId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) ctx = tflog.SetField(ctx, "network_area_route_id", networkAreaRouteId) @@ -235,6 +238,7 @@ func (r *networkAreaRouteResource) Read(ctx context.Context, req resource.ReadRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network area route.", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, networkAreaRouteResp, &model) @@ -264,6 +268,7 @@ func (r *networkAreaRouteResource) Delete(ctx context.Context, req resource.Dele organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() networkAreaRouteId := model.NetworkAreaRouteId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) ctx = tflog.SetField(ctx, "network_area_route_id", networkAreaRouteId) @@ -274,6 +279,7 @@ func (r *networkAreaRouteResource) Delete(ctx context.Context, req resource.Dele core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network area route", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Network area route deleted") } @@ -291,6 +297,7 @@ func (r *networkAreaRouteResource) Update(ctx context.Context, req resource.Upda organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() networkAreaRouteId := model.NetworkAreaRouteId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "organization_id", organizationId) ctx = tflog.SetField(ctx, "network_area_id", networkAreaId) ctx = tflog.SetField(ctx, "network_area_route_id", networkAreaRouteId) @@ -315,6 +322,7 @@ func (r *networkAreaRouteResource) Update(ctx context.Context, req resource.Upda core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network area route", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, networkAreaRouteResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/networkinterface/datasource.go b/stackit/internal/services/iaas/networkinterface/datasource.go index 710cac526..93b47460f 100644 --- a/stackit/internal/services/iaas/networkinterface/datasource.go +++ b/stackit/internal/services/iaas/networkinterface/datasource.go @@ -144,6 +144,7 @@ func (d *networkInterfaceDataSource) Read(ctx context.Context, req datasource.Re projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -163,6 +164,7 @@ func (d *networkInterfaceDataSource) Read(ctx context.Context, req datasource.Re resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, networkInterfaceResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/networkinterface/resource.go b/stackit/internal/services/iaas/networkinterface/resource.go index d84d1a938..7e5faceab 100644 --- a/stackit/internal/services/iaas/networkinterface/resource.go +++ b/stackit/internal/services/iaas/networkinterface/resource.go @@ -257,6 +257,7 @@ func (r *networkInterfaceResource) Create(ctx context.Context, req resource.Crea return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) networkId := model.NetworkId.ValueString() @@ -275,6 +276,7 @@ func (r *networkInterfaceResource) Create(ctx context.Context, req resource.Crea core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network interface", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) networkInterfaceId := *networkInterface.Id @@ -306,6 +308,7 @@ func (r *networkInterfaceResource) Read(ctx context.Context, req resource.ReadRe projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -320,6 +323,7 @@ func (r *networkInterfaceResource) Read(ctx context.Context, req resource.ReadRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network interface", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, networkInterfaceResp, &model) @@ -348,6 +352,7 @@ func (r *networkInterfaceResource) Update(ctx context.Context, req resource.Upda projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -372,6 +377,7 @@ func (r *networkInterfaceResource) Update(ctx context.Context, req resource.Upda core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network interface", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, nicResp, &model) if err != nil { @@ -399,6 +405,7 @@ func (r *networkInterfaceResource) Delete(ctx context.Context, req resource.Dele projectId := model.ProjectId.ValueString() networkId := model.NetworkId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "network_id", networkId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -409,6 +416,7 @@ func (r *networkInterfaceResource) Delete(ctx context.Context, req resource.Dele core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting network interface", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Network interface deleted") } diff --git a/stackit/internal/services/iaas/networkinterfaceattach/resource.go b/stackit/internal/services/iaas/networkinterfaceattach/resource.go index 1517dd80f..c195b1af3 100644 --- a/stackit/internal/services/iaas/networkinterfaceattach/resource.go +++ b/stackit/internal/services/iaas/networkinterfaceattach/resource.go @@ -130,6 +130,7 @@ func (r *networkInterfaceAttachResource) Create(ctx context.Context, req resourc return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -143,6 +144,7 @@ func (r *networkInterfaceAttachResource) Create(ctx context.Context, req resourc core.LogAndAddError(ctx, &resp.Diagnostics, "Error attaching network interface to server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) model.Id = utils.BuildInternalTerraformId(projectId, serverId, networkInterfaceId) @@ -163,6 +165,7 @@ func (r *networkInterfaceAttachResource) Read(ctx context.Context, req resource. if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -180,6 +183,7 @@ func (r *networkInterfaceAttachResource) Read(ctx context.Context, req resource. core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network interface attachment", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if nics == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading network interface attachment", "List of network interfaces attached to the server is nil") @@ -221,6 +225,7 @@ func (r *networkInterfaceAttachResource) Delete(ctx context.Context, req resourc return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -234,6 +239,7 @@ func (r *networkInterfaceAttachResource) Delete(ctx context.Context, req resourc core.LogAndAddError(ctx, &resp.Diagnostics, "Error removing network interface from server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Network interface attachment deleted") } diff --git a/stackit/internal/services/iaas/project/datasource.go b/stackit/internal/services/iaas/project/datasource.go index c5be5e8a0..be2250f17 100644 --- a/stackit/internal/services/iaas/project/datasource.go +++ b/stackit/internal/services/iaas/project/datasource.go @@ -123,6 +123,7 @@ func (d *projectDataSource) Read(ctx context.Context, req datasource.ReadRequest return } projectId := model.ProjectId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) projectResp, err := d.client.GetProjectDetailsExecute(ctx, projectId) @@ -138,6 +139,7 @@ func (d *projectDataSource) Read(ctx context.Context, req datasource.ReadRequest resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapDataSourceFields(projectResp, &model) diff --git a/stackit/internal/services/iaas/publicip/datasource.go b/stackit/internal/services/iaas/publicip/datasource.go index b9e177cf0..cedf34756 100644 --- a/stackit/internal/services/iaas/publicip/datasource.go +++ b/stackit/internal/services/iaas/publicip/datasource.go @@ -111,6 +111,7 @@ func (d *publicIpDataSource) Read(ctx context.Context, req datasource.ReadReques } projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) @@ -129,6 +130,7 @@ func (d *publicIpDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, publicIpResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/publicip/resource.go b/stackit/internal/services/iaas/publicip/resource.go index 04e84a663..ac31a06b4 100644 --- a/stackit/internal/services/iaas/publicip/resource.go +++ b/stackit/internal/services/iaas/publicip/resource.go @@ -145,6 +145,7 @@ func (r *publicIpResource) Create(ctx context.Context, req resource.CreateReques return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -162,6 +163,7 @@ func (r *publicIpResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating public IP", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "public_ip_id", *publicIp.Id) @@ -190,6 +192,7 @@ func (r *publicIpResource) Read(ctx context.Context, req resource.ReadRequest, r } projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) @@ -203,6 +206,7 @@ func (r *publicIpResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading public IP", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, publicIpResp, &model) @@ -230,6 +234,7 @@ func (r *publicIpResource) Update(ctx context.Context, req resource.UpdateReques } projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) @@ -253,6 +258,7 @@ func (r *publicIpResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating public IP", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, updatedPublicIp, &model) if err != nil { @@ -279,6 +285,7 @@ func (r *publicIpResource) Delete(ctx context.Context, req resource.DeleteReques projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) @@ -288,6 +295,7 @@ func (r *publicIpResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting public IP", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "public IP deleted") } diff --git a/stackit/internal/services/iaas/publicipassociate/resource.go b/stackit/internal/services/iaas/publicipassociate/resource.go index d19c5de4b..5b80c1ebb 100644 --- a/stackit/internal/services/iaas/publicipassociate/resource.go +++ b/stackit/internal/services/iaas/publicipassociate/resource.go @@ -153,6 +153,7 @@ func (r *publicIpAssociateResource) Create(ctx context.Context, req resource.Cre projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -169,6 +170,7 @@ func (r *publicIpAssociateResource) Create(ctx context.Context, req resource.Cre core.LogAndAddError(ctx, &resp.Diagnostics, "Error associating public IP to network interface", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(updatedPublicIp, &model) if err != nil { @@ -194,6 +196,7 @@ func (r *publicIpAssociateResource) Read(ctx context.Context, req resource.ReadR projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -208,6 +211,7 @@ func (r *publicIpAssociateResource) Read(ctx context.Context, req resource.ReadR core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading public IP association", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(publicIpResp, &model) @@ -242,6 +246,7 @@ func (r *publicIpAssociateResource) Delete(ctx context.Context, req resource.Del projectId := model.ProjectId.ValueString() publicIpId := model.PublicIpId.ValueString() networkInterfaceId := model.NetworkInterfaceId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "public_ip_id", publicIpId) ctx = tflog.SetField(ctx, "network_interface_id", networkInterfaceId) @@ -255,6 +260,7 @@ func (r *publicIpAssociateResource) Delete(ctx context.Context, req resource.Del core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting public IP association", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "public IP association deleted") } diff --git a/stackit/internal/services/iaas/publicipranges/datasource.go b/stackit/internal/services/iaas/publicipranges/datasource.go index 3daebaaa5..1a8fdab21 100644 --- a/stackit/internal/services/iaas/publicipranges/datasource.go +++ b/stackit/internal/services/iaas/publicipranges/datasource.go @@ -115,6 +115,7 @@ func (d *publicIpRangesDataSource) Read(ctx context.Context, req datasource.Read if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) publicIpRangeResp, err := d.client.ListPublicIPRangesExecute(ctx) if err != nil { utils.LogError( @@ -130,6 +131,7 @@ func (d *publicIpRangesDataSource) Read(ctx context.Context, req datasource.Read resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, publicIpRangeResp, &model) diff --git a/stackit/internal/services/iaas/securitygroup/datasource.go b/stackit/internal/services/iaas/securitygroup/datasource.go index 171f5aba6..1dc876bcb 100644 --- a/stackit/internal/services/iaas/securitygroup/datasource.go +++ b/stackit/internal/services/iaas/securitygroup/datasource.go @@ -111,6 +111,7 @@ func (d *securityGroupDataSource) Read(ctx context.Context, req datasource.ReadR } projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) @@ -129,6 +130,7 @@ func (d *securityGroupDataSource) Read(ctx context.Context, req datasource.ReadR resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, securityGroupResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/securitygroup/resource.go b/stackit/internal/services/iaas/securitygroup/resource.go index 3663c25b3..02d1b51fb 100644 --- a/stackit/internal/services/iaas/securitygroup/resource.go +++ b/stackit/internal/services/iaas/securitygroup/resource.go @@ -162,6 +162,7 @@ func (r *securityGroupResource) Create(ctx context.Context, req resource.CreateR return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -179,6 +180,7 @@ func (r *securityGroupResource) Create(ctx context.Context, req resource.CreateR core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating security group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) securityGroupId := *securityGroup.Id @@ -209,6 +211,7 @@ func (r *securityGroupResource) Read(ctx context.Context, req resource.ReadReque } projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_id", securityGroupId) @@ -222,6 +225,7 @@ func (r *securityGroupResource) Read(ctx context.Context, req resource.ReadReque core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading security group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, securityGroupResp, &model) @@ -249,6 +253,7 @@ func (r *securityGroupResource) Update(ctx context.Context, req resource.UpdateR } projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) @@ -272,6 +277,7 @@ func (r *securityGroupResource) Update(ctx context.Context, req resource.UpdateR core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating security group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, updatedSecurityGroup, &model) if err != nil { @@ -298,6 +304,7 @@ func (r *securityGroupResource) Delete(ctx context.Context, req resource.DeleteR projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) @@ -307,6 +314,7 @@ func (r *securityGroupResource) Delete(ctx context.Context, req resource.DeleteR core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting security group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "security group deleted") } diff --git a/stackit/internal/services/iaas/securitygrouprule/datasource.go b/stackit/internal/services/iaas/securitygrouprule/datasource.go index c286fcc4b..dfa3ac936 100644 --- a/stackit/internal/services/iaas/securitygrouprule/datasource.go +++ b/stackit/internal/services/iaas/securitygrouprule/datasource.go @@ -166,9 +166,11 @@ func (d *securityGroupRuleDataSource) Read(ctx context.Context, req datasource.R projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() securityGroupRuleId := model.SecurityGroupRuleId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) ctx = tflog.SetField(ctx, "security_group_rule_id", securityGroupRuleId) + ctx = core.LogResponse(ctx) securityGroupRuleResp, err := d.client.GetSecurityGroupRule(ctx, projectId, securityGroupId, securityGroupRuleId).Execute() if err != nil { diff --git a/stackit/internal/services/iaas/securitygrouprule/resource.go b/stackit/internal/services/iaas/securitygrouprule/resource.go index 00b24a5c0..e2ed9e75e 100644 --- a/stackit/internal/services/iaas/securitygrouprule/resource.go +++ b/stackit/internal/services/iaas/securitygrouprule/resource.go @@ -389,6 +389,7 @@ func (r *securityGroupRuleResource) Create(ctx context.Context, req resource.Cre return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) securityGroupId := model.SecurityGroupId.ValueString() @@ -437,6 +438,7 @@ func (r *securityGroupRuleResource) Create(ctx context.Context, req resource.Cre core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating security group rule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "security_group_rule_id", *securityGroupRule.Id) @@ -466,6 +468,7 @@ func (r *securityGroupRuleResource) Read(ctx context.Context, req resource.ReadR projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() securityGroupRuleId := model.SecurityGroupRuleId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) ctx = tflog.SetField(ctx, "security_group_rule_id", securityGroupRuleId) @@ -480,6 +483,7 @@ func (r *securityGroupRuleResource) Read(ctx context.Context, req resource.ReadR core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading security group rule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(securityGroupRuleResp, &model) @@ -515,6 +519,7 @@ func (r *securityGroupRuleResource) Delete(ctx context.Context, req resource.Del projectId := model.ProjectId.ValueString() securityGroupId := model.SecurityGroupId.ValueString() securityGroupRuleId := model.SecurityGroupRuleId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) ctx = tflog.SetField(ctx, "security_group_rule_id", securityGroupRuleId) @@ -525,6 +530,7 @@ func (r *securityGroupRuleResource) Delete(ctx context.Context, req resource.Del core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting security group rule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "security group rule deleted") } diff --git a/stackit/internal/services/iaas/server/datasource.go b/stackit/internal/services/iaas/server/datasource.go index ce2159613..2a644b17d 100644 --- a/stackit/internal/services/iaas/server/datasource.go +++ b/stackit/internal/services/iaas/server/datasource.go @@ -185,6 +185,7 @@ func (r *serverDataSource) Read(ctx context.Context, req datasource.ReadRequest, } projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "server_id", serverId) @@ -205,6 +206,7 @@ func (r *serverDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapDataSourceFields(ctx, serverResp, &model) diff --git a/stackit/internal/services/iaas/server/resource.go b/stackit/internal/services/iaas/server/resource.go index a32561196..797688d60 100644 --- a/stackit/internal/services/iaas/server/resource.go +++ b/stackit/internal/services/iaas/server/resource.go @@ -428,6 +428,7 @@ func (r *serverResource) Create(ctx context.Context, req resource.CreateRequest, } projectId := model.ProjectId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) // Generate API request body from model @@ -444,6 +445,7 @@ func (r *serverResource) Create(ctx context.Context, req resource.CreateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) serverId := *server.Id _, err = wait.CreateServerWaitHandler(ctx, r.client, projectId, serverId).WaitWithContext(ctx) @@ -603,6 +605,7 @@ func (r *serverResource) Read(ctx context.Context, req resource.ReadRequest, res } projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "server_id", serverId) @@ -618,6 +621,7 @@ func (r *serverResource) Read(ctx context.Context, req resource.ReadRequest, res core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, serverResp, &model) @@ -682,6 +686,7 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest, } projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "server_id", serverId) @@ -700,6 +705,7 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest, if server, err = r.client.GetServer(ctx, model.ProjectId.ValueString(), model.ServerId.ValueString()).Execute(); err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error retrieving server state", fmt.Sprintf("Getting server state: %v", err)) } + ctx = core.LogResponse(ctx) if model.DesiredStatus.ValueString() == modelStateDeallocated { // if the target state is "deallocated", we have to perform the server update first @@ -763,6 +769,7 @@ func (r *serverResource) Delete(ctx context.Context, req resource.DeleteRequest, projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "server_id", serverId) @@ -772,6 +779,7 @@ func (r *serverResource) Delete(ctx context.Context, req resource.DeleteRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteServerWaitHandler(ctx, r.client, projectId, serverId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting server", fmt.Sprintf("server deletion waiting: %v", err)) diff --git a/stackit/internal/services/iaas/serviceaccountattach/resource.go b/stackit/internal/services/iaas/serviceaccountattach/resource.go index f5eaed4d2..1716afb8d 100644 --- a/stackit/internal/services/iaas/serviceaccountattach/resource.go +++ b/stackit/internal/services/iaas/serviceaccountattach/resource.go @@ -126,6 +126,7 @@ func (r *networkInterfaceAttachResource) Create(ctx context.Context, req resourc return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -139,6 +140,7 @@ func (r *networkInterfaceAttachResource) Create(ctx context.Context, req resourc core.LogAndAddError(ctx, &resp.Diagnostics, "Error attaching service account to server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) model.Id = utils.BuildInternalTerraformId(projectId, serverId, serviceAccountEmail) @@ -159,6 +161,7 @@ func (r *networkInterfaceAttachResource) Read(ctx context.Context, req resource. if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -176,6 +179,7 @@ func (r *networkInterfaceAttachResource) Read(ctx context.Context, req resource. core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading service account attachment", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if serviceAccounts == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading service account attachment", "List of service accounts attached to the server is nil") @@ -217,6 +221,7 @@ func (r *networkInterfaceAttachResource) Delete(ctx context.Context, req resourc return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -230,6 +235,7 @@ func (r *networkInterfaceAttachResource) Delete(ctx context.Context, req resourc core.LogAndAddError(ctx, &resp.Diagnostics, "Error removing service account from server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Service account attachment deleted") } diff --git a/stackit/internal/services/iaas/volume/datasource.go b/stackit/internal/services/iaas/volume/datasource.go index ff89d2732..70a8a5592 100644 --- a/stackit/internal/services/iaas/volume/datasource.go +++ b/stackit/internal/services/iaas/volume/datasource.go @@ -141,6 +141,7 @@ func (d *volumeDataSource) Read(ctx context.Context, req datasource.ReadRequest, } projectId := model.ProjectId.ValueString() volumeId := model.VolumeId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "volume_id", volumeId) @@ -159,6 +160,7 @@ func (d *volumeDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, volumeResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/volume/resource.go b/stackit/internal/services/iaas/volume/resource.go index 8f6bd16b2..a5af2491a 100644 --- a/stackit/internal/services/iaas/volume/resource.go +++ b/stackit/internal/services/iaas/volume/resource.go @@ -287,6 +287,7 @@ func (r *volumeResource) Create(ctx context.Context, req resource.CreateRequest, return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -313,6 +314,7 @@ func (r *volumeResource) Create(ctx context.Context, req resource.CreateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating volume", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) volumeId := *volume.Id volume, err = wait.CreateVolumeWaitHandler(ctx, r.client, projectId, volumeId).WaitWithContext(ctx) @@ -348,6 +350,7 @@ func (r *volumeResource) Read(ctx context.Context, req resource.ReadRequest, res } projectId := model.ProjectId.ValueString() volumeId := model.VolumeId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "volume_id", volumeId) @@ -361,6 +364,7 @@ func (r *volumeResource) Read(ctx context.Context, req resource.ReadRequest, res core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading volume", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, volumeResp, &model) @@ -386,6 +390,7 @@ func (r *volumeResource) Update(ctx context.Context, req resource.UpdateRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() volumeId := model.VolumeId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -411,6 +416,7 @@ func (r *volumeResource) Update(ctx context.Context, req resource.UpdateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating volume", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Resize existing volume modelSize := conversion.Int64ValueToPointer(model.Size) @@ -455,6 +461,7 @@ func (r *volumeResource) Delete(ctx context.Context, req resource.DeleteRequest, projectId := model.ProjectId.ValueString() volumeId := model.VolumeId.ValueString() + ctx = core.InitProviderContext(ctx) ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "volume_id", volumeId) @@ -464,6 +471,7 @@ func (r *volumeResource) Delete(ctx context.Context, req resource.DeleteRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting volume", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteVolumeWaitHandler(ctx, r.client, projectId, volumeId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting volume", fmt.Sprintf("volume deletion waiting: %v", err)) diff --git a/stackit/internal/services/iaas/volumeattach/resource.go b/stackit/internal/services/iaas/volumeattach/resource.go index c5a851cf3..e2aace10f 100644 --- a/stackit/internal/services/iaas/volumeattach/resource.go +++ b/stackit/internal/services/iaas/volumeattach/resource.go @@ -132,6 +132,7 @@ func (r *volumeAttachResource) Create(ctx context.Context, req resource.CreateRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -149,6 +150,7 @@ func (r *volumeAttachResource) Create(ctx context.Context, req resource.CreateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error attaching volume to server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.AddVolumeToServerWaitHandler(ctx, r.client, projectId, serverId, volumeId).WaitWithContext(ctx) if err != nil { @@ -175,6 +177,7 @@ func (r *volumeAttachResource) Read(ctx context.Context, req resource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -192,6 +195,7 @@ func (r *volumeAttachResource) Read(ctx context.Context, req resource.ReadReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading volume attachment", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Set refreshed state diags = resp.State.Set(ctx, model) @@ -217,6 +221,7 @@ func (r *volumeAttachResource) Delete(ctx context.Context, req resource.DeleteRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) serverId := model.ServerId.ValueString() @@ -230,6 +235,7 @@ func (r *volumeAttachResource) Delete(ctx context.Context, req resource.DeleteRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error removing volume from server", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.RemoveVolumeFromServerWaitHandler(ctx, r.client, projectId, serverId, volumeId).WaitWithContext(ctx) if err != nil { From fe9686db241b813a6e28a21ec6b24e4067553408 Mon Sep 17 00:00:00 2001 From: Marcel Jacek Date: Tue, 18 Nov 2025 18:20:09 +0100 Subject: [PATCH 2/2] feat: log trace id in every resource / datasource --- .github/docs/contribution-guide/resource.go | 6 ++++++ go.mod | 2 +- go.sum | 4 ++-- stackit/internal/core/core.go | 9 ++++++++- .../authorization/roleassignments/resource.go | 6 ++++++ .../internal/services/cdn/customdomain/datasource.go | 2 ++ .../internal/services/cdn/customdomain/resource.go | 11 ++++++++++- .../internal/services/cdn/distribution/datasource.go | 2 ++ .../internal/services/cdn/distribution/resource.go | 8 ++++++++ .../internal/services/dns/recordset/datasource.go | 2 ++ stackit/internal/services/dns/recordset/resource.go | 8 ++++++++ stackit/internal/services/dns/zone/datasource.go | 3 +++ stackit/internal/services/dns/zone/resource.go | 8 ++++++++ stackit/internal/services/git/instance/datasource.go | 2 ++ stackit/internal/services/git/instance/resource.go | 6 ++++++ .../iaas/network/utils/v1network/resource.go | 2 +- .../services/iaas/networkarearoute/resource.go | 2 +- .../services/iaas/securitygrouprule/datasource.go | 2 +- stackit/internal/services/iaas/server/resource.go | 3 ++- .../iaasalpha/routingtable/route/datasource.go | 2 ++ .../iaasalpha/routingtable/route/resource.go | 8 ++++++++ .../iaasalpha/routingtable/routes/datasource.go | 2 ++ .../iaasalpha/routingtable/table/datasource.go | 2 ++ .../iaasalpha/routingtable/table/resource.go | 8 ++++++++ .../iaasalpha/routingtable/tables/datasource.go | 2 ++ stackit/internal/services/kms/key/datasource.go | 2 ++ stackit/internal/services/kms/key/resource.go | 6 ++++++ stackit/internal/services/kms/keyring/datasource.go | 2 ++ stackit/internal/services/kms/keyring/resource.go | 4 ++++ .../internal/services/kms/wrapping-key/datasource.go | 2 ++ .../internal/services/kms/wrapping-key/resource.go | 6 ++++++ .../services/loadbalancer/loadbalancer/datasource.go | 2 ++ .../services/loadbalancer/loadbalancer/resource.go | 9 ++++++++- .../observability-credential/resource.go | 6 ++++++ .../internal/services/logme/credential/datasource.go | 2 ++ .../internal/services/logme/credential/resource.go | 6 ++++++ .../internal/services/logme/instance/datasource.go | 2 ++ stackit/internal/services/logme/instance/resource.go | 8 ++++++++ .../services/mariadb/credential/datasource.go | 2 ++ .../internal/services/mariadb/credential/resource.go | 6 ++++++ .../internal/services/mariadb/instance/datasource.go | 2 ++ .../internal/services/mariadb/instance/resource.go | 8 ++++++++ .../internal/services/modelserving/token/resource.go | 9 ++++++++- .../services/mongodbflex/instance/datasource.go | 2 ++ .../services/mongodbflex/instance/resource.go | 8 ++++++++ .../internal/services/mongodbflex/user/datasource.go | 2 ++ .../internal/services/mongodbflex/user/resource.go | 8 ++++++++ .../services/objectstorage/bucket/datasource.go | 2 ++ .../services/objectstorage/bucket/resource.go | 6 ++++++ .../services/objectstorage/credential/datasource.go | 3 ++- .../services/objectstorage/credential/resource.go | 8 ++++++-- .../objectstorage/credentialsgroup/datasource.go | 2 ++ .../objectstorage/credentialsgroup/resource.go | 6 ++++++ .../services/observability/alertgroup/datasource.go | 3 ++- .../services/observability/alertgroup/resource.go | 9 ++++++--- .../services/observability/credential/resource.go | 7 ++++++- .../services/observability/instance/datasource.go | 2 ++ .../services/observability/instance/resource.go | 9 ++++++++- .../observability/log-alertgroup/datasource.go | 4 ++-- .../observability/log-alertgroup/resource.go | 9 ++++++--- .../observability/scrapeconfig/datasource.go | 2 ++ .../services/observability/scrapeconfig/resource.go | 10 ++++++++-- .../services/opensearch/credential/datasource.go | 3 ++- .../services/opensearch/credential/resource.go | 7 ++++++- .../services/opensearch/instance/datasource.go | 2 ++ .../services/opensearch/instance/resource.go | 8 ++++++++ .../services/postgresflex/database/datasource.go | 2 ++ .../services/postgresflex/database/resource.go | 7 ++++++- .../services/postgresflex/instance/datasource.go | 3 ++- .../services/postgresflex/instance/resource.go | 8 ++++++++ .../services/postgresflex/user/datasource.go | 2 ++ .../internal/services/postgresflex/user/resource.go | 9 ++++++++- .../services/rabbitmq/credential/datasource.go | 2 ++ .../services/rabbitmq/credential/resource.go | 7 ++++++- .../services/rabbitmq/instance/datasource.go | 2 ++ .../internal/services/rabbitmq/instance/resource.go | 8 ++++++++ .../internal/services/redis/credential/datasource.go | 2 ++ .../internal/services/redis/credential/resource.go | 7 ++++++- .../internal/services/redis/instance/datasource.go | 2 ++ stackit/internal/services/redis/instance/resource.go | 8 ++++++++ .../services/resourcemanager/folder/datasource.go | 2 ++ .../services/resourcemanager/folder/resource.go | 8 ++++++++ .../services/resourcemanager/project/datasource.go | 3 ++- .../services/resourcemanager/project/resource.go | 8 ++++++++ .../internal/services/scf/organization/datasource.go | 2 ++ .../internal/services/scf/organization/resource.go | 8 ++++++++ .../services/scf/organizationmanager/datasource.go | 2 ++ .../services/scf/organizationmanager/resource.go | 6 ++++++ stackit/internal/services/scf/platform/datasource.go | 2 ++ .../services/secretsmanager/instance/datasource.go | 2 ++ .../services/secretsmanager/instance/resource.go | 8 ++++++++ .../services/secretsmanager/user/datasource.go | 2 ++ .../services/secretsmanager/user/resource.go | 9 ++++++++- .../services/serverbackup/schedule/resource.go | 8 ++++++++ .../serverbackup/schedule/schedule_datasource.go | 2 ++ .../serverbackup/schedule/schedules_datasource.go | 2 ++ .../services/serverupdate/schedule/resource.go | 8 ++++++++ .../serverupdate/schedule/schedule_datasource.go | 2 ++ .../serverupdate/schedule/schedules_datasource.go | 2 ++ .../services/serviceaccount/account/datasource.go | 2 ++ .../services/serviceaccount/account/resource.go | 6 ++++++ .../internal/services/serviceaccount/key/resource.go | 8 ++++++-- .../services/serviceaccount/token/resource.go | 8 ++++++-- stackit/internal/services/ske/cluster/datasource.go | 3 ++- stackit/internal/services/ske/cluster/resource.go | 12 ++++++++++-- stackit/internal/services/ske/kubeconfig/resource.go | 5 ++++- .../services/sqlserverflex/instance/datasource.go | 3 ++- .../services/sqlserverflex/instance/resource.go | 8 ++++++++ .../services/sqlserverflex/user/datasource.go | 2 ++ .../internal/services/sqlserverflex/user/resource.go | 7 ++++++- 110 files changed, 491 insertions(+), 46 deletions(-) diff --git a/.github/docs/contribution-guide/resource.go b/.github/docs/contribution-guide/resource.go index ff44c7c61..cdea7cfe4 100644 --- a/.github/docs/contribution-guide/resource.go +++ b/.github/docs/contribution-guide/resource.go @@ -184,6 +184,7 @@ func (r *barResource) Create(ctx context.Context, req resource.CreateRequest, re if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() // not needed for global APIs ctx = tflog.SetField(ctx, "project_id", projectId) @@ -202,6 +203,7 @@ func (r *barResource) Create(ctx context.Context, req resource.CreateRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating bar", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // only in case the create bar API call is asynchronous (Make sure to include *ALL* fields which are part of the // internal terraform resource id! And please include the comment below in your code): @@ -244,6 +246,7 @@ func (r *barResource) Read(ctx context.Context, req resource.ReadRequest, resp * if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) barId := model.BarId.ValueString() @@ -256,6 +259,7 @@ func (r *barResource) Read(ctx context.Context, req resource.ReadRequest, resp * core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading bar", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(barResp, &model) @@ -285,6 +289,7 @@ func (r *barResource) Delete(ctx context.Context, req resource.DeleteRequest, re if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() barId := model.BarId.ValueString() @@ -297,6 +302,7 @@ func (r *barResource) Delete(ctx context.Context, req resource.DeleteRequest, re if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting bar", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) // only in case the bar delete API endpoint is asynchronous: use a wait handler to wait for the delete operation to complete _, err = wait.DeleteBarWaitHandler(ctx, r.client, projectId, region, barId).WaitWithContext(ctx) diff --git a/go.mod b/go.mod index 84c0de7ca..fe0a54b89 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/hashicorp/terraform-plugin-go v0.29.0 github.com/hashicorp/terraform-plugin-log v0.10.0 github.com/hashicorp/terraform-plugin-testing v1.13.3 - github.com/stackitcloud/stackit-sdk-go/core v0.19.0 + github.com/stackitcloud/stackit-sdk-go/core v0.20.0 github.com/stackitcloud/stackit-sdk-go/services/cdn v1.6.0 github.com/stackitcloud/stackit-sdk-go/services/dns v0.17.1 github.com/stackitcloud/stackit-sdk-go/services/git v0.8.0 diff --git a/go.sum b/go.sum index 7a43d814e..833fa34e4 100644 --- a/go.sum +++ b/go.sum @@ -152,8 +152,8 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= -github.com/stackitcloud/stackit-sdk-go/core v0.19.0 h1:dtJcs6/TTCzzb2RKI7HJugDrbCkaFEDmn1pOeFe8qnI= -github.com/stackitcloud/stackit-sdk-go/core v0.19.0/go.mod h1:fqto7M82ynGhEnpZU6VkQKYWYoFG5goC076JWXTUPRQ= +github.com/stackitcloud/stackit-sdk-go/core v0.20.0 h1:4rrUk6uT1g4nOn5/g1uXukP07Tux/o5xbMz/f/qE1rY= +github.com/stackitcloud/stackit-sdk-go/core v0.20.0/go.mod h1:fqto7M82ynGhEnpZU6VkQKYWYoFG5goC076JWXTUPRQ= github.com/stackitcloud/stackit-sdk-go/services/authorization v0.9.0 h1:7ZKd3b+E/R4TEVShLTXxx5FrsuDuJBOyuVOuKTMa4mo= github.com/stackitcloud/stackit-sdk-go/services/authorization v0.9.0/go.mod h1:/FoXa6hF77Gv8brrvLBCKa5ie1Xy9xn39yfHwaln9Tw= github.com/stackitcloud/stackit-sdk-go/services/cdn v1.6.0 h1:Q+qIdejeMsYMkbtVoI9BpGlKGdSVFRBhH/zj44SP8TM= diff --git a/stackit/internal/core/core.go b/stackit/internal/core/core.go index c6e72d656..0113712e9 100644 --- a/stackit/internal/core/core.go +++ b/stackit/internal/core/core.go @@ -112,6 +112,9 @@ func LogAndAddError(ctx context.Context, diags *diag.Diagnostics, summary, detai // LogAndAddWarning Logs the warning and adds it to the diags func LogAndAddWarning(ctx context.Context, diags *diag.Diagnostics, summary, detail string) { + if traceId := runtime.GetTraceId(ctx); traceId != "" { + detail = fmt.Sprintf("%s\nTrace ID: %q", detail, traceId) + } tflog.Warn(ctx, fmt.Sprintf("%s | %s", summary, detail)) diags.AddWarning(summary, detail) } @@ -140,6 +143,10 @@ func InitProviderContext(ctx context.Context) context.Context { func LogResponse(ctx context.Context) context.Context { // Logs the trace-id of the request - ctx = tflog.SetField(ctx, "x-trace-id", runtime.GetTraceId(ctx)) + traceId := runtime.GetTraceId(ctx) + ctx = tflog.SetField(ctx, "x-trace-id", traceId) + tflog.Info(ctx, "response data", map[string]interface{}{ + "x-trace-id": traceId, + }) return ctx } diff --git a/stackit/internal/services/authorization/roleassignments/resource.go b/stackit/internal/services/authorization/roleassignments/resource.go index 32d5909df..ef0c54263 100644 --- a/stackit/internal/services/authorization/roleassignments/resource.go +++ b/stackit/internal/services/authorization/roleassignments/resource.go @@ -152,6 +152,7 @@ func (r *roleAssignmentResource) Create(ctx context.Context, req resource.Create return } + ctx = core.InitProviderContext(ctx) ctx = r.annotateLogger(ctx, &model) if err := r.checkDuplicate(ctx, model); err != nil { @@ -170,6 +171,7 @@ func (r *roleAssignmentResource) Create(ctx context.Context, req resource.Create core.LogAndAddError(ctx, &resp.Diagnostics, fmt.Sprintf("Error creating %s role assignment", r.apiName), fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapMembersResponse(createResp, &model) @@ -194,6 +196,7 @@ func (r *roleAssignmentResource) Read(ctx context.Context, req resource.ReadRequ return } + ctx = core.InitProviderContext(ctx) ctx = r.annotateLogger(ctx, &model) listResp, err := r.authorizationClient.ListMembers(ctx, r.apiName, model.ResourceId.ValueString()).Subject(model.Subject.ValueString()).Execute() @@ -201,6 +204,7 @@ func (r *roleAssignmentResource) Read(ctx context.Context, req resource.ReadRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading authorizations", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapListMembersResponse(listResp, &model) @@ -232,6 +236,7 @@ func (r *roleAssignmentResource) Delete(ctx context.Context, req resource.Delete return } + ctx = core.InitProviderContext(ctx) ctx = r.annotateLogger(ctx, &model) payload := authorization.RemoveMembersPayload{ @@ -246,6 +251,7 @@ func (r *roleAssignmentResource) Delete(ctx context.Context, req resource.Delete if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, fmt.Sprintf("Error deleting %s role assignment", r.apiName), fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, fmt.Sprintf("%s role assignment deleted", r.apiName)) } diff --git a/stackit/internal/services/cdn/customdomain/datasource.go b/stackit/internal/services/cdn/customdomain/datasource.go index 14946b1e4..d0cc15a92 100644 --- a/stackit/internal/services/cdn/customdomain/datasource.go +++ b/stackit/internal/services/cdn/customdomain/datasource.go @@ -126,6 +126,7 @@ func (r *customDomainDataSource) Read(ctx context.Context, req datasource.ReadRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) distributionId := model.DistributionId.ValueString() @@ -145,6 +146,7 @@ func (r *customDomainDataSource) Read(ctx context.Context, req datasource.ReadRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading CDN custom domain", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Call the new data source mapping function err = mapCustomDomainDataSourceFields(customDomainResp, &model, projectId, distributionId) diff --git a/stackit/internal/services/cdn/customdomain/resource.go b/stackit/internal/services/cdn/customdomain/resource.go index f974348e8..5cf296464 100644 --- a/stackit/internal/services/cdn/customdomain/resource.go +++ b/stackit/internal/services/cdn/customdomain/resource.go @@ -186,6 +186,7 @@ func (r *customDomainResource) Create(ctx context.Context, req resource.CreateRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) distributionId := model.DistributionId.ValueString() @@ -207,6 +208,8 @@ func (r *customDomainResource) Create(ctx context.Context, req resource.CreateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating CDN custom domain", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) + _, err = wait.CreateCDNCustomDomainWaitHandler(ctx, r.client, projectId, distributionId, name).SetTimeout(5 * time.Minute).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating CDN custom domain", fmt.Sprintf("Waiting for create: %v", err)) @@ -240,6 +243,7 @@ func (r *customDomainResource) Read(ctx context.Context, req resource.ReadReques return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) distributionId := model.DistributionId.ValueString() @@ -248,7 +252,6 @@ func (r *customDomainResource) Read(ctx context.Context, req resource.ReadReques ctx = tflog.SetField(ctx, "name", name) customDomainResp, err := r.client.GetCustomDomain(ctx, projectId, distributionId, name).Execute() - if err != nil { var oapiErr *oapierror.GenericOpenAPIError // n.b. err is caught here if of type *oapierror.GenericOpenAPIError, which the stackit SDK client returns @@ -261,6 +264,8 @@ func (r *customDomainResource) Read(ctx context.Context, req resource.ReadReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading CDN custom domain", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) + err = mapCustomDomainResourceFields(customDomainResp, &model) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading CDN custom domain", fmt.Sprintf("Processing API payload: %v", err)) @@ -283,6 +288,7 @@ func (r *customDomainResource) Update(ctx context.Context, req resource.UpdateRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) distributionId := model.DistributionId.ValueString() @@ -305,6 +311,7 @@ func (r *customDomainResource) Update(ctx context.Context, req resource.UpdateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating CDN custom domain certificate", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.CreateCDNCustomDomainWaitHandler(ctx, r.client, projectId, distributionId, name).SetTimeout(5 * time.Minute).WaitWithContext(ctx) if err != nil { @@ -338,6 +345,7 @@ func (r *customDomainResource) Delete(ctx context.Context, req resource.DeleteRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) distributionId := model.DistributionId.ValueString() @@ -349,6 +357,7 @@ func (r *customDomainResource) Delete(ctx context.Context, req resource.DeleteRe if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Delete CDN custom domain", fmt.Sprintf("Delete custom domain: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteCDNCustomDomainWaitHandler(ctx, r.client, projectId, distributionId, name).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Delete CDN custom domain", fmt.Sprintf("Waiting for deletion: %v", err)) diff --git a/stackit/internal/services/cdn/distribution/datasource.go b/stackit/internal/services/cdn/distribution/datasource.go index 0f1b085ba..26afc1307 100644 --- a/stackit/internal/services/cdn/distribution/datasource.go +++ b/stackit/internal/services/cdn/distribution/datasource.go @@ -184,6 +184,7 @@ func (r *distributionDataSource) Read(ctx context.Context, req datasource.ReadRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() distributionId := model.DistributionId.ValueString() distributionResp, err := r.client.GetDistributionExecute(ctx, projectId, distributionId) @@ -199,6 +200,7 @@ func (r *distributionDataSource) Read(ctx context.Context, req datasource.ReadRe resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, distributionResp.Distribution, &model) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading CDN distribution", fmt.Sprintf("Error processing API response: %v", err)) diff --git a/stackit/internal/services/cdn/distribution/resource.go b/stackit/internal/services/cdn/distribution/resource.go index 2cfdd114b..c11ac69d3 100644 --- a/stackit/internal/services/cdn/distribution/resource.go +++ b/stackit/internal/services/cdn/distribution/resource.go @@ -334,6 +334,7 @@ func (r *distributionResource) Create(ctx context.Context, req resource.CreateRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -348,6 +349,7 @@ func (r *distributionResource) Create(ctx context.Context, req resource.CreateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating CDN distribution", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.CreateDistributionPoolWaitHandler(ctx, r.client, projectId, *createResp.Distribution.Id).SetTimeout(5 * time.Minute).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating CDN distribution", fmt.Sprintf("Waiting for create: %v", err)) @@ -376,6 +378,7 @@ func (r *distributionResource) Read(ctx context.Context, req resource.ReadReques return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() distributionId := model.DistributionId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -394,6 +397,7 @@ func (r *distributionResource) Read(ctx context.Context, req resource.ReadReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading CDN distribution", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, cdnResp.Distribution, &model) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading CDN ditribution", fmt.Sprintf("Processing API payload: %v", err)) @@ -416,6 +420,7 @@ func (r *distributionResource) Update(ctx context.Context, req resource.UpdateRe return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() distributionId := model.DistributionId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -515,6 +520,7 @@ func (r *distributionResource) Update(ctx context.Context, req resource.UpdateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Update CDN distribution", fmt.Sprintf("Patch distribution: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.UpdateDistributionWaitHandler(ctx, r.client, projectId, distributionId).WaitWithContext(ctx) if err != nil { @@ -543,6 +549,7 @@ func (r *distributionResource) Delete(ctx context.Context, req resource.DeleteRe if resp.Diagnostics.HasError() { return } + ctx = core.LogResponse(ctx) projectId := model.ProjectId.ValueString() distributionId := model.DistributionId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -552,6 +559,7 @@ func (r *distributionResource) Delete(ctx context.Context, req resource.DeleteRe if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Delete CDN distribution", fmt.Sprintf("Delete distribution: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteDistributionWaitHandler(ctx, r.client, projectId, distributionId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Delete CDN distribution", fmt.Sprintf("Waiting for deletion: %v", err)) diff --git a/stackit/internal/services/dns/recordset/datasource.go b/stackit/internal/services/dns/recordset/datasource.go index 792872611..8adf0be88 100644 --- a/stackit/internal/services/dns/recordset/datasource.go +++ b/stackit/internal/services/dns/recordset/datasource.go @@ -136,6 +136,7 @@ func (d *recordSetDataSource) Read(ctx context.Context, req datasource.ReadReque if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() recordSetId := model.RecordSetId.ValueString() @@ -157,6 +158,7 @@ func (d *recordSetDataSource) Read(ctx context.Context, req datasource.ReadReque resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) if recordSetResp != nil && recordSetResp.Rrset.State != nil && *recordSetResp.Rrset.State == dns.RECORDSETSTATE_DELETE_SUCCEEDED { resp.State.RemoveResource(ctx) core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading record set", "Record set was deleted successfully") diff --git a/stackit/internal/services/dns/recordset/resource.go b/stackit/internal/services/dns/recordset/resource.go index 9a9046350..9f2369962 100644 --- a/stackit/internal/services/dns/recordset/resource.go +++ b/stackit/internal/services/dns/recordset/resource.go @@ -200,6 +200,7 @@ func (r *recordSetResource) Create(ctx context.Context, req resource.CreateReque return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -217,6 +218,7 @@ func (r *recordSetResource) Create(ctx context.Context, req resource.CreateReque core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating record set", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Write id attributes to state before polling via the wait handler - just in case anything goes wrong during the wait handler utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{ @@ -257,6 +259,7 @@ func (r *recordSetResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() recordSetId := model.RecordSetId.ValueString() @@ -273,6 +276,7 @@ func (r *recordSetResource) Read(ctx context.Context, req resource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) @@ -300,6 +304,7 @@ func (r *recordSetResource) Update(ctx context.Context, req resource.UpdateReque return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() recordSetId := model.RecordSetId.ValueString() @@ -319,6 +324,7 @@ func (r *recordSetResource) Update(ctx context.Context, req resource.UpdateReque core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating record set", err.Error()) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateRecordSetWaitHandler(ctx, r.client, projectId, zoneId, recordSetId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating record set", fmt.Sprintf("Instance update waiting: %v", err)) @@ -348,6 +354,7 @@ func (r *recordSetResource) Delete(ctx context.Context, req resource.DeleteReque return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() recordSetId := model.RecordSetId.ValueString() @@ -360,6 +367,7 @@ func (r *recordSetResource) Delete(ctx context.Context, req resource.DeleteReque if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting record set", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteRecordSetWaitHandler(ctx, r.client, projectId, zoneId, recordSetId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting record set", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/dns/zone/datasource.go b/stackit/internal/services/dns/zone/datasource.go index 682c87df2..75b7890c7 100644 --- a/stackit/internal/services/dns/zone/datasource.go +++ b/stackit/internal/services/dns/zone/datasource.go @@ -179,6 +179,7 @@ func (d *zoneDataSource) Read(ctx context.Context, req datasource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() dnsName := model.DnsName.ValueString() @@ -205,6 +206,7 @@ func (d *zoneDataSource) Read(ctx context.Context, req datasource.ReadRequest, r resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) } else { listZoneResp, err := d.client.ListZones(ctx, projectId). DnsNameEq(dnsName). @@ -224,6 +226,7 @@ func (d *zoneDataSource) Read(ctx context.Context, req datasource.ReadRequest, r resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) if *listZoneResp.TotalItems != 1 { utils.LogError( ctx, diff --git a/stackit/internal/services/dns/zone/resource.go b/stackit/internal/services/dns/zone/resource.go index cfddeafea..de1d11e27 100644 --- a/stackit/internal/services/dns/zone/resource.go +++ b/stackit/internal/services/dns/zone/resource.go @@ -284,6 +284,7 @@ func (r *zoneResource) Create(ctx context.Context, req resource.CreateRequest, r return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -299,6 +300,7 @@ func (r *zoneResource) Create(ctx context.Context, req resource.CreateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating zone", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Write id attributes to state before polling via the wait handler - just in case anything goes wrong during the wait handler zoneId := *createResp.Zone.Id @@ -338,6 +340,7 @@ func (r *zoneResource) Read(ctx context.Context, req resource.ReadRequest, resp if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -348,6 +351,7 @@ func (r *zoneResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading zone", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if zoneResp != nil && zoneResp.Zone.State != nil && *zoneResp.Zone.State == dns.ZONESTATE_DELETE_SUCCEEDED { resp.State.RemoveResource(ctx) return @@ -377,6 +381,7 @@ func (r *zoneResource) Update(ctx context.Context, req resource.UpdateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -394,6 +399,7 @@ func (r *zoneResource) Update(ctx context.Context, req resource.UpdateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating zone", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateZoneWaitHandler(ctx, r.client, projectId, zoneId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating zone", fmt.Sprintf("Zone update waiting: %v", err)) @@ -423,6 +429,7 @@ func (r *zoneResource) Delete(ctx context.Context, req resource.DeleteRequest, r return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() zoneId := model.ZoneId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -434,6 +441,7 @@ func (r *zoneResource) Delete(ctx context.Context, req resource.DeleteRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting zone", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteZoneWaitHandler(ctx, r.client, projectId, zoneId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting zone", fmt.Sprintf("Zone deletion waiting: %v", err)) diff --git a/stackit/internal/services/git/instance/datasource.go b/stackit/internal/services/git/instance/datasource.go index d331810c1..1a1a52840 100644 --- a/stackit/internal/services/git/instance/datasource.go +++ b/stackit/internal/services/git/instance/datasource.go @@ -131,6 +131,7 @@ func (g *gitDataSource) Read(ctx context.Context, req datasource.ReadRequest, re if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Extract the project ID and instance id of the model projectId := model.ProjectId.ValueString() @@ -148,6 +149,7 @@ func (g *gitDataSource) Read(ctx context.Context, req datasource.ReadRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading git instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, gitInstanceResp, &model) if err != nil { diff --git a/stackit/internal/services/git/instance/resource.go b/stackit/internal/services/git/instance/resource.go index 178ce1fe9..6e0856f2d 100644 --- a/stackit/internal/services/git/instance/resource.go +++ b/stackit/internal/services/git/instance/resource.go @@ -195,6 +195,7 @@ func (g *gitResource) Create(ctx context.Context, req resource.CreateRequest, re return } + ctx = core.InitProviderContext(ctx) // Set logging context with the project ID and instance ID. projectId := model.ProjectId.ValueString() instanceName := model.Name.ValueString() @@ -215,6 +216,7 @@ func (g *gitResource) Create(ctx context.Context, req resource.CreateRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating git instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) gitInstanceId := *gitInstanceResp.Id _, err = wait.CreateGitInstanceWaitHandler(ctx, g.client, projectId, gitInstanceId).WaitWithContext(ctx) @@ -248,6 +250,7 @@ func (g *gitResource) Read(ctx context.Context, req resource.ReadRequest, resp * return } + ctx = core.InitProviderContext(ctx) // Extract the project ID and instance id of the model projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() @@ -264,6 +267,7 @@ func (g *gitResource) Read(ctx context.Context, req resource.ReadRequest, resp * core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading git instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, gitInstanceResp, &model) if err != nil { @@ -298,6 +302,7 @@ func (g *gitResource) Delete(ctx context.Context, req resource.DeleteRequest, re return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -309,6 +314,7 @@ func (g *gitResource) Delete(ctx context.Context, req resource.DeleteRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting git instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteGitInstanceWaitHandler(ctx, g.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { diff --git a/stackit/internal/services/iaas/network/utils/v1network/resource.go b/stackit/internal/services/iaas/network/utils/v1network/resource.go index d97693609..cb1b94819 100644 --- a/stackit/internal/services/iaas/network/utils/v1network/resource.go +++ b/stackit/internal/services/iaas/network/utils/v1network/resource.go @@ -149,12 +149,12 @@ func Update(ctx context.Context, req resource.UpdateRequest, resp *resource.Upda core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.UpdateNetworkWaitHandler(ctx, client, projectId, networkId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating network", fmt.Sprintf("Network update waiting: %v", err)) return } - ctx = core.LogResponse(ctx) err = mapFields(ctx, waitResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/networkarearoute/resource.go b/stackit/internal/services/iaas/networkarearoute/resource.go index 198b5da3b..92416ae92 100644 --- a/stackit/internal/services/iaas/networkarearoute/resource.go +++ b/stackit/internal/services/iaas/networkarearoute/resource.go @@ -179,7 +179,7 @@ func (r *networkAreaRouteResource) Create(ctx context.Context, req resource.Crea core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network area route", fmt.Sprintf("Calling API: %v", err)) return } - core.LogResponse(ctx) + ctx = core.LogResponse(ctx) if routes.Items == nil || len(*routes.Items) == 0 { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating network area route.", "Empty response from API") return diff --git a/stackit/internal/services/iaas/securitygrouprule/datasource.go b/stackit/internal/services/iaas/securitygrouprule/datasource.go index dfa3ac936..ec4462541 100644 --- a/stackit/internal/services/iaas/securitygrouprule/datasource.go +++ b/stackit/internal/services/iaas/securitygrouprule/datasource.go @@ -170,7 +170,6 @@ func (d *securityGroupRuleDataSource) Read(ctx context.Context, req datasource.R ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "security_group_id", securityGroupId) ctx = tflog.SetField(ctx, "security_group_rule_id", securityGroupRuleId) - ctx = core.LogResponse(ctx) securityGroupRuleResp, err := d.client.GetSecurityGroupRule(ctx, projectId, securityGroupId, securityGroupRuleId).Execute() if err != nil { @@ -187,6 +186,7 @@ func (d *securityGroupRuleDataSource) Read(ctx context.Context, req datasource.R resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(securityGroupRuleResp, &model) if err != nil { diff --git a/stackit/internal/services/iaas/server/resource.go b/stackit/internal/services/iaas/server/resource.go index 797688d60..3a85ce297 100644 --- a/stackit/internal/services/iaas/server/resource.go +++ b/stackit/internal/services/iaas/server/resource.go @@ -705,7 +705,6 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest, if server, err = r.client.GetServer(ctx, model.ProjectId.ValueString(), model.ServerId.ValueString()).Execute(); err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error retrieving server state", fmt.Sprintf("Getting server state: %v", err)) } - ctx = core.LogResponse(ctx) if model.DesiredStatus.ValueString() == modelStateDeallocated { // if the target state is "deallocated", we have to perform the server update first @@ -715,6 +714,7 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error()) return } + ctx = core.LogResponse(ctx) if err := updateServerStatus(ctx, r.client, server.Status, &model); err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error()) @@ -732,6 +732,7 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error()) return } + ctx = core.LogResponse(ctx) } // Re-fetch the server data, to get the details values. diff --git a/stackit/internal/services/iaasalpha/routingtable/route/datasource.go b/stackit/internal/services/iaasalpha/routingtable/route/datasource.go index 51846f69f..05b48dd69 100644 --- a/stackit/internal/services/iaasalpha/routingtable/route/datasource.go +++ b/stackit/internal/services/iaasalpha/routingtable/route/datasource.go @@ -78,6 +78,7 @@ func (d *routingTableRouteDataSource) Read(ctx context.Context, req datasource.R return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() region := d.providerData.GetRegionWithOverride(model.Region) routingTableId := model.RoutingTableId.ValueString() @@ -105,6 +106,7 @@ func (d *routingTableRouteDataSource) Read(ctx context.Context, req datasource.R resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = shared.MapRouteModel(ctx, routeResp, &model, region) if err != nil { diff --git a/stackit/internal/services/iaasalpha/routingtable/route/resource.go b/stackit/internal/services/iaasalpha/routingtable/route/resource.go index a7fb1025e..b27f81319 100644 --- a/stackit/internal/services/iaasalpha/routingtable/route/resource.go +++ b/stackit/internal/services/iaasalpha/routingtable/route/resource.go @@ -237,6 +237,7 @@ func (r *routeResource) Create(ctx context.Context, req resource.CreateRequest, return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() routingTableId := model.RoutingTableId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() @@ -259,6 +260,7 @@ func (r *routeResource) Create(ctx context.Context, req resource.CreateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating routing table route", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFieldsFromList(ctx, routeResp, &model, region) @@ -284,6 +286,7 @@ func (r *routeResource) Read(ctx context.Context, req resource.ReadRequest, resp if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() routingTableId := model.RoutingTableId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() @@ -301,6 +304,7 @@ func (r *routeResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading routing table route", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = shared.MapRouteModel(ctx, routeResp, &model, region) @@ -327,6 +331,7 @@ func (r *routeResource) Update(ctx context.Context, req resource.UpdateRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() routingTableId := model.RoutingTableId.ValueString() @@ -360,6 +365,7 @@ func (r *routeResource) Update(ctx context.Context, req resource.UpdateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating routing table route", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = shared.MapRouteModel(ctx, route, &model, region) @@ -385,6 +391,7 @@ func (r *routeResource) Delete(ctx context.Context, req resource.DeleteRequest, return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() routingTableId := model.RoutingTableId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() @@ -402,6 +409,7 @@ func (r *routeResource) Delete(ctx context.Context, req resource.DeleteRequest, if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error routing table route", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Routing table route deleted") } diff --git a/stackit/internal/services/iaasalpha/routingtable/routes/datasource.go b/stackit/internal/services/iaasalpha/routingtable/routes/datasource.go index 26ea2d8a1..70727366f 100644 --- a/stackit/internal/services/iaasalpha/routingtable/routes/datasource.go +++ b/stackit/internal/services/iaasalpha/routingtable/routes/datasource.go @@ -89,6 +89,7 @@ func (d *routingTableRoutesDataSource) Read(ctx context.Context, req datasource. return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() region := d.providerData.GetRegionWithOverride(model.Region) networkAreaId := model.NetworkAreaId.ValueString() @@ -113,6 +114,7 @@ func (d *routingTableRoutesDataSource) Read(ctx context.Context, req datasource. resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapDataSourceRoutingTableRoutes(ctx, routesResp, &model, region) if err != nil { diff --git a/stackit/internal/services/iaasalpha/routingtable/table/datasource.go b/stackit/internal/services/iaasalpha/routingtable/table/datasource.go index 61b4ddbe4..068a386b2 100644 --- a/stackit/internal/services/iaasalpha/routingtable/table/datasource.go +++ b/stackit/internal/services/iaasalpha/routingtable/table/datasource.go @@ -81,6 +81,7 @@ func (d *routingTableDataSource) Read(ctx context.Context, req datasource.ReadRe return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() region := d.providerData.GetRegionWithOverride(model.Region) routingTableId := model.RoutingTableId.ValueString() @@ -105,6 +106,7 @@ func (d *routingTableDataSource) Read(ctx context.Context, req datasource.ReadRe resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapDatasourceFields(ctx, routingTableResp, &model, region) if err != nil { diff --git a/stackit/internal/services/iaasalpha/routingtable/table/resource.go b/stackit/internal/services/iaasalpha/routingtable/table/resource.go index 43d6d9070..fa22b8b39 100644 --- a/stackit/internal/services/iaasalpha/routingtable/table/resource.go +++ b/stackit/internal/services/iaasalpha/routingtable/table/resource.go @@ -228,6 +228,7 @@ func (r *routingTableResource) Create(ctx context.Context, req resource.CreateRe return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -248,6 +249,7 @@ func (r *routingTableResource) Create(ctx context.Context, req resource.CreateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating routing table", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, routingTable, &model, region) @@ -273,6 +275,7 @@ func (r *routingTableResource) Read(ctx context.Context, req resource.ReadReques return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() routingTableId := model.RoutingTableId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() @@ -298,6 +301,7 @@ func (r *routingTableResource) Read(ctx context.Context, req resource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, routingTableResp, &model, region) @@ -324,6 +328,7 @@ func (r *routingTableResource) Update(ctx context.Context, req resource.UpdateRe return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() routingTableId := model.RoutingTableId.ValueString() networkAreaId := model.NetworkAreaId.ValueString() @@ -354,6 +359,7 @@ func (r *routingTableResource) Update(ctx context.Context, req resource.UpdateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating routing table", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, routingTable, &model, region) @@ -380,6 +386,7 @@ func (r *routingTableResource) Delete(ctx context.Context, req resource.DeleteRe return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) routingTableId := model.RoutingTableId.ValueString() @@ -395,6 +402,7 @@ func (r *routingTableResource) Delete(ctx context.Context, req resource.DeleteRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting routing table", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Routing table deleted") } diff --git a/stackit/internal/services/iaasalpha/routingtable/tables/datasource.go b/stackit/internal/services/iaasalpha/routingtable/tables/datasource.go index eac2257c3..bdc1f925b 100644 --- a/stackit/internal/services/iaasalpha/routingtable/tables/datasource.go +++ b/stackit/internal/services/iaasalpha/routingtable/tables/datasource.go @@ -123,6 +123,7 @@ func (d *routingTablesDataSource) Read(ctx context.Context, req datasource.ReadR return } + ctx = core.InitProviderContext(ctx) organizationId := model.OrganizationId.ValueString() region := d.providerData.GetRegionWithOverride(model.Region) networkAreaId := model.NetworkAreaId.ValueString() @@ -145,6 +146,7 @@ func (d *routingTablesDataSource) Read(ctx context.Context, req datasource.ReadR resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapDataSourceRoutingTables(ctx, routingTablesResp, &model, region) if err != nil { diff --git a/stackit/internal/services/kms/key/datasource.go b/stackit/internal/services/kms/key/datasource.go index c9f20fee8..3f4e2d317 100644 --- a/stackit/internal/services/kms/key/datasource.go +++ b/stackit/internal/services/kms/key/datasource.go @@ -147,6 +147,7 @@ func (k *keyDataSource) Read(ctx context.Context, req datasource.ReadRequest, re return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := k.providerData.GetRegionWithOverride(model.Region) @@ -172,6 +173,7 @@ func (k *keyDataSource) Read(ctx context.Context, req datasource.ReadRequest, re resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(keyResponse, &model, region) if err != nil { diff --git a/stackit/internal/services/kms/key/resource.go b/stackit/internal/services/kms/key/resource.go index 4310ec6f5..920508f73 100644 --- a/stackit/internal/services/kms/key/resource.go +++ b/stackit/internal/services/kms/key/resource.go @@ -243,6 +243,7 @@ func (r *keyResource) Create(ctx context.Context, req resource.CreateRequest, re return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) keyRingId := model.KeyRingId.ValueString() @@ -263,6 +264,7 @@ func (r *keyResource) Create(ctx context.Context, req resource.CreateRequest, re return } + ctx = core.LogResponse(ctx) if createResponse == nil || createResponse.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating key", "API returned empty response") return @@ -305,6 +307,7 @@ func (r *keyResource) Read(ctx context.Context, req resource.ReadRequest, resp * return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -326,6 +329,7 @@ func (r *keyResource) Read(ctx context.Context, req resource.ReadRequest, resp * core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading key", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(keyResponse, &model, region) if err != nil { @@ -353,6 +357,7 @@ func (r *keyResource) Delete(ctx context.Context, req resource.DeleteRequest, re return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -362,6 +367,7 @@ func (r *keyResource) Delete(ctx context.Context, req resource.DeleteRequest, re if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting key", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) // The keys can't be deleted instantly by Terraform, they can only be scheduled for deletion via the API. core.LogAndAddWarning(ctx, &resp.Diagnostics, "Key scheduled for deletion on API side", deletionWarning) diff --git a/stackit/internal/services/kms/keyring/datasource.go b/stackit/internal/services/kms/keyring/datasource.go index 55398f820..aace66af9 100644 --- a/stackit/internal/services/kms/keyring/datasource.go +++ b/stackit/internal/services/kms/keyring/datasource.go @@ -100,6 +100,7 @@ func (k *keyRingDataSource) Read(ctx context.Context, request datasource.ReadReq if response.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := k.providerData.GetRegionWithOverride(model.Region) @@ -123,6 +124,7 @@ func (k *keyRingDataSource) Read(ctx context.Context, request datasource.ReadReq response.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(keyRingResponse, &model, region) if err != nil { diff --git a/stackit/internal/services/kms/keyring/resource.go b/stackit/internal/services/kms/keyring/resource.go index 93da26cf1..ebc418f91 100644 --- a/stackit/internal/services/kms/keyring/resource.go +++ b/stackit/internal/services/kms/keyring/resource.go @@ -178,6 +178,7 @@ func (r *keyRingResource) Create(ctx context.Context, req resource.CreateRequest return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -194,6 +195,7 @@ func (r *keyRingResource) Create(ctx context.Context, req resource.CreateRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating keyring", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if createResponse == nil || createResponse.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating keyring", "API returned empty response") @@ -236,6 +238,7 @@ func (r *keyRingResource) Read(ctx context.Context, req resource.ReadRequest, re return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -255,6 +258,7 @@ func (r *keyRingResource) Read(ctx context.Context, req resource.ReadRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading keyring", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(keyRingResponse, &model, region) if err != nil { diff --git a/stackit/internal/services/kms/wrapping-key/datasource.go b/stackit/internal/services/kms/wrapping-key/datasource.go index cca9a2558..2bfea65ac 100644 --- a/stackit/internal/services/kms/wrapping-key/datasource.go +++ b/stackit/internal/services/kms/wrapping-key/datasource.go @@ -135,6 +135,7 @@ func (w *wrappingKeyDataSource) Read(ctx context.Context, request datasource.Rea return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := w.providerData.GetRegionWithOverride(model.Region) @@ -160,6 +161,7 @@ func (w *wrappingKeyDataSource) Read(ctx context.Context, request datasource.Rea response.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(wrappingKeyResponse, &model, region) if err != nil { diff --git a/stackit/internal/services/kms/wrapping-key/resource.go b/stackit/internal/services/kms/wrapping-key/resource.go index 021997bfa..33a371a61 100644 --- a/stackit/internal/services/kms/wrapping-key/resource.go +++ b/stackit/internal/services/kms/wrapping-key/resource.go @@ -248,6 +248,7 @@ func (r *wrappingKeyResource) Create(ctx context.Context, req resource.CreateReq return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) keyRingId := model.KeyRingId.ValueString() @@ -267,6 +268,7 @@ func (r *wrappingKeyResource) Create(ctx context.Context, req resource.CreateReq core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating wrapping key", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if createWrappingKeyResp == nil || createWrappingKeyResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating wrapping key", "API returned empty response") @@ -311,6 +313,7 @@ func (r *wrappingKeyResource) Read(ctx context.Context, request resource.ReadReq return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -332,6 +335,7 @@ func (r *wrappingKeyResource) Read(ctx context.Context, request resource.ReadReq core.LogAndAddError(ctx, &response.Diagnostics, "Error reading wrapping key", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(wrappingKeyResponse, &model, region) if err != nil { @@ -359,6 +363,7 @@ func (r *wrappingKeyResource) Delete(ctx context.Context, request resource.Delet return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() keyRingId := model.KeyRingId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -368,6 +373,7 @@ func (r *wrappingKeyResource) Delete(ctx context.Context, request resource.Delet if err != nil { core.LogAndAddError(ctx, &response.Diagnostics, "Error deleting wrapping key", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "wrapping key deleted") } diff --git a/stackit/internal/services/loadbalancer/loadbalancer/datasource.go b/stackit/internal/services/loadbalancer/loadbalancer/datasource.go index 393ba022c..03c49b835 100644 --- a/stackit/internal/services/loadbalancer/loadbalancer/datasource.go +++ b/stackit/internal/services/loadbalancer/loadbalancer/datasource.go @@ -385,6 +385,7 @@ func (r *loadBalancerDataSource) Read(ctx context.Context, req datasource.ReadRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() name := model.Name.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -407,6 +408,7 @@ func (r *loadBalancerDataSource) Read(ctx context.Context, req datasource.ReadRe resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, lbResp, &model, region) diff --git a/stackit/internal/services/loadbalancer/loadbalancer/resource.go b/stackit/internal/services/loadbalancer/loadbalancer/resource.go index e7f38248c..f7d794628 100644 --- a/stackit/internal/services/loadbalancer/loadbalancer/resource.go +++ b/stackit/internal/services/loadbalancer/loadbalancer/resource.go @@ -8,7 +8,6 @@ import ( "time" "github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault" - loadbalancerUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/loadbalancer/utils" "github.com/google/uuid" @@ -750,6 +749,7 @@ func (r *loadBalancerResource) Create(ctx context.Context, req resource.CreateRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -768,6 +768,7 @@ func (r *loadBalancerResource) Create(ctx context.Context, req resource.CreateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating load balancer", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.CreateLoadBalancerWaitHandler(ctx, r.client, projectId, region, *createResp.Name).SetTimeout(90 * time.Minute).WaitWithContext(ctx) if err != nil { @@ -800,6 +801,7 @@ func (r *loadBalancerResource) Read(ctx context.Context, req resource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() name := model.Name.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -818,6 +820,7 @@ func (r *loadBalancerResource) Read(ctx context.Context, req resource.ReadReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading load balancer", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, lbResp, &model, region) @@ -844,6 +847,7 @@ func (r *loadBalancerResource) Update(ctx context.Context, req resource.UpdateRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() name := model.Name.ValueString() region := model.Region.ValueString() @@ -875,6 +879,7 @@ func (r *loadBalancerResource) Update(ctx context.Context, req resource.UpdateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating load balancer", fmt.Sprintf("Calling API for target pool: %v", err)) return } + ctx = core.LogResponse(ctx) } ctx = tflog.SetField(ctx, "target_pool_name", nil) @@ -910,6 +915,7 @@ func (r *loadBalancerResource) Delete(ctx context.Context, req resource.DeleteRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() name := model.Name.ValueString() region := model.Region.ValueString() @@ -923,6 +929,7 @@ func (r *loadBalancerResource) Delete(ctx context.Context, req resource.DeleteRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting load balancer", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteLoadBalancerWaitHandler(ctx, r.client, projectId, region, name).WaitWithContext(ctx) if err != nil { diff --git a/stackit/internal/services/loadbalancer/observability-credential/resource.go b/stackit/internal/services/loadbalancer/observability-credential/resource.go index 8ac96211d..d30886776 100644 --- a/stackit/internal/services/loadbalancer/observability-credential/resource.go +++ b/stackit/internal/services/loadbalancer/observability-credential/resource.go @@ -188,6 +188,7 @@ func (r *observabilityCredentialResource) Create(ctx context.Context, req resour if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -206,6 +207,7 @@ func (r *observabilityCredentialResource) Create(ctx context.Context, req resour core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating observability credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "credentials_ref", createResp.Credential.CredentialsRef) // Map response body to schema @@ -233,6 +235,7 @@ func (r *observabilityCredentialResource) Read(ctx context.Context, req resource if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsRef := model.CredentialsRef.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -251,6 +254,7 @@ func (r *observabilityCredentialResource) Read(ctx context.Context, req resource core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading observability credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(credResp.Credential, &model, region) @@ -281,6 +285,7 @@ func (r *observabilityCredentialResource) Delete(ctx context.Context, req resour if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsRef := model.CredentialsRef.ValueString() region := model.Region.ValueString() @@ -294,6 +299,7 @@ func (r *observabilityCredentialResource) Delete(ctx context.Context, req resour core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting observability credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Load balancer observability credential deleted") } diff --git a/stackit/internal/services/logme/credential/datasource.go b/stackit/internal/services/logme/credential/datasource.go index 90f652942..046df18b7 100644 --- a/stackit/internal/services/logme/credential/datasource.go +++ b/stackit/internal/services/logme/credential/datasource.go @@ -124,6 +124,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -146,6 +147,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(recordSetResp, &model) diff --git a/stackit/internal/services/logme/credential/resource.go b/stackit/internal/services/logme/credential/resource.go index f98668225..fdf83c16b 100644 --- a/stackit/internal/services/logme/credential/resource.go +++ b/stackit/internal/services/logme/credential/resource.go @@ -160,6 +160,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -171,6 +172,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if credentialsResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credential id") return @@ -206,6 +208,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -223,6 +226,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(recordSetResp, &model) @@ -255,6 +259,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -267,6 +272,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/logme/instance/datasource.go b/stackit/internal/services/logme/instance/datasource.go index a7f94ca35..f993bdee6 100644 --- a/stackit/internal/services/logme/instance/datasource.go +++ b/stackit/internal/services/logme/instance/datasource.go @@ -246,6 +246,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -267,6 +268,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(instanceResp, &model) if err != nil { diff --git a/stackit/internal/services/logme/instance/resource.go b/stackit/internal/services/logme/instance/resource.go index 8c1234b33..2476082bd 100644 --- a/stackit/internal/services/logme/instance/resource.go +++ b/stackit/internal/services/logme/instance/resource.go @@ -389,6 +389,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -420,6 +421,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.InstanceId ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, projectId, instanceId).SetTimeout(90 * time.Minute).WaitWithContext(ctx) @@ -452,6 +454,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -467,6 +470,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(instanceResp, &model) @@ -499,6 +503,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -532,6 +537,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -562,6 +568,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -573,6 +580,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/mariadb/credential/datasource.go b/stackit/internal/services/mariadb/credential/datasource.go index d97209c85..5a257a976 100644 --- a/stackit/internal/services/mariadb/credential/datasource.go +++ b/stackit/internal/services/mariadb/credential/datasource.go @@ -132,6 +132,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -154,6 +155,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) diff --git a/stackit/internal/services/mariadb/credential/resource.go b/stackit/internal/services/mariadb/credential/resource.go index 15a7c52ad..e20d25f04 100644 --- a/stackit/internal/services/mariadb/credential/resource.go +++ b/stackit/internal/services/mariadb/credential/resource.go @@ -168,6 +168,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -179,6 +180,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if credentialsResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credential id") return @@ -214,6 +216,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -231,6 +234,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) @@ -263,6 +267,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -275,6 +280,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/mariadb/instance/datasource.go b/stackit/internal/services/mariadb/instance/datasource.go index 39fe12703..4fb5d0351 100644 --- a/stackit/internal/services/mariadb/instance/datasource.go +++ b/stackit/internal/services/mariadb/instance/datasource.go @@ -182,6 +182,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -203,6 +204,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(instanceResp, &model) if err != nil { diff --git a/stackit/internal/services/mariadb/instance/resource.go b/stackit/internal/services/mariadb/instance/resource.go index 39d2f3ecf..82a8df7a4 100644 --- a/stackit/internal/services/mariadb/instance/resource.go +++ b/stackit/internal/services/mariadb/instance/resource.go @@ -282,6 +282,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -313,6 +314,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.InstanceId ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) @@ -345,6 +347,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -360,6 +363,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(instanceResp, &model) @@ -392,6 +396,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -425,6 +430,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -455,6 +461,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -466,6 +473,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/modelserving/token/resource.go b/stackit/internal/services/modelserving/token/resource.go index 0bdb79f38..3d15bb8d4 100644 --- a/stackit/internal/services/modelserving/token/resource.go +++ b/stackit/internal/services/modelserving/token/resource.go @@ -237,8 +237,8 @@ func (r *tokenResource) Create(ctx context.Context, req resource.CreateRequest, return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() - region := r.providerData.GetRegionWithOverride(model.Region) ctx = tflog.SetField(ctx, "project_id", projectId) @@ -298,6 +298,7 @@ func (r *tokenResource) Create(ctx context.Context, req resource.CreateRequest, ) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.CreateModelServingWaitHandler(ctx, r.client, region, projectId, *createTokenResp.Token.Id).WaitWithContext(ctx) if err != nil { @@ -331,6 +332,7 @@ func (r *tokenResource) Read(ctx context.Context, req resource.ReadRequest, resp return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() tokenId := model.TokenId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -354,6 +356,7 @@ func (r *tokenResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading AI model serving auth token", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if getTokenResp != nil && getTokenResp.Token.State != nil && *getTokenResp.Token.State == inactiveState { @@ -397,6 +400,7 @@ func (r *tokenResource) Update(ctx context.Context, req resource.UpdateRequest, return } + ctx = core.InitProviderContext(ctx) projectId := state.ProjectId.ValueString() tokenId := state.TokenId.ValueString() @@ -439,6 +443,7 @@ func (r *tokenResource) Update(ctx context.Context, req resource.UpdateRequest, ) return } + ctx = core.LogResponse(ctx) if updateTokenResp != nil && updateTokenResp.Token.State != nil && *updateTokenResp.Token.State == inactiveState { @@ -480,6 +485,7 @@ func (r *tokenResource) Delete(ctx context.Context, req resource.DeleteRequest, return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() tokenId := model.TokenId.ValueString() @@ -503,6 +509,7 @@ func (r *tokenResource) Delete(ctx context.Context, req resource.DeleteRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting AI model serving auth token", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteModelServingWaitHandler(ctx, r.client, region, projectId, tokenId). WaitWithContext(ctx) diff --git a/stackit/internal/services/mongodbflex/instance/datasource.go b/stackit/internal/services/mongodbflex/instance/datasource.go index 3ce92a3f5..a67ff3ce1 100644 --- a/stackit/internal/services/mongodbflex/instance/datasource.go +++ b/stackit/internal/services/mongodbflex/instance/datasource.go @@ -197,6 +197,7 @@ func (d *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := d.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -218,6 +219,7 @@ func (d *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) var flavor = &flavorModel{} if !(model.Flavor.IsNull() || model.Flavor.IsUnknown()) { diff --git a/stackit/internal/services/mongodbflex/instance/resource.go b/stackit/internal/services/mongodbflex/instance/resource.go index e3b4d2262..003d17ebc 100644 --- a/stackit/internal/services/mongodbflex/instance/resource.go +++ b/stackit/internal/services/mongodbflex/instance/resource.go @@ -355,6 +355,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) ctx = tflog.SetField(ctx, "project_id", projectId) @@ -411,6 +412,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if createResp == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", "API response is empty") return @@ -484,6 +486,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -527,6 +530,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", err.Error()) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, instanceResp, &model, flavor, storage, options, region) @@ -552,6 +556,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -610,6 +615,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", err.Error()) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.UpdateInstanceWaitHandler(ctx, r.client, projectId, instanceId, region).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -657,6 +663,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -670,6 +677,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId, region).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/mongodbflex/user/datasource.go b/stackit/internal/services/mongodbflex/user/datasource.go index 3a7e9f029..92af1054a 100644 --- a/stackit/internal/services/mongodbflex/user/datasource.go +++ b/stackit/internal/services/mongodbflex/user/datasource.go @@ -146,6 +146,7 @@ func (d *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := d.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -170,6 +171,7 @@ func (d *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema and populate Computed attribute values err = mapDataSourceFields(recordSetResp, &model, region) diff --git a/stackit/internal/services/mongodbflex/user/resource.go b/stackit/internal/services/mongodbflex/user/resource.go index 4a763e175..658ef559e 100644 --- a/stackit/internal/services/mongodbflex/user/resource.go +++ b/stackit/internal/services/mongodbflex/user/resource.go @@ -222,6 +222,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -250,6 +251,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if userResp == nil || userResp.Item == nil || userResp.Item.Id == nil || *userResp.Item.Id == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", "API didn't return user ID. A user might have been created") return @@ -280,6 +282,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -299,6 +302,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(recordSetResp, &model, region) @@ -325,6 +329,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -364,6 +369,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating user", err.Error()) return } + ctx = core.LogResponse(ctx) userResp, err := r.client.GetUser(ctx, projectId, instanceId, userId, region).Execute() if err != nil { @@ -397,6 +403,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) instanceId := model.InstanceId.ValueString() @@ -412,6 +419,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "MongoDB Flex user deleted") } diff --git a/stackit/internal/services/objectstorage/bucket/datasource.go b/stackit/internal/services/objectstorage/bucket/datasource.go index c541830e5..f9a5c11ca 100644 --- a/stackit/internal/services/objectstorage/bucket/datasource.go +++ b/stackit/internal/services/objectstorage/bucket/datasource.go @@ -113,6 +113,7 @@ func (r *bucketDataSource) Read(ctx context.Context, req datasource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() bucketName := model.Name.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -136,6 +137,7 @@ func (r *bucketDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(bucketResp, &model, region) diff --git a/stackit/internal/services/objectstorage/bucket/resource.go b/stackit/internal/services/objectstorage/bucket/resource.go index 52e15e7f5..0118a25c9 100644 --- a/stackit/internal/services/objectstorage/bucket/resource.go +++ b/stackit/internal/services/objectstorage/bucket/resource.go @@ -178,6 +178,7 @@ func (r *bucketResource) Create(ctx context.Context, req resource.CreateRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() bucketName := model.Name.ValueString() region := model.Region.ValueString() @@ -199,6 +200,7 @@ func (r *bucketResource) Create(ctx context.Context, req resource.CreateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating bucket", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.CreateBucketWaitHandler(ctx, r.client, projectId, region, bucketName).WaitWithContext(ctx) if err != nil { @@ -228,6 +230,7 @@ func (r *bucketResource) Read(ctx context.Context, req resource.ReadRequest, res if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() bucketName := model.Name.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -246,6 +249,7 @@ func (r *bucketResource) Read(ctx context.Context, req resource.ReadRequest, res core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading bucket", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(bucketResp, &model, region) @@ -277,6 +281,7 @@ func (r *bucketResource) Delete(ctx context.Context, req resource.DeleteRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() bucketName := model.Name.ValueString() region := model.Region.ValueString() @@ -297,6 +302,7 @@ func (r *bucketResource) Delete(ctx context.Context, req resource.DeleteRequest, } core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting bucket", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteBucketWaitHandler(ctx, r.client, projectId, region, bucketName).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting bucket", fmt.Sprintf("Bucket deletion waiting: %v", err)) diff --git a/stackit/internal/services/objectstorage/credential/datasource.go b/stackit/internal/services/objectstorage/credential/datasource.go index 0a0df7887..eb902e8c4 100644 --- a/stackit/internal/services/objectstorage/credential/datasource.go +++ b/stackit/internal/services/objectstorage/credential/datasource.go @@ -119,7 +119,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() credentialId := model.CredentialId.ValueString() @@ -145,6 +145,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) if credentialsGroupResp == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Reading credentials", fmt.Sprintf("Response is nil: %v", err)) return diff --git a/stackit/internal/services/objectstorage/credential/resource.go b/stackit/internal/services/objectstorage/credential/resource.go index e2f4cea0b..d264bc821 100644 --- a/stackit/internal/services/objectstorage/credential/resource.go +++ b/stackit/internal/services/objectstorage/credential/resource.go @@ -248,6 +248,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() region := model.Region.ValueString() @@ -275,6 +276,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if credentialResp.KeyId == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credential id") return @@ -325,7 +327,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() credentialId := model.CredentialId.ValueString() @@ -341,6 +343,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Finding credential: %v", err)) return } + ctx = core.LogResponse(ctx) if !found { resp.State.RemoveResource(ctx) return @@ -398,7 +401,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() credentialId := model.CredentialId.ValueString() @@ -414,6 +417,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "ObjectStorage credential deleted") } diff --git a/stackit/internal/services/objectstorage/credentialsgroup/datasource.go b/stackit/internal/services/objectstorage/credentialsgroup/datasource.go index 72c57d2af..a9c998550 100644 --- a/stackit/internal/services/objectstorage/credentialsgroup/datasource.go +++ b/stackit/internal/services/objectstorage/credentialsgroup/datasource.go @@ -111,6 +111,7 @@ func (r *credentialsGroupDataSource) Read(ctx context.Context, req datasource.Re if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -124,6 +125,7 @@ func (r *credentialsGroupDataSource) Read(ctx context.Context, req datasource.Re core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentials group", fmt.Sprintf("getting credential group from list of credentials groups: %v", err)) return } + ctx = core.LogResponse(ctx) if !found { resp.State.RemoveResource(ctx) core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentials group", fmt.Sprintf("Credentials group with ID %q does not exists in project %q", credentialsGroupId, projectId)) diff --git a/stackit/internal/services/objectstorage/credentialsgroup/resource.go b/stackit/internal/services/objectstorage/credentialsgroup/resource.go index 7008d77b2..c99dee84b 100644 --- a/stackit/internal/services/objectstorage/credentialsgroup/resource.go +++ b/stackit/internal/services/objectstorage/credentialsgroup/resource.go @@ -176,6 +176,7 @@ func (r *credentialsGroupResource) Create(ctx context.Context, req resource.Crea if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupName := model.Name.ValueString() region := model.Region.ValueString() @@ -201,6 +202,7 @@ func (r *credentialsGroupResource) Create(ctx context.Context, req resource.Crea core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credentials group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(got, &model, region) @@ -224,6 +226,7 @@ func (r *credentialsGroupResource) Read(ctx context.Context, req resource.ReadRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -237,6 +240,7 @@ func (r *credentialsGroupResource) Read(ctx context.Context, req resource.ReadRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentialsGroup", fmt.Sprintf("getting credential group from list of credentials groups: %v", err)) return } + ctx = core.LogResponse(ctx) if !found { resp.State.RemoveResource(ctx) return @@ -267,6 +271,7 @@ func (r *credentialsGroupResource) Delete(ctx context.Context, req resource.Dele if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() credentialsGroupId := model.CredentialsGroupId.ValueString() region := model.Region.ValueString() @@ -280,6 +285,7 @@ func (r *credentialsGroupResource) Delete(ctx context.Context, req resource.Dele if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credentials group", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "ObjectStorage credentials group deleted") } diff --git a/stackit/internal/services/observability/alertgroup/datasource.go b/stackit/internal/services/observability/alertgroup/datasource.go index df7467372..65ec10c04 100644 --- a/stackit/internal/services/observability/alertgroup/datasource.go +++ b/stackit/internal/services/observability/alertgroup/datasource.go @@ -137,7 +137,7 @@ func (a *alertGroupDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -156,6 +156,7 @@ func (a *alertGroupDataSource) Read(ctx context.Context, req datasource.ReadRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading alert group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, readAlertGroupResp.Data, &model) if err != nil { diff --git a/stackit/internal/services/observability/alertgroup/resource.go b/stackit/internal/services/observability/alertgroup/resource.go index 81295320a..be8cb3fb1 100644 --- a/stackit/internal/services/observability/alertgroup/resource.go +++ b/stackit/internal/services/observability/alertgroup/resource.go @@ -238,7 +238,7 @@ func (a *alertGroupResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -257,6 +257,7 @@ func (a *alertGroupResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating alertgroup", fmt.Sprintf("Creating API payload: %v", err)) return } + ctx = core.LogResponse(ctx) // all alert groups are returned. We have to search the map for the one corresponding to our name for _, alertGroup := range *createAlertGroupResp.Data { @@ -288,7 +289,7 @@ func (a *alertGroupResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -307,6 +308,7 @@ func (a *alertGroupResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading alert group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, readAlertGroupResp.Data, &model) if err != nil { @@ -336,7 +338,7 @@ func (a *alertGroupResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -349,6 +351,7 @@ func (a *alertGroupResource) Delete(ctx context.Context, req resource.DeleteRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting alert group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Alert group deleted") } diff --git a/stackit/internal/services/observability/credential/resource.go b/stackit/internal/services/observability/credential/resource.go index 8b5ca3f99..ada4a60e0 100644 --- a/stackit/internal/services/observability/credential/resource.go +++ b/stackit/internal/services/observability/credential/resource.go @@ -135,7 +135,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() description := model.Description.ValueStringPointer() @@ -149,6 +149,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(got.Credentials, &model) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Processing API payload: %v", err)) @@ -193,6 +194,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userName := model.Username.ValueString() @@ -211,6 +213,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) diags = resp.State.Set(ctx, model) resp.Diagnostics.Append(diags...) if resp.Diagnostics.HasError() { @@ -233,6 +236,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userName := model.Username.ValueString() @@ -241,5 +245,6 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Observability credential deleted") } diff --git a/stackit/internal/services/observability/instance/datasource.go b/stackit/internal/services/observability/instance/datasource.go index 7352b6d10..f9565ce47 100644 --- a/stackit/internal/services/observability/instance/datasource.go +++ b/stackit/internal/services/observability/instance/datasource.go @@ -381,6 +381,7 @@ func (d *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() instanceResp, err := d.client.GetInstance(ctx, instanceId, projectId).Execute() @@ -398,6 +399,7 @@ func (d *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) if instanceResp != nil && instanceResp.Status != nil && *instanceResp.Status == observability.GETINSTANCERESPONSESTATUS_DELETE_SUCCEEDED { resp.State.RemoveResource(ctx) core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", "Instance was deleted successfully") diff --git a/stackit/internal/services/observability/instance/resource.go b/stackit/internal/services/observability/instance/resource.go index 8cae47bf5..3ac6d1d62 100644 --- a/stackit/internal/services/observability/instance/resource.go +++ b/stackit/internal/services/observability/instance/resource.go @@ -896,6 +896,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) acl := []string{} if !(model.ACL.IsNull() || model.ACL.IsUnknown()) { @@ -934,6 +935,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := createResp.InstanceId ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, *instanceId, projectId).WaitWithContext(ctx) @@ -1064,6 +1066,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -1079,6 +1082,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if instanceResp != nil && instanceResp.Status != nil && *instanceResp.Status == observability.GETINSTANCERESPONSESTATUS_DELETE_SUCCEEDED { resp.State.RemoveResource(ctx) return @@ -1215,6 +1219,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() @@ -1268,6 +1273,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instance, err = wait.UpdateInstanceWaitHandler(ctx, r.client, instanceId, projectId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -1400,7 +1406,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() @@ -1410,6 +1416,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, instanceId, projectId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/observability/log-alertgroup/datasource.go b/stackit/internal/services/observability/log-alertgroup/datasource.go index 040899bcb..2a67991d1 100644 --- a/stackit/internal/services/observability/log-alertgroup/datasource.go +++ b/stackit/internal/services/observability/log-alertgroup/datasource.go @@ -137,7 +137,7 @@ func (l *logAlertGroupDataSource) Read(ctx context.Context, req datasource.ReadR if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -156,7 +156,7 @@ func (l *logAlertGroupDataSource) Read(ctx context.Context, req datasource.ReadR core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading log alert group", fmt.Sprintf("Calling API: %v", err)) return } - + ctx = core.LogResponse(ctx) err = mapFields(ctx, readAlertGroupResp.Data, &model) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading log alert group", fmt.Sprintf("Error processing API response: %v", err)) diff --git a/stackit/internal/services/observability/log-alertgroup/resource.go b/stackit/internal/services/observability/log-alertgroup/resource.go index c8427718f..07e00d6ac 100644 --- a/stackit/internal/services/observability/log-alertgroup/resource.go +++ b/stackit/internal/services/observability/log-alertgroup/resource.go @@ -238,7 +238,7 @@ func (l *logAlertGroupResource) Create(ctx context.Context, req resource.CreateR if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -257,6 +257,7 @@ func (l *logAlertGroupResource) Create(ctx context.Context, req resource.CreateR core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating alertgroup", fmt.Sprintf("Creating API payload: %v", err)) return } + ctx = core.LogResponse(ctx) // all log alert groups are returned. We have to search the map for the one corresponding to our name for _, alertGroup := range *createAlertGroupResp.Data { @@ -288,7 +289,7 @@ func (l *logAlertGroupResource) Read(ctx context.Context, req resource.ReadReque if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -307,6 +308,7 @@ func (l *logAlertGroupResource) Read(ctx context.Context, req resource.ReadReque core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading log alert group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, readAlertGroupResp.Data, &model) if err != nil { @@ -336,7 +338,7 @@ func (l *logAlertGroupResource) Delete(ctx context.Context, req resource.DeleteR if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() alertGroupName := model.Name.ValueString() @@ -349,6 +351,7 @@ func (l *logAlertGroupResource) Delete(ctx context.Context, req resource.DeleteR core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting log alert group", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "log alert group deleted") } diff --git a/stackit/internal/services/observability/scrapeconfig/datasource.go b/stackit/internal/services/observability/scrapeconfig/datasource.go index 552d320b3..548d430d9 100644 --- a/stackit/internal/services/observability/scrapeconfig/datasource.go +++ b/stackit/internal/services/observability/scrapeconfig/datasource.go @@ -190,6 +190,7 @@ func (d *scrapeConfigDataSource) Read(ctx context.Context, req datasource.ReadRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() scName := model.Name.ValueString() @@ -209,6 +210,7 @@ func (d *scrapeConfigDataSource) Read(ctx context.Context, req datasource.ReadRe resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, scResp.Data, &model) if err != nil { diff --git a/stackit/internal/services/observability/scrapeconfig/resource.go b/stackit/internal/services/observability/scrapeconfig/resource.go index c8c3629ea..050dfca65 100644 --- a/stackit/internal/services/observability/scrapeconfig/resource.go +++ b/stackit/internal/services/observability/scrapeconfig/resource.go @@ -304,7 +304,7 @@ func (r *scrapeConfigResource) Create(ctx context.Context, req resource.CreateRe if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() scName := model.Name.ValueString() @@ -347,6 +347,7 @@ func (r *scrapeConfigResource) Create(ctx context.Context, req resource.CreateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating scrape config", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.CreateScrapeConfigWaitHandler(ctx, r.client, instanceId, scName, projectId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating scrape config", fmt.Sprintf("Scrape config creation waiting: %v", err)) @@ -379,6 +380,7 @@ func (r *scrapeConfigResource) Read(ctx context.Context, req resource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() scName := model.Name.ValueString() @@ -393,6 +395,7 @@ func (r *scrapeConfigResource) Read(ctx context.Context, req resource.ReadReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading scrape config", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, scResp.Data, &model) @@ -418,6 +421,7 @@ func (r *scrapeConfigResource) Update(ctx context.Context, req resource.UpdateRe if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() scName := model.Name.ValueString() @@ -460,6 +464,7 @@ func (r *scrapeConfigResource) Update(ctx context.Context, req resource.UpdateRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating scrape config", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // We do not have an update status provided by the observability scrape config api, so we cannot use a waiter here, hence a simple sleep is used. time.Sleep(15 * time.Second) @@ -491,7 +496,7 @@ func (r *scrapeConfigResource) Delete(ctx context.Context, req resource.DeleteRe if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() scName := model.Name.ValueString() @@ -502,6 +507,7 @@ func (r *scrapeConfigResource) Delete(ctx context.Context, req resource.DeleteRe core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting scrape config", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteScrapeConfigWaitHandler(ctx, r.client, instanceId, scName, projectId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting scrape config", fmt.Sprintf("Scrape config deletion waiting: %v", err)) diff --git a/stackit/internal/services/opensearch/credential/datasource.go b/stackit/internal/services/opensearch/credential/datasource.go index c38dbd538..de29e65d7 100644 --- a/stackit/internal/services/opensearch/credential/datasource.go +++ b/stackit/internal/services/opensearch/credential/datasource.go @@ -132,6 +132,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -154,7 +155,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ resp.State.RemoveResource(ctx) return } - + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) if err != nil { diff --git a/stackit/internal/services/opensearch/credential/resource.go b/stackit/internal/services/opensearch/credential/resource.go index 5c4d27832..32938f33f 100644 --- a/stackit/internal/services/opensearch/credential/resource.go +++ b/stackit/internal/services/opensearch/credential/resource.go @@ -168,6 +168,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -179,6 +180,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if credentialsResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credential id") return @@ -214,6 +216,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -231,6 +234,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) @@ -262,7 +266,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -275,6 +279,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/opensearch/instance/datasource.go b/stackit/internal/services/opensearch/instance/datasource.go index e2b43b47a..bd1f5aae7 100644 --- a/stackit/internal/services/opensearch/instance/datasource.go +++ b/stackit/internal/services/opensearch/instance/datasource.go @@ -215,6 +215,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -236,6 +237,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(instanceResp, &model) if err != nil { diff --git a/stackit/internal/services/opensearch/instance/resource.go b/stackit/internal/services/opensearch/instance/resource.go index 68999e682..6df22bd29 100644 --- a/stackit/internal/services/opensearch/instance/resource.go +++ b/stackit/internal/services/opensearch/instance/resource.go @@ -330,6 +330,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -361,6 +362,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.InstanceId ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) @@ -393,6 +395,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -408,6 +411,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(instanceResp, &model) @@ -440,6 +444,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -478,6 +483,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(waitResp, &model) @@ -503,6 +509,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -514,6 +521,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/postgresflex/database/datasource.go b/stackit/internal/services/postgresflex/database/datasource.go index f1d8b1e96..3aabec1e9 100644 --- a/stackit/internal/services/postgresflex/database/datasource.go +++ b/stackit/internal/services/postgresflex/database/datasource.go @@ -124,6 +124,7 @@ func (r *databaseDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() databaseId := model.DatabaseId.ValueString() @@ -148,6 +149,7 @@ func (r *databaseDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema and populate Computed attribute values err = mapFields(databaseResp, &model, region) diff --git a/stackit/internal/services/postgresflex/database/resource.go b/stackit/internal/services/postgresflex/database/resource.go index 024e18e96..cdc91756b 100644 --- a/stackit/internal/services/postgresflex/database/resource.go +++ b/stackit/internal/services/postgresflex/database/resource.go @@ -198,6 +198,7 @@ func (r *databaseResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() instanceId := model.InstanceId.ValueString() @@ -217,6 +218,7 @@ func (r *databaseResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating database", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if databaseResp == nil || databaseResp.Id == nil || *databaseResp.Id == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating database", "API didn't return database Id. A database might have been created") return @@ -253,6 +255,7 @@ func (r *databaseResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() databaseId := model.DatabaseId.ValueString() @@ -272,6 +275,7 @@ func (r *databaseResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading database", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(databaseResp, &model, region) @@ -304,7 +308,7 @@ func (r *databaseResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() databaseId := model.DatabaseId.ValueString() @@ -319,6 +323,7 @@ func (r *databaseResource) Delete(ctx context.Context, req resource.DeleteReques if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting database", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Postgres Flex database deleted") } diff --git a/stackit/internal/services/postgresflex/instance/datasource.go b/stackit/internal/services/postgresflex/instance/datasource.go index b411713be..42da189dc 100644 --- a/stackit/internal/services/postgresflex/instance/datasource.go +++ b/stackit/internal/services/postgresflex/instance/datasource.go @@ -157,7 +157,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -179,6 +179,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) if instanceResp != nil && instanceResp.Item != nil && instanceResp.Item.Status != nil && *instanceResp.Item.Status == wait.InstanceStateDeleted { resp.State.RemoveResource(ctx) core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", "Instance was deleted successfully") diff --git a/stackit/internal/services/postgresflex/instance/resource.go b/stackit/internal/services/postgresflex/instance/resource.go index 4bb653afb..d52153c00 100644 --- a/stackit/internal/services/postgresflex/instance/resource.go +++ b/stackit/internal/services/postgresflex/instance/resource.go @@ -273,6 +273,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -320,6 +321,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.Id ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, projectId, region, instanceId).WaitWithContext(ctx) @@ -351,6 +353,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -385,6 +388,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", err.Error()) return } + ctx = core.LogResponse(ctx) if instanceResp != nil && instanceResp.Item != nil && instanceResp.Item.Status != nil && *instanceResp.Item.Status == wait.InstanceStateDeleted { resp.State.RemoveResource(ctx) return @@ -414,6 +418,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := model.Region.ValueString() @@ -463,6 +468,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", err.Error()) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateInstanceWaitHandler(ctx, r.client, projectId, region, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -492,6 +498,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := model.Region.ValueString() @@ -505,6 +512,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, region, instanceId).SetTimeout(45 * time.Minute).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/postgresflex/user/datasource.go b/stackit/internal/services/postgresflex/user/datasource.go index a0fb8c3bc..6d5a49ef7 100644 --- a/stackit/internal/services/postgresflex/user/datasource.go +++ b/stackit/internal/services/postgresflex/user/datasource.go @@ -141,6 +141,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -165,6 +166,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema and populate Computed attribute values err = mapDataSourceFields(recordSetResp, &model, region) diff --git a/stackit/internal/services/postgresflex/user/resource.go b/stackit/internal/services/postgresflex/user/resource.go index a67966ca6..1652c30ca 100644 --- a/stackit/internal/services/postgresflex/user/resource.go +++ b/stackit/internal/services/postgresflex/user/resource.go @@ -222,6 +222,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := model.Region.ValueString() @@ -250,6 +251,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if userResp == nil || userResp.Item == nil || userResp.Item.Id == nil || *userResp.Item.Id == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", "API didn't return user Id. A user might have been created") return @@ -280,6 +282,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -299,6 +302,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(recordSetResp, &model, region) @@ -325,6 +329,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -364,6 +369,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating user", err.Error()) return } + ctx = core.LogResponse(ctx) userResp, err := r.client.GetUser(ctx, projectId, region, instanceId, userId).Execute() if err != nil { @@ -396,7 +402,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -411,6 +417,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting user", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteUserWaitHandler(ctx, r.client, projectId, region, instanceId, userId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting user", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/rabbitmq/credential/datasource.go b/stackit/internal/services/rabbitmq/credential/datasource.go index 428a93067..bc5d7d523 100644 --- a/stackit/internal/services/rabbitmq/credential/datasource.go +++ b/stackit/internal/services/rabbitmq/credential/datasource.go @@ -143,6 +143,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -165,6 +166,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) diff --git a/stackit/internal/services/rabbitmq/credential/resource.go b/stackit/internal/services/rabbitmq/credential/resource.go index b16e47df9..588290e9e 100644 --- a/stackit/internal/services/rabbitmq/credential/resource.go +++ b/stackit/internal/services/rabbitmq/credential/resource.go @@ -182,6 +182,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -193,6 +194,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if credentialsResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credential id") return @@ -228,6 +230,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -245,6 +248,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) @@ -276,7 +280,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -289,6 +293,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/rabbitmq/instance/datasource.go b/stackit/internal/services/rabbitmq/instance/datasource.go index 1f7439a31..4775d41cf 100644 --- a/stackit/internal/services/rabbitmq/instance/datasource.go +++ b/stackit/internal/services/rabbitmq/instance/datasource.go @@ -211,6 +211,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -231,6 +232,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(instanceResp, &model) if err != nil { diff --git a/stackit/internal/services/rabbitmq/instance/resource.go b/stackit/internal/services/rabbitmq/instance/resource.go index d012858c9..609381fa6 100644 --- a/stackit/internal/services/rabbitmq/instance/resource.go +++ b/stackit/internal/services/rabbitmq/instance/resource.go @@ -325,6 +325,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -356,6 +357,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.InstanceId ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) @@ -388,6 +390,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -403,6 +406,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(instanceResp, &model) @@ -435,6 +439,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -468,6 +473,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -498,6 +504,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -509,6 +516,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/redis/credential/datasource.go b/stackit/internal/services/redis/credential/datasource.go index 17f257755..480e8a9a4 100644 --- a/stackit/internal/services/redis/credential/datasource.go +++ b/stackit/internal/services/redis/credential/datasource.go @@ -134,6 +134,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -156,6 +157,7 @@ func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequ resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) diff --git a/stackit/internal/services/redis/credential/resource.go b/stackit/internal/services/redis/credential/resource.go index bc5f2b31c..688dbe23f 100644 --- a/stackit/internal/services/redis/credential/resource.go +++ b/stackit/internal/services/redis/credential/resource.go @@ -170,6 +170,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -181,6 +182,7 @@ func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if credentialsResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credential id") return @@ -216,6 +218,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -233,6 +236,7 @@ func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, recordSetResp, &model) @@ -264,7 +268,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() credentialId := model.CredentialId.ValueString() @@ -277,6 +281,7 @@ func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequ if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) _, err = wait.DeleteCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/redis/instance/datasource.go b/stackit/internal/services/redis/instance/datasource.go index baae95a20..dcb7c8675 100644 --- a/stackit/internal/services/redis/instance/datasource.go +++ b/stackit/internal/services/redis/instance/datasource.go @@ -259,6 +259,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -280,6 +281,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(instanceResp, &model) if err != nil { diff --git a/stackit/internal/services/redis/instance/resource.go b/stackit/internal/services/redis/instance/resource.go index 589d54979..0f20e9c78 100644 --- a/stackit/internal/services/redis/instance/resource.go +++ b/stackit/internal/services/redis/instance/resource.go @@ -396,6 +396,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -427,6 +428,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.InstanceId ctx = tflog.SetField(ctx, "instance_id", instanceId) waitResp, err := wait.CreateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) @@ -459,6 +461,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -474,6 +477,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(instanceResp, &model) @@ -506,6 +510,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -539,6 +544,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.PartialUpdateInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -569,6 +575,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -580,6 +587,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/resourcemanager/folder/datasource.go b/stackit/internal/services/resourcemanager/folder/datasource.go index f01e6df03..1fca3dd96 100644 --- a/stackit/internal/services/resourcemanager/folder/datasource.go +++ b/stackit/internal/services/resourcemanager/folder/datasource.go @@ -145,6 +145,7 @@ func (d *folderDataSource) Read(ctx context.Context, req datasource.ReadRequest, return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "container_id", containerId) @@ -163,6 +164,7 @@ func (d *folderDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFolderFields(ctx, folderResp, &model, &resp.State) if err != nil { diff --git a/stackit/internal/services/resourcemanager/folder/resource.go b/stackit/internal/services/resourcemanager/folder/resource.go index 8e80593af..f5cd558ff 100644 --- a/stackit/internal/services/resourcemanager/folder/resource.go +++ b/stackit/internal/services/resourcemanager/folder/resource.go @@ -191,6 +191,7 @@ func (r *folderResource) Create(ctx context.Context, req resource.CreateRequest, return } + ctx = core.InitProviderContext(ctx) containerParentId := model.ContainerParentId.ValueString() folderName := model.Name.ValueString() ctx = tflog.SetField(ctx, "container_parent_id", containerParentId) @@ -208,6 +209,7 @@ func (r *folderResource) Create(ctx context.Context, req resource.CreateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating folder", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if folderCreateResp.ContainerId == nil || *folderCreateResp.ContainerId == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating folder", "Container ID is missing") @@ -242,6 +244,7 @@ func (r *folderResource) Read(ctx context.Context, req resource.ReadRequest, res return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() folderName := model.Name.ValueString() ctx = tflog.SetField(ctx, "folder_name", folderName) @@ -257,6 +260,7 @@ func (r *folderResource) Read(ctx context.Context, req resource.ReadRequest, res core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading folder", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFolderFields(ctx, folderResp, &model.Model, &resp.State) if err != nil { @@ -282,6 +286,7 @@ func (r *folderResource) Update(ctx context.Context, req resource.UpdateRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "container_id", containerId) @@ -297,6 +302,7 @@ func (r *folderResource) Update(ctx context.Context, req resource.UpdateRequest, core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating folder", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Fetch updated folder folderResp, err := r.client.GetFolderDetails(ctx, containerId).Execute() @@ -328,6 +334,7 @@ func (r *folderResource) Delete(ctx context.Context, req resource.DeleteRequest, if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "container_id", containerId) @@ -343,6 +350,7 @@ func (r *folderResource) Delete(ctx context.Context, req resource.DeleteRequest, ) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Resource Manager folder deleted") } diff --git a/stackit/internal/services/resourcemanager/project/datasource.go b/stackit/internal/services/resourcemanager/project/datasource.go index 0af3f8168..5aa64e89f 100644 --- a/stackit/internal/services/resourcemanager/project/datasource.go +++ b/stackit/internal/services/resourcemanager/project/datasource.go @@ -145,7 +145,7 @@ func (d *projectDataSource) Read(ctx context.Context, req datasource.ReadRequest if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -180,6 +180,7 @@ func (d *projectDataSource) Read(ctx context.Context, req datasource.ReadRequest resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapProjectFields(ctx, projectResp, &model, &resp.State) if err != nil { diff --git a/stackit/internal/services/resourcemanager/project/resource.go b/stackit/internal/services/resourcemanager/project/resource.go index 228c437d2..a88284b9e 100644 --- a/stackit/internal/services/resourcemanager/project/resource.go +++ b/stackit/internal/services/resourcemanager/project/resource.go @@ -196,6 +196,7 @@ func (r *projectResource) Create(ctx context.Context, req resource.CreateRequest return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "project_container_id", containerId) @@ -211,6 +212,7 @@ func (r *projectResource) Create(ctx context.Context, req resource.CreateRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating project", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) respContainerId := *createResp.ContainerId // If the request has not been processed yet and the containerId doesn't exist, @@ -244,6 +246,7 @@ func (r *projectResource) Read(ctx context.Context, req resource.ReadRequest, re if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "container_id", containerId) @@ -257,6 +260,7 @@ func (r *projectResource) Read(ctx context.Context, req resource.ReadRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading project", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapProjectFields(ctx, projectResp, &model.Model, &resp.State) if err != nil { @@ -282,6 +286,7 @@ func (r *projectResource) Update(ctx context.Context, req resource.UpdateRequest if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "container_id", containerId) @@ -297,6 +302,7 @@ func (r *projectResource) Update(ctx context.Context, req resource.UpdateRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating project", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Fetch updated project projectResp, err := r.client.GetProject(ctx, containerId).Execute() @@ -328,6 +334,7 @@ func (r *projectResource) Delete(ctx context.Context, req resource.DeleteRequest if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) containerId := model.ContainerId.ValueString() ctx = tflog.SetField(ctx, "container_id", containerId) @@ -338,6 +345,7 @@ func (r *projectResource) Delete(ctx context.Context, req resource.DeleteRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting project", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteProjectWaitHandler(ctx, r.client, containerId).WaitWithContext(ctx) if err != nil { diff --git a/stackit/internal/services/scf/organization/datasource.go b/stackit/internal/services/scf/organization/datasource.go index 528e46da9..174fc0b0d 100644 --- a/stackit/internal/services/scf/organization/datasource.go +++ b/stackit/internal/services/scf/organization/datasource.go @@ -135,6 +135,7 @@ func (s *scfOrganizationDataSource) Read(ctx context.Context, request datasource if response.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Extract the project ID and instance id of the model projectId := model.ProjectId.ValueString() @@ -162,6 +163,7 @@ func (s *scfOrganizationDataSource) Read(ctx context.Context, request datasource response.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(scfOrgResponse, &model) if err != nil { diff --git a/stackit/internal/services/scf/organization/resource.go b/stackit/internal/services/scf/organization/resource.go index bdec91405..3c0cdf940 100644 --- a/stackit/internal/services/scf/organization/resource.go +++ b/stackit/internal/services/scf/organization/resource.go @@ -231,6 +231,7 @@ func (s *scfOrganizationResource) Create(ctx context.Context, request resource.C if response.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Set logging context with the project ID and instance ID. region := model.Region.ValueString() @@ -255,6 +256,7 @@ func (s *scfOrganizationResource) Create(ctx context.Context, request resource.C core.LogAndAddError(ctx, &response.Diagnostics, "Error creating scf organization", fmt.Sprintf("Calling API to create org: %v", err)) return } + ctx = core.LogResponse(ctx) orgId := *scfOrgCreateResponse.Guid // Apply the org quota if provided @@ -313,6 +315,7 @@ func (s *scfOrganizationResource) Read(ctx context.Context, request resource.Rea if response.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Extract the project ID and instance id of the model projectId := model.ProjectId.ValueString() @@ -334,6 +337,7 @@ func (s *scfOrganizationResource) Read(ctx context.Context, request resource.Rea core.LogAndAddError(ctx, &response.Diagnostics, "Error reading scf organization", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(scfOrgResponse, &model) if err != nil { @@ -356,6 +360,7 @@ func (s *scfOrganizationResource) Update(ctx context.Context, request resource.U if response.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) region := model.Region.ValueString() projectId := model.ProjectId.ValueString() orgId := model.OrgId.ValueString() @@ -385,6 +390,7 @@ func (s *scfOrganizationResource) Update(ctx context.Context, request resource.U return } org = updatedOrg + ctx = core.LogResponse(ctx) } // handle a quota change of the org @@ -424,6 +430,7 @@ func (s *scfOrganizationResource) Delete(ctx context.Context, request resource.D return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() orgId := model.OrgId.ValueString() @@ -440,6 +447,7 @@ func (s *scfOrganizationResource) Delete(ctx context.Context, request resource.D core.LogAndAddError(ctx, &response.Diagnostics, "Error deleting scf organization", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteOrganizationWaitHandler(ctx, s.client, projectId, model.Region.ValueString(), orgId).WaitWithContext(ctx) if err != nil { diff --git a/stackit/internal/services/scf/organizationmanager/datasource.go b/stackit/internal/services/scf/organizationmanager/datasource.go index bf64b31e7..ab6a72129 100644 --- a/stackit/internal/services/scf/organizationmanager/datasource.go +++ b/stackit/internal/services/scf/organizationmanager/datasource.go @@ -141,6 +141,7 @@ func (s *scfOrganizationManagerDataSource) Read(ctx context.Context, request dat return } + ctx = core.InitProviderContext(ctx) // Extract the project ID and instance id of the model projectId := model.ProjectId.ValueString() orgId := model.OrgId.ValueString() @@ -165,6 +166,7 @@ func (s *scfOrganizationManagerDataSource) Read(ctx context.Context, request dat response.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFieldsDataSource(ScfOrgManager, &model) if err != nil { diff --git a/stackit/internal/services/scf/organizationmanager/resource.go b/stackit/internal/services/scf/organizationmanager/resource.go index d57894a82..28695f570 100644 --- a/stackit/internal/services/scf/organizationmanager/resource.go +++ b/stackit/internal/services/scf/organizationmanager/resource.go @@ -214,6 +214,7 @@ func (s *scfOrganizationManagerResource) Create(ctx context.Context, request res return } + ctx = core.InitProviderContext(ctx) // Set logging context with the project ID and username. projectId := model.ProjectId.ValueString() orgId := model.OrgId.ValueString() @@ -234,6 +235,7 @@ func (s *scfOrganizationManagerResource) Create(ctx context.Context, request res core.LogAndAddError(ctx, &response.Diagnostics, "Error creating scf organization manager", fmt.Sprintf("Calling API to create org manager: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFieldsCreate(scfOrgManagerCreateResponse, &model) if err != nil { @@ -259,6 +261,7 @@ func (s *scfOrganizationManagerResource) Read(ctx context.Context, request resou return } + ctx = core.InitProviderContext(ctx) // Extract the project ID, region and org id of the model projectId := model.ProjectId.ValueString() orgId := model.OrgId.ValueString() @@ -280,6 +283,7 @@ func (s *scfOrganizationManagerResource) Read(ctx context.Context, request resou core.LogAndAddError(ctx, &response.Diagnostics, "Error reading scf organization manager", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFieldsRead(scfOrgManager, &model) if err != nil { @@ -307,6 +311,7 @@ func (s *scfOrganizationManagerResource) Delete(ctx context.Context, request res return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() orgId := model.OrgId.ValueString() region := model.Region.ValueString() @@ -326,6 +331,7 @@ func (s *scfOrganizationManagerResource) Delete(ctx context.Context, request res core.LogAndAddError(ctx, &response.Diagnostics, "Error deleting scf organization manager", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Scf organization manager deleted") } diff --git a/stackit/internal/services/scf/platform/datasource.go b/stackit/internal/services/scf/platform/datasource.go index a4bfacc1e..1899ab9e5 100644 --- a/stackit/internal/services/scf/platform/datasource.go +++ b/stackit/internal/services/scf/platform/datasource.go @@ -136,6 +136,7 @@ func (s *scfPlatformDataSource) Read(ctx context.Context, request datasource.Rea return } + ctx = core.InitProviderContext(ctx) // Extract the project ID region and platform id of the model projectId := model.ProjectId.ValueString() platformId := model.PlatformId.ValueString() @@ -160,6 +161,7 @@ func (s *scfPlatformDataSource) Read(ctx context.Context, request datasource.Rea response.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(scfPlatformResponse, &model) if err != nil { diff --git a/stackit/internal/services/secretsmanager/instance/datasource.go b/stackit/internal/services/secretsmanager/instance/datasource.go index 6cb409aca..40e7bfd96 100644 --- a/stackit/internal/services/secretsmanager/instance/datasource.go +++ b/stackit/internal/services/secretsmanager/instance/datasource.go @@ -110,6 +110,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -130,6 +131,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) diff --git a/stackit/internal/services/secretsmanager/instance/resource.go b/stackit/internal/services/secretsmanager/instance/resource.go index 5f7bbc2f9..00b443c94 100644 --- a/stackit/internal/services/secretsmanager/instance/resource.go +++ b/stackit/internal/services/secretsmanager/instance/resource.go @@ -150,6 +150,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -174,6 +175,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.Id ctx = tflog.SetField(ctx, "instance_id", instanceId) @@ -213,6 +215,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -228,6 +231,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) @@ -258,6 +262,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -284,6 +289,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) @@ -314,6 +320,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -325,6 +332,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Secrets Manager instance deleted") } diff --git a/stackit/internal/services/secretsmanager/user/datasource.go b/stackit/internal/services/secretsmanager/user/datasource.go index 9fa1e5000..9e1418af7 100644 --- a/stackit/internal/services/secretsmanager/user/datasource.go +++ b/stackit/internal/services/secretsmanager/user/datasource.go @@ -133,6 +133,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -155,6 +156,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema and populate Computed attribute values err = mapDataSourceFields(userResp, &model) diff --git a/stackit/internal/services/secretsmanager/user/resource.go b/stackit/internal/services/secretsmanager/user/resource.go index 12c4a6add..2b3a4fb83 100644 --- a/stackit/internal/services/secretsmanager/user/resource.go +++ b/stackit/internal/services/secretsmanager/user/resource.go @@ -163,6 +163,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -180,6 +181,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if userResp.Id == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", "Got empty user id") return @@ -209,6 +211,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -226,6 +229,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(userResp, &model) @@ -252,6 +256,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -271,6 +276,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating user", err.Error()) return } + ctx = core.LogResponse(ctx) user, err := r.client.GetUser(ctx, projectId, instanceId, userId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating user", fmt.Sprintf("Calling API to get user's current state: %v", err)) @@ -305,7 +311,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -318,6 +324,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting user", fmt.Sprintf("Calling API: %v", err)) } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Secrets Manager user deleted") } diff --git a/stackit/internal/services/serverbackup/schedule/resource.go b/stackit/internal/services/serverbackup/schedule/resource.go index 5ba73f481..e6100c74e 100644 --- a/stackit/internal/services/serverbackup/schedule/resource.go +++ b/stackit/internal/services/serverbackup/schedule/resource.go @@ -244,6 +244,7 @@ func (r *scheduleResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -270,6 +271,7 @@ func (r *scheduleResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating server backup schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "backup_schedule_id", *scheduleResp.Id) // Map response body to schema @@ -294,6 +296,7 @@ func (r *scheduleResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() backupScheduleId := model.BackupScheduleId.ValueInt64() @@ -314,6 +317,7 @@ func (r *scheduleResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading backup schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, scheduleResp, &model, region) @@ -339,6 +343,7 @@ func (r *scheduleResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() backupScheduleId := model.BackupScheduleId.ValueInt64() @@ -361,6 +366,7 @@ func (r *scheduleResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server backup schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, scheduleResp, &model, region) @@ -384,6 +390,7 @@ func (r *scheduleResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() backupScheduleId := model.BackupScheduleId.ValueInt64() @@ -399,6 +406,7 @@ func (r *scheduleResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting server backup schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Server backup schedule deleted.") // Disable backups service in case there are no backups and no backup schedules. diff --git a/stackit/internal/services/serverbackup/schedule/schedule_datasource.go b/stackit/internal/services/serverbackup/schedule/schedule_datasource.go index 2d3f82cf8..5ada3569d 100644 --- a/stackit/internal/services/serverbackup/schedule/schedule_datasource.go +++ b/stackit/internal/services/serverbackup/schedule/schedule_datasource.go @@ -148,6 +148,7 @@ func (r *scheduleDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() backupScheduleId := model.BackupScheduleId.ValueInt64() @@ -173,6 +174,7 @@ func (r *scheduleDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, scheduleResp, &model, region) diff --git a/stackit/internal/services/serverbackup/schedule/schedules_datasource.go b/stackit/internal/services/serverbackup/schedule/schedules_datasource.go index 81cd5ade3..4028ed440 100644 --- a/stackit/internal/services/serverbackup/schedule/schedules_datasource.go +++ b/stackit/internal/services/serverbackup/schedule/schedules_datasource.go @@ -171,6 +171,7 @@ func (r *schedulesDataSource) Read(ctx context.Context, req datasource.ReadReque if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -193,6 +194,7 @@ func (r *schedulesDataSource) Read(ctx context.Context, req datasource.ReadReque resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapSchedulesDatasourceFields(ctx, schedules, &model, region) diff --git a/stackit/internal/services/serverupdate/schedule/resource.go b/stackit/internal/services/serverupdate/schedule/resource.go index 2ef4e705b..f40465ec1 100644 --- a/stackit/internal/services/serverupdate/schedule/resource.go +++ b/stackit/internal/services/serverupdate/schedule/resource.go @@ -221,6 +221,7 @@ func (r *scheduleResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() region := model.Region.ValueString() @@ -246,6 +247,7 @@ func (r *scheduleResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating server update schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) ctx = tflog.SetField(ctx, "update_schedule_id", *scheduleResp.Id) // Map response body to schema @@ -270,6 +272,7 @@ func (r *scheduleResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() updateScheduleId := model.UpdateScheduleId.ValueInt64() @@ -289,6 +292,7 @@ func (r *scheduleResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading update schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(scheduleResp, &model, region) @@ -314,6 +318,7 @@ func (r *scheduleResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() updateScheduleId := model.UpdateScheduleId.ValueInt64() @@ -335,6 +340,7 @@ func (r *scheduleResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server update schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(scheduleResp, &model, region) @@ -358,6 +364,7 @@ func (r *scheduleResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() updateScheduleId := model.UpdateScheduleId.ValueInt64() @@ -372,6 +379,7 @@ func (r *scheduleResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting server update schedule", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Server update schedule deleted.") } diff --git a/stackit/internal/services/serverupdate/schedule/schedule_datasource.go b/stackit/internal/services/serverupdate/schedule/schedule_datasource.go index b0b17e65b..3dd14d6eb 100644 --- a/stackit/internal/services/serverupdate/schedule/schedule_datasource.go +++ b/stackit/internal/services/serverupdate/schedule/schedule_datasource.go @@ -135,6 +135,7 @@ func (r *scheduleDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() updateScheduleId := model.UpdateScheduleId.ValueInt64() @@ -159,6 +160,7 @@ func (r *scheduleDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(scheduleResp, &model, region) diff --git a/stackit/internal/services/serverupdate/schedule/schedules_datasource.go b/stackit/internal/services/serverupdate/schedule/schedules_datasource.go index 4ea9a469e..10f430e44 100644 --- a/stackit/internal/services/serverupdate/schedule/schedules_datasource.go +++ b/stackit/internal/services/serverupdate/schedule/schedules_datasource.go @@ -158,6 +158,7 @@ func (r *schedulesDataSource) Read(ctx context.Context, req datasource.ReadReque if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serverId := model.ServerId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -179,6 +180,7 @@ func (r *schedulesDataSource) Read(ctx context.Context, req datasource.ReadReque resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapSchedulesDatasourceFields(ctx, schedules, &model, region) diff --git a/stackit/internal/services/serviceaccount/account/datasource.go b/stackit/internal/services/serviceaccount/account/datasource.go index 9f3430110..6e888f0d4 100644 --- a/stackit/internal/services/serviceaccount/account/datasource.go +++ b/stackit/internal/services/serviceaccount/account/datasource.go @@ -101,6 +101,7 @@ func (r *serviceAccountDataSource) Read(ctx context.Context, req datasource.Read if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Extract the project ID from the model configuration projectId := model.ProjectId.ValueString() @@ -119,6 +120,7 @@ func (r *serviceAccountDataSource) Read(ctx context.Context, req datasource.Read resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Iterate over the service accounts returned by the API to find the one matching the email serviceAccounts := *listSaResp.Items diff --git a/stackit/internal/services/serviceaccount/account/resource.go b/stackit/internal/services/serviceaccount/account/resource.go index 1a779a816..296428d63 100644 --- a/stackit/internal/services/serviceaccount/account/resource.go +++ b/stackit/internal/services/serviceaccount/account/resource.go @@ -127,6 +127,7 @@ func (r *serviceAccountResource) Create(ctx context.Context, req resource.Create if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Set logging context with the project ID and service account name. projectId := model.ProjectId.ValueString() @@ -147,6 +148,7 @@ func (r *serviceAccountResource) Create(ctx context.Context, req resource.Create core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating service account", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Set the service account name and map the response to the resource schema. model.Name = types.StringValue(serviceAccountName) @@ -177,6 +179,7 @@ func (r *serviceAccountResource) Read(ctx context.Context, req resource.ReadRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Extract the project ID for the service account. projectId := model.ProjectId.ValueString() @@ -187,6 +190,7 @@ func (r *serviceAccountResource) Read(ctx context.Context, req resource.ReadRequ core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading service account", fmt.Sprintf("Error calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Iterate over the list of service accounts to find the one that matches the email from the state. serviceAccounts := *listSaResp.Items @@ -232,6 +236,7 @@ func (r *serviceAccountResource) Delete(ctx context.Context, req resource.Delete if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serviceAccountName := model.Name.ValueString() @@ -245,6 +250,7 @@ func (r *serviceAccountResource) Delete(ctx context.Context, req resource.Delete core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting service account", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Service account deleted") } diff --git a/stackit/internal/services/serviceaccount/key/resource.go b/stackit/internal/services/serviceaccount/key/resource.go index 4e8565335..77c419acf 100644 --- a/stackit/internal/services/serviceaccount/key/resource.go +++ b/stackit/internal/services/serviceaccount/key/resource.go @@ -161,6 +161,7 @@ func (r *serviceAccountKeyResource) Create(ctx context.Context, req resource.Cre if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Set logging context with the project ID and service account email. projectId := model.ProjectId.ValueString() @@ -181,6 +182,7 @@ func (r *serviceAccountKeyResource) Create(ctx context.Context, req resource.Cre // Initialize the API request with the required parameters. saAccountKeyResp, err := r.client.CreateServiceAccountKey(ctx, projectId, serviceAccountEmail).CreateServiceAccountKeyPayload(*payload).Execute() + ctx = core.LogResponse(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Failed to create service account key", fmt.Sprintf("API call error: %v", err)) @@ -212,7 +214,7 @@ func (r *serviceAccountKeyResource) Read(ctx context.Context, req resource.ReadR if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serviceAccountEmail := model.ServiceAccountEmail.ValueString() keyId := model.KeyId.ValueString() @@ -229,6 +231,7 @@ func (r *serviceAccountKeyResource) Read(ctx context.Context, req resource.ReadR core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading service account key", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // No mapping needed for read response, as private_key is excluded and ID remains unchanged. diags = resp.State.Set(ctx, &model) @@ -259,7 +262,7 @@ func (r *serviceAccountKeyResource) Delete(ctx context.Context, req resource.Del if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serviceAccountEmail := model.ServiceAccountEmail.ValueString() keyId := model.KeyId.ValueString() @@ -273,6 +276,7 @@ func (r *serviceAccountKeyResource) Delete(ctx context.Context, req resource.Del core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting service account key", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Service account key deleted") } diff --git a/stackit/internal/services/serviceaccount/token/resource.go b/stackit/internal/services/serviceaccount/token/resource.go index 86a7135cb..5965b5504 100644 --- a/stackit/internal/services/serviceaccount/token/resource.go +++ b/stackit/internal/services/serviceaccount/token/resource.go @@ -178,6 +178,7 @@ func (r *serviceAccountTokenResource) Create(ctx context.Context, req resource.C if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Set logging context with the project ID and service account email. projectId := model.ProjectId.ValueString() @@ -194,11 +195,11 @@ func (r *serviceAccountTokenResource) Create(ctx context.Context, req resource.C // Initialize the API request with the required parameters. serviceAccountAccessTokenResp, err := r.client.CreateAccessToken(ctx, projectId, serviceAccountEmail).CreateAccessTokenPayload(*payload).Execute() - if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Failed to create service account access token", fmt.Sprintf("API call error: %v", err)) return } + ctx = core.LogResponse(ctx) // Map the response to the resource schema. err = mapCreateResponse(serviceAccountAccessTokenResp, &model) @@ -226,6 +227,7 @@ func (r *serviceAccountTokenResource) Read(ctx context.Context, req resource.Rea if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) // Extract the project ID and serviceAccountEmail for the service account. projectId := model.ProjectId.ValueString() @@ -244,6 +246,7 @@ func (r *serviceAccountTokenResource) Read(ctx context.Context, req resource.Rea core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading service account tokens", fmt.Sprintf("Error calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Iterate over the list of service account tokens to find the one that matches the ID from the state. saTokens := *listSaTokensResp.Items @@ -295,7 +298,7 @@ func (r *serviceAccountTokenResource) Delete(ctx context.Context, req resource.D if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() serviceAccountEmail := model.ServiceAccountEmail.ValueString() accessTokenId := model.AccessTokenId.ValueString() @@ -309,6 +312,7 @@ func (r *serviceAccountTokenResource) Delete(ctx context.Context, req resource.D core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting service account token", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "Service account token deleted") } diff --git a/stackit/internal/services/ske/cluster/datasource.go b/stackit/internal/services/ske/cluster/datasource.go index 655011613..4b1414fe0 100644 --- a/stackit/internal/services/ske/cluster/datasource.go +++ b/stackit/internal/services/ske/cluster/datasource.go @@ -329,7 +329,7 @@ func (r *clusterDataSource) Read(ctx context.Context, req datasource.ReadRequest if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := state.ProjectId.ValueString() name := state.Name.ValueString() region := r.providerData.GetRegionWithOverride(state.Region) @@ -351,6 +351,7 @@ func (r *clusterDataSource) Read(ctx context.Context, req datasource.ReadRequest resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, clusterResp, &state, region) if err != nil { diff --git a/stackit/internal/services/ske/cluster/resource.go b/stackit/internal/services/ske/cluster/resource.go index a944161c0..db955f688 100644 --- a/stackit/internal/services/ske/cluster/resource.go +++ b/stackit/internal/services/ske/cluster/resource.go @@ -720,7 +720,7 @@ func (r *clusterResource) Create(ctx context.Context, req resource.CreateRequest if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() clusterName := model.Name.ValueString() @@ -889,6 +889,10 @@ func (r *clusterResource) createOrUpdateCluster(ctx context.Context, diags *diag core.LogAndAddError(ctx, diags, "Error creating/updating cluster", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) + // The passed context to createOrUpdateCluster will not be updated outside of this function. + // Call tflog.Info here, to log the information of the updated context + tflog.Info(ctx, "Triggered create/update cluster") waitResp, err := skeWait.CreateOrUpdateClusterWaitHandler(ctx, r.skeClient, projectId, region, name).WaitWithContext(ctx) if err != nil { @@ -2104,6 +2108,7 @@ func (r *clusterResource) Read(ctx context.Context, req resource.ReadRequest, re if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := state.ProjectId.ValueString() name := state.Name.ValueString() region := r.providerData.GetRegionWithOverride(state.Region) @@ -2121,6 +2126,7 @@ func (r *clusterResource) Read(ctx context.Context, req resource.ReadRequest, re core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading cluster", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) err = mapFields(ctx, clResp, &state, region) if err != nil { @@ -2143,7 +2149,7 @@ func (r *clusterResource) Update(ctx context.Context, req resource.UpdateRequest if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() clName := model.Name.ValueString() region := model.Region.ValueString() @@ -2178,6 +2184,7 @@ func (r *clusterResource) Delete(ctx context.Context, req resource.DeleteRequest if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() name := model.Name.ValueString() region := model.Region.ValueString() @@ -2191,6 +2198,7 @@ func (r *clusterResource) Delete(ctx context.Context, req resource.DeleteRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting cluster", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = skeWait.DeleteClusterWaitHandler(ctx, r.skeClient, projectId, region, name).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting cluster", fmt.Sprintf("Cluster deletion waiting: %v", err)) diff --git a/stackit/internal/services/ske/kubeconfig/resource.go b/stackit/internal/services/ske/kubeconfig/resource.go index c4637b76d..5f4fc8596 100644 --- a/stackit/internal/services/ske/kubeconfig/resource.go +++ b/stackit/internal/services/ske/kubeconfig/resource.go @@ -245,6 +245,7 @@ func (r *kubeconfigResource) Create(ctx context.Context, req resource.CreateRequ if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() clusterName := model.ClusterName.ValueString() kubeconfigUUID := uuid.New().String() @@ -258,6 +259,7 @@ func (r *kubeconfigResource) Create(ctx context.Context, req resource.CreateRequ ctx = tflog.SetField(ctx, "region", region) err := r.createKubeconfig(ctx, &model) + ctx = core.LogResponse(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating kubeconfig", fmt.Sprintf("Creating kubeconfig: %v", err)) return @@ -284,7 +286,7 @@ func (r *kubeconfigResource) Read(ctx context.Context, req resource.ReadRequest, if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() clusterName := model.ClusterName.ValueString() kubeconfigUUID := model.KubeconfigId.ValueString() @@ -317,6 +319,7 @@ func (r *kubeconfigResource) Read(ctx context.Context, req resource.ReadRequest, resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // check if kubeconfig has expired hasExpired, err := checkHasExpired(&model, time.Now()) diff --git a/stackit/internal/services/sqlserverflex/instance/datasource.go b/stackit/internal/services/sqlserverflex/instance/datasource.go index f88c0800d..15b6befe6 100644 --- a/stackit/internal/services/sqlserverflex/instance/datasource.go +++ b/stackit/internal/services/sqlserverflex/instance/datasource.go @@ -171,7 +171,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -193,6 +193,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) var flavor = &flavorModel{} if !(model.Flavor.IsNull() || model.Flavor.IsUnknown()) { diff --git a/stackit/internal/services/sqlserverflex/instance/resource.go b/stackit/internal/services/sqlserverflex/instance/resource.go index 9bc2069c0..d839ae1fe 100644 --- a/stackit/internal/services/sqlserverflex/instance/resource.go +++ b/stackit/internal/services/sqlserverflex/instance/resource.go @@ -345,6 +345,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() region := model.Region.ValueString() ctx = tflog.SetField(ctx, "project_id", projectId) @@ -401,6 +402,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) instanceId := *createResp.Id ctx = tflog.SetField(ctx, "instance_id", instanceId) // The creation waiter sometimes returns an error from the API: "instance with id xxx has unexpected status Failure" @@ -439,6 +441,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := r.providerData.GetRegionWithOverride(model.Region) @@ -483,6 +486,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", err.Error()) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(ctx, instanceResp, &model, flavor, storage, options, region) @@ -508,6 +512,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := model.Region.ValueString() @@ -567,6 +572,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", err.Error()) return } + ctx = core.LogResponse(ctx) waitResp, err := wait.UpdateInstanceWaitHandler(ctx, r.client, projectId, instanceId, region).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Instance update waiting: %v", err)) @@ -596,6 +602,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := model.Region.ValueString() @@ -609,6 +616,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) _, err = wait.DeleteInstanceWaitHandler(ctx, r.client, projectId, instanceId, region).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) diff --git a/stackit/internal/services/sqlserverflex/user/datasource.go b/stackit/internal/services/sqlserverflex/user/datasource.go index ffb94c4b0..4235bfc4c 100644 --- a/stackit/internal/services/sqlserverflex/user/datasource.go +++ b/stackit/internal/services/sqlserverflex/user/datasource.go @@ -146,6 +146,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -170,6 +171,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r resp.State.RemoveResource(ctx) return } + ctx = core.LogResponse(ctx) // Map response body to schema and populate Computed attribute values err = mapDataSourceFields(recordSetResp, &model, region) diff --git a/stackit/internal/services/sqlserverflex/user/resource.go b/stackit/internal/services/sqlserverflex/user/resource.go index 153750c78..783276177 100644 --- a/stackit/internal/services/sqlserverflex/user/resource.go +++ b/stackit/internal/services/sqlserverflex/user/resource.go @@ -215,6 +215,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() region := model.Region.ValueString() @@ -244,6 +245,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) if userResp == nil || userResp.Item == nil || userResp.Item.Id == nil || *userResp.Item.Id == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", "API didn't return user Id. A user might have been created") return @@ -274,6 +276,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp if resp.Diagnostics.HasError() { return } + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -293,6 +296,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) // Map response body to schema err = mapFields(recordSetResp, &model, region) @@ -325,7 +329,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r if resp.Diagnostics.HasError() { return } - + ctx = core.InitProviderContext(ctx) projectId := model.ProjectId.ValueString() instanceId := model.InstanceId.ValueString() userId := model.UserId.ValueString() @@ -341,6 +345,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting user", fmt.Sprintf("Calling API: %v", err)) return } + ctx = core.LogResponse(ctx) tflog.Info(ctx, "SQLServer Flex user deleted") }