diff --git a/internal/apm/agent_configuration/create.go b/internal/apm/agent_configuration/create.go index 561ce0b05..0d95eb1ca 100644 --- a/internal/apm/agent_configuration/create.go +++ b/internal/apm/agent_configuration/create.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-log/tflog" ) @@ -53,7 +53,7 @@ func (r *resourceAgentConfiguration) Create(ctx context.Context, req resource.Cr } defer apiResp.Body.Close() - if diags := utils.CheckHttpErrorFromFW(apiResp, "Failed to create APM agent configuration"); diags.HasError() { + if diags := diagutil.CheckHttpErrorFromFW(apiResp, "Failed to create APM agent configuration"); diags.HasError() { resp.Diagnostics.Append(diags...) return } diff --git a/internal/apm/agent_configuration/delete.go b/internal/apm/agent_configuration/delete.go index 4b1d60432..304c05dde 100644 --- a/internal/apm/agent_configuration/delete.go +++ b/internal/apm/agent_configuration/delete.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-log/tflog" ) @@ -50,7 +50,7 @@ func (r *resourceAgentConfiguration) Delete(ctx context.Context, req resource.De } defer apiResp.Body.Close() - if diags := utils.CheckHttpErrorFromFW(apiResp, "Failed to delete APM agent configuration"); diags.HasError() { + if diags := diagutil.CheckHttpErrorFromFW(apiResp, "Failed to delete APM agent configuration"); diags.HasError() { resp.Diagnostics.Append(diags...) return } diff --git a/internal/apm/agent_configuration/read.go b/internal/apm/agent_configuration/read.go index 5c81e60da..0aaa8bab4 100644 --- a/internal/apm/agent_configuration/read.go +++ b/internal/apm/agent_configuration/read.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/types" @@ -53,7 +53,7 @@ func (r *resourceAgentConfiguration) read(ctx context.Context, state *AgentConfi return nil, diags } - if httpDiags := utils.CheckHttpErrorFromFW(apiResp.HTTPResponse, "Failed to get APM agent configurations"); httpDiags.HasError() { + if httpDiags := diagutil.CheckHttpErrorFromFW(apiResp.HTTPResponse, "Failed to get APM agent configurations"); httpDiags.HasError() { diags.Append(httpDiags...) return nil, diags } diff --git a/internal/apm/agent_configuration/update.go b/internal/apm/agent_configuration/update.go index 63f7c68c6..e3dab2f04 100644 --- a/internal/apm/agent_configuration/update.go +++ b/internal/apm/agent_configuration/update.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-log/tflog" ) @@ -51,7 +51,7 @@ func (r *resourceAgentConfiguration) Update(ctx context.Context, req resource.Up } defer apiResp.Body.Close() - if diags := utils.CheckHttpErrorFromFW(apiResp, "Failed to update APM agent configuration"); diags.HasError() { + if diags := diagutil.CheckHttpErrorFromFW(apiResp, "Failed to update APM agent configuration"); diags.HasError() { resp.Diagnostics.Append(diags...) return } diff --git a/internal/clients/api_client.go b/internal/clients/api_client.go index 0174b6daf..2861994f5 100644 --- a/internal/clients/api_client.go +++ b/internal/clients/api_client.go @@ -15,6 +15,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients/config" "github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet" "github.com/elastic/terraform-provider-elasticstack/internal/clients/kibana_oapi" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/go-version" @@ -53,7 +54,7 @@ func CompositeIdFromStr(id string) (*CompositeId, diag.Diagnostics) { func CompositeIdFromStrFw(id string) (*CompositeId, fwdiags.Diagnostics) { composite, diags := CompositeIdFromStr(id) - return composite, utils.FrameworkDiagsFromSDK(diags) + return composite, diagutil.FrameworkDiagsFromSDK(diags) } func ResourceIDFromStr(id string) (string, diag.Diagnostics) { @@ -323,7 +324,7 @@ func (a *ApiClient) serverInfo(ctx context.Context) (*models.ClusterInfo, diag.D return nil, diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to connect to the Elasticsearch cluster"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to connect to the Elasticsearch cluster"); diags.HasError() { return nil, diags } diff --git a/internal/clients/elasticsearch/cluster.go b/internal/clients/elasticsearch/cluster.go index fb075bed0..3e3ddf7ba 100644 --- a/internal/clients/elasticsearch/cluster.go +++ b/internal/clients/elasticsearch/cluster.go @@ -8,8 +8,8 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -24,7 +24,7 @@ func GetClusterInfo(ctx context.Context, apiClient *clients.ApiClient) (*models. return nil, diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to connect to the Elasticsearch cluster"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to connect to the Elasticsearch cluster"); diags.HasError() { return nil, diags } @@ -50,7 +50,7 @@ func PutSnapshotRepository(ctx context.Context, apiClient *clients.ApiClient, re return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create or update the snapshot repository"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create or update the snapshot repository"); diags.HasError() { return diags } @@ -72,7 +72,7 @@ func GetSnapshotRepository(ctx context.Context, apiClient *clients.ApiClient, na if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get the information about snapshot repository: %s", name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get the information about snapshot repository: %s", name)); diags.HasError() { return nil, diags } snapRepoResponse := make(map[string]models.SnapshotRepository) @@ -106,7 +106,7 @@ func DeleteSnapshotRepository(ctx context.Context, apiClient *clients.ApiClient, return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete snapshot repository: %s", name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete snapshot repository: %s", name)); diags.HasError() { return diags } return diags @@ -129,7 +129,7 @@ func PutSlm(ctx context.Context, apiClient *clients.ApiClient, slm *models.Snaps return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create or update the SLM"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create or update the SLM"); diags.HasError() { return diags } @@ -151,7 +151,7 @@ func GetSlm(ctx context.Context, apiClient *clients.ApiClient, slmName string) ( if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to get SLM policy from ES API"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to get SLM policy from ES API"); diags.HasError() { return nil, diags } type SlmResponse = map[string]struct { @@ -183,7 +183,7 @@ func DeleteSlm(ctx context.Context, apiClient *clients.ApiClient, slmName string return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete SLM policy: %s", slmName)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete SLM policy: %s", slmName)); diags.HasError() { return diags } @@ -205,7 +205,7 @@ func PutSettings(ctx context.Context, apiClient *clients.ApiClient, settings map return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to update cluster settings."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to update cluster settings."); diags.HasError() { return diags } return diags @@ -223,7 +223,7 @@ func GetSettings(ctx context.Context, apiClient *clients.ApiClient) (map[string] return nil, diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to read cluster settings."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to read cluster settings."); diags.HasError() { return nil, diags } @@ -247,7 +247,7 @@ func GetScript(ctx context.Context, apiClient *clients.ApiClient, id string) (*m if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get stored script: %s", id)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get stored script: %s", id)); diags.HasError() { return nil, diags } var scriptResponse struct { @@ -279,7 +279,7 @@ func PutScript(ctx context.Context, apiClient *clients.ApiClient, script *models return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to put stored script"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to put stored script"); diags.HasError() { return diags } return nil @@ -295,7 +295,7 @@ func DeleteScript(ctx context.Context, apiClient *clients.ApiClient, id string) return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete script: %s", id)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete script: %s", id)); diags.HasError() { return diags } return nil diff --git a/internal/clients/elasticsearch/enrich.go b/internal/clients/elasticsearch/enrich.go index 668401109..3008f3f85 100644 --- a/internal/clients/elasticsearch/enrich.go +++ b/internal/clients/elasticsearch/enrich.go @@ -8,8 +8,8 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -54,7 +54,7 @@ func GetEnrichPolicy(ctx context.Context, apiClient *clients.ApiClient, policyNa if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get requested EnrichPolicy: %s", policyName)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get requested EnrichPolicy: %s", policyName)); diags.HasError() { return nil, diags } @@ -131,7 +131,7 @@ func PutEnrichPolicy(ctx context.Context, apiClient *clients.ApiClient, policy * } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create enrich policy"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create enrich policy"); diags.HasError() { return diags } return diags @@ -149,7 +149,7 @@ func DeleteEnrichPolicy(ctx context.Context, apiClient *clients.ApiClient, polic return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete enrich policy: %s", policyName)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete enrich policy: %s", policyName)); diags.HasError() { return diags } diff --git a/internal/clients/elasticsearch/index.go b/internal/clients/elasticsearch/index.go index c2de64d5c..3ce52078c 100644 --- a/internal/clients/elasticsearch/index.go +++ b/internal/clients/elasticsearch/index.go @@ -10,8 +10,8 @@ import ( "github.com/elastic/go-elasticsearch/v8/esapi" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" fwdiags "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -32,7 +32,7 @@ func PutIlm(ctx context.Context, apiClient *clients.ApiClient, policy *models.Po return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create or update the ILM policy"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create or update the ILM policy"); diags.HasError() { return diags } return diags @@ -53,7 +53,7 @@ func GetIlm(ctx context.Context, apiClient *clients.ApiClient, policyName string if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to fetch ILM policy from the cluster."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to fetch ILM policy from the cluster."); diags.HasError() { return nil, diags } @@ -86,7 +86,7 @@ func DeleteIlm(ctx context.Context, apiClient *clients.ApiClient, policyName str return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete ILM policy."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete ILM policy."); diags.HasError() { return diags } return diags @@ -108,7 +108,7 @@ func PutComponentTemplate(ctx context.Context, apiClient *clients.ApiClient, tem return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create component template"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create component template"); diags.HasError() { return diags } @@ -130,7 +130,7 @@ func GetComponentTemplate(ctx context.Context, apiClient *clients.ApiClient, tem if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to request index template."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to request index template."); diags.HasError() { return nil, diags } @@ -163,7 +163,7 @@ func DeleteComponentTemplate(ctx context.Context, apiClient *clients.ApiClient, return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete component template"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete component template"); diags.HasError() { return diags } return diags @@ -185,7 +185,7 @@ func PutIndexTemplate(ctx context.Context, apiClient *clients.ApiClient, templat return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create index template"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create index template"); diags.HasError() { return diags } @@ -207,7 +207,7 @@ func GetIndexTemplate(ctx context.Context, apiClient *clients.ApiClient, templat if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to request index template."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to request index template."); diags.HasError() { return nil, diags } @@ -240,7 +240,7 @@ func DeleteIndexTemplate(ctx context.Context, apiClient *clients.ApiClient, temp return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete index template"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete index template"); diags.HasError() { return diags } return diags @@ -278,8 +278,8 @@ func PutIndex(ctx context.Context, apiClient *clients.ApiClient, index *models.I } } defer res.Body.Close() - diags := utils.CheckError(res, fmt.Sprintf("Unable to create index: %s", index.Name)) - return utils.FrameworkDiagsFromSDK(diags) + diags := diagutil.CheckError(res, fmt.Sprintf("Unable to create index: %s", index.Name)) + return diagutil.FrameworkDiagsFromSDK(diags) } func DeleteIndex(ctx context.Context, apiClient *clients.ApiClient, name string) fwdiags.Diagnostics { @@ -296,8 +296,8 @@ func DeleteIndex(ctx context.Context, apiClient *clients.ApiClient, name string) } } defer res.Body.Close() - diags := utils.CheckError(res, fmt.Sprintf("Unable to delete the index: %s", name)) - return utils.FrameworkDiagsFromSDK(diags) + diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete the index: %s", name)) + return diagutil.FrameworkDiagsFromSDK(diags) } func GetIndex(ctx context.Context, apiClient *clients.ApiClient, name string) (*models.Index, fwdiags.Diagnostics) { @@ -333,8 +333,8 @@ func GetIndices(ctx context.Context, apiClient *clients.ApiClient, name string) return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get requested index: %s", name)); diags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get requested index: %s", name)); diags.HasError() { + return nil, diagutil.FrameworkDiagsFromSDK(diags) } indices := make(map[string]models.Index) @@ -361,8 +361,8 @@ func DeleteIndexAlias(ctx context.Context, apiClient *clients.ApiClient, index s } } defer res.Body.Close() - diags := utils.CheckError(res, fmt.Sprintf("Unable to delete aliases '%v' for index '%s'", index, aliases)) - return utils.FrameworkDiagsFromSDK(diags) + diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete aliases '%v' for index '%s'", index, aliases)) + return diagutil.FrameworkDiagsFromSDK(diags) } func UpdateIndexAlias(ctx context.Context, apiClient *clients.ApiClient, index string, alias *models.IndexAlias) fwdiags.Diagnostics { @@ -386,8 +386,8 @@ func UpdateIndexAlias(ctx context.Context, apiClient *clients.ApiClient, index s } } defer res.Body.Close() - diags := utils.CheckError(res, fmt.Sprintf("Unable to update alias '%v' for index '%s'", index, alias.Name)) - return utils.FrameworkDiagsFromSDK(diags) + diags := diagutil.CheckError(res, fmt.Sprintf("Unable to update alias '%v' for index '%s'", index, alias.Name)) + return diagutil.FrameworkDiagsFromSDK(diags) } func UpdateIndexSettings(ctx context.Context, apiClient *clients.ApiClient, index string, settings map[string]interface{}) fwdiags.Diagnostics { @@ -411,8 +411,8 @@ func UpdateIndexSettings(ctx context.Context, apiClient *clients.ApiClient, inde } } defer res.Body.Close() - diags := utils.CheckError(res, "Unable to update index settings") - return utils.FrameworkDiagsFromSDK(diags) + diags := diagutil.CheckError(res, "Unable to update index settings") + return diagutil.FrameworkDiagsFromSDK(diags) } func UpdateIndexMappings(ctx context.Context, apiClient *clients.ApiClient, index, mappings string) fwdiags.Diagnostics { @@ -429,8 +429,8 @@ func UpdateIndexMappings(ctx context.Context, apiClient *clients.ApiClient, inde } } defer res.Body.Close() - diags := utils.CheckError(res, "Unable to update index mappings") - return utils.FrameworkDiagsFromSDK(diags) + diags := diagutil.CheckError(res, "Unable to update index mappings") + return diagutil.FrameworkDiagsFromSDK(diags) } func PutDataStream(ctx context.Context, apiClient *clients.ApiClient, dataStreamName string) diag.Diagnostics { @@ -445,7 +445,7 @@ func PutDataStream(ctx context.Context, apiClient *clients.ApiClient, dataStream return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to create DataStream: %s", dataStreamName)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to create DataStream: %s", dataStreamName)); diags.HasError() { return diags } @@ -467,7 +467,7 @@ func GetDataStream(ctx context.Context, apiClient *clients.ApiClient, dataStream if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get requested DataStream: %s", dataStreamName)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get requested DataStream: %s", dataStreamName)); diags.HasError() { return nil, diags } @@ -492,7 +492,7 @@ func DeleteDataStream(ctx context.Context, apiClient *clients.ApiClient, dataStr return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete DataStream: %s", dataStreamName)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete DataStream: %s", dataStreamName)); diags.HasError() { return diags } @@ -503,12 +503,12 @@ func PutDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient, d esClient, err := apiClient.GetESClient() if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } lifecycleBytes, err := json.Marshal(lifecycle) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } opts := []func(*esapi.IndicesPutDataLifecycleRequest){ @@ -518,11 +518,11 @@ func PutDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient, d } res, err := esClient.Indices.PutDataLifecycle([]string{dataStreamName}, opts...) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to create DataStreamLifecycle: %s", dataStreamName)); diags.HasError() { - return utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to create DataStreamLifecycle: %s", dataStreamName)); diags.HasError() { + return diagutil.FrameworkDiagsFromSDK(diags) } return nil } @@ -530,7 +530,7 @@ func PutDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient, d func GetDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient, dataStreamName string, expand_wildcards string) (*[]models.DataStreamLifecycle, fwdiags.Diagnostics) { esClient, err := apiClient.GetESClient() if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } opts := []func(*esapi.IndicesGetDataLifecycleRequest){ esClient.Indices.GetDataLifecycle.WithContext(ctx), @@ -538,14 +538,14 @@ func GetDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient, d } res, err := esClient.Indices.GetDataLifecycle([]string{dataStreamName}, opts...) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get requested DataStreamLifecycle: %s", dataStreamName)); diags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get requested DataStreamLifecycle: %s", dataStreamName)); diags.HasError() { + return nil, diagutil.FrameworkDiagsFromSDK(diags) } dStreams := struct { @@ -553,7 +553,7 @@ func GetDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient, d }{} if err := json.NewDecoder(res.Body).Decode(&dStreams); err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } ds := dStreams.DataStreams return &ds, nil @@ -563,7 +563,7 @@ func DeleteDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient esClient, err := apiClient.GetESClient() if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } opts := []func(*esapi.IndicesDeleteDataLifecycleRequest){ esClient.Indices.DeleteDataLifecycle.WithContext(ctx), @@ -571,11 +571,11 @@ func DeleteDataStreamLifecycle(ctx context.Context, apiClient *clients.ApiClient } res, err := esClient.Indices.DeleteDataLifecycle([]string{dataStreamName}, opts...) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete DataStreamLifecycle: %s", dataStreamName)); diags.HasError() { - return utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete DataStreamLifecycle: %s", dataStreamName)); diags.HasError() { + return diagutil.FrameworkDiagsFromSDK(diags) } return nil @@ -597,7 +597,7 @@ func PutIngestPipeline(ctx context.Context, apiClient *clients.ApiClient, pipeli return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to create or update ingest pipeline: %s", pipeline.Name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to create or update ingest pipeline: %s", pipeline.Name)); diags.HasError() { return diags } @@ -619,7 +619,7 @@ func GetIngestPipeline(ctx context.Context, apiClient *clients.ApiClient, name * if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get requested ingest pipeline: %s", *name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get requested ingest pipeline: %s", *name)); diags.HasError() { return nil, diags } @@ -645,7 +645,7 @@ func DeleteIngestPipeline(ctx context.Context, apiClient *clients.ApiClient, nam return diags } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete ingest pipeline: %s", *name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete ingest pipeline: %s", *name)); diags.HasError() { return diags } return diags diff --git a/internal/clients/elasticsearch/logstash.go b/internal/clients/elasticsearch/logstash.go index 0addad880..0bfb5e8b4 100644 --- a/internal/clients/elasticsearch/logstash.go +++ b/internal/clients/elasticsearch/logstash.go @@ -8,8 +8,8 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -28,7 +28,7 @@ func PutLogstashPipeline(ctx context.Context, apiClient *clients.ApiClient, logs return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create or update logstash pipeline"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create or update logstash pipeline"); diags.HasError() { return diags } @@ -49,7 +49,7 @@ func GetLogstashPipeline(ctx context.Context, apiClient *clients.ApiClient, pipe if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to find logstash pipeline on cluster."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to find logstash pipeline on cluster."); diags.HasError() { return nil, diags } @@ -83,7 +83,7 @@ func DeleteLogstashPipeline(ctx context.Context, apiClient *clients.ApiClient, p return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete logstash pipeline"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete logstash pipeline"); diags.HasError() { return diags } return diags diff --git a/internal/clients/elasticsearch/security.go b/internal/clients/elasticsearch/security.go index d35cd7bc2..083d23f56 100644 --- a/internal/clients/elasticsearch/security.go +++ b/internal/clients/elasticsearch/security.go @@ -8,8 +8,8 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" fwdiag "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -29,7 +29,7 @@ func PutUser(ctx context.Context, apiClient *clients.ApiClient, user *models.Use return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create or update a user"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create or update a user"); diags.HasError() { return diags } return diags @@ -50,7 +50,7 @@ func GetUser(ctx context.Context, apiClient *clients.ApiClient, username string) if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to get a user."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to get a user."); diags.HasError() { return nil, diags } @@ -83,7 +83,7 @@ func DeleteUser(ctx context.Context, apiClient *clients.ApiClient, username stri return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete a user"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete a user"); diags.HasError() { return diags } return diags @@ -108,7 +108,7 @@ func EnableUser(ctx context.Context, apiClient *clients.ApiClient, username stri return diags } defer res.Body.Close() - if diags := utils.CheckErrorFromFW(res, "Unable to enable system user"); diags.HasError() { + if diags := diagutil.CheckErrorFromFW(res, "Unable to enable system user"); diags.HasError() { return diags } return diags @@ -133,7 +133,7 @@ func DisableUser(ctx context.Context, apiClient *clients.ApiClient, username str return diags } defer res.Body.Close() - if diags := utils.CheckErrorFromFW(res, "Unable to disable system user"); diags.HasError() { + if diags := diagutil.CheckErrorFromFW(res, "Unable to disable system user"); diags.HasError() { return diags } return diags @@ -170,7 +170,7 @@ func ChangeUserPassword(ctx context.Context, apiClient *clients.ApiClient, usern return diags } defer res.Body.Close() - if diags := utils.CheckErrorFromFW(res, "Unable to change user's password"); diags.HasError() { + if diags := diagutil.CheckErrorFromFW(res, "Unable to change user's password"); diags.HasError() { return diags } return diags @@ -192,7 +192,7 @@ func PutRole(ctx context.Context, apiClient *clients.ApiClient, role *models.Rol return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create role"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create role"); diags.HasError() { return diags } @@ -215,7 +215,7 @@ func GetRole(ctx context.Context, apiClient *clients.ApiClient, rolename string) if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to get a role."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to get a role."); diags.HasError() { return nil, diags } roles := make(map[string]models.Role) @@ -245,7 +245,7 @@ func DeleteRole(ctx context.Context, apiClient *clients.ApiClient, rolename stri return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete role"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete role"); diags.HasError() { return diags } @@ -270,12 +270,7 @@ func PutRoleMapping(ctx context.Context, apiClient *clients.ApiClient, roleMappi return diags } defer res.Body.Close() - if sdkDiags := utils.CheckError(res, "Unable to put role mapping"); sdkDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) - return diags - } - - return diags + return diagutil.CheckErrorFromFW(res, "Unable to put role mapping") } func GetRoleMapping(ctx context.Context, apiClient *clients.ApiClient, roleMappingName string) (*models.RoleMapping, fwdiag.Diagnostics) { @@ -296,8 +291,7 @@ func GetRoleMapping(ctx context.Context, apiClient *clients.ApiClient, roleMappi if res.StatusCode == http.StatusNotFound { return nil, diags } - if sdkDiags := utils.CheckError(res, "Unable to get a role mapping."); sdkDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + if diags := diagutil.CheckErrorFromFW(res, "Unable to get a role mapping."); diags.HasError() { return nil, diags } roleMappings := make(map[string]models.RoleMapping) @@ -328,37 +322,32 @@ func DeleteRoleMapping(ctx context.Context, apiClient *clients.ApiClient, roleMa return diags } defer res.Body.Close() - if sdkDiags := utils.CheckError(res, "Unable to delete role mapping"); sdkDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) - return diags - } - - return diags + return diagutil.CheckErrorFromFW(res, "Unable to delete role mapping") } func CreateApiKey(apiClient *clients.ApiClient, apikey *models.ApiKey) (*models.ApiKeyCreateResponse, fwdiag.Diagnostics) { apikeyBytes, err := json.Marshal(apikey) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } esClient, err := apiClient.GetESClient() if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } res, err := esClient.Security.CreateAPIKey(bytes.NewReader(apikeyBytes)) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create apikey"); diags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, "Unable to create apikey"); diags.HasError() { + return nil, diagutil.FrameworkDiagsFromSDK(diags) } var apiKey models.ApiKeyCreateResponse if err := json.NewDecoder(res.Body).Decode(&apiKey); err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } return &apiKey, nil @@ -372,20 +361,20 @@ func UpdateApiKey(apiClient *clients.ApiClient, apikey models.ApiKey) fwdiag.Dia apikey.ID = "" apikeyBytes, err := json.Marshal(apikey) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } esClient, err := apiClient.GetESClient() if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } res, err := esClient.Security.UpdateAPIKey(id, esClient.Security.UpdateAPIKey.WithBody(bytes.NewReader(apikeyBytes))) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to update apikey"); diags.HasError() { - return utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, "Unable to update apikey"); diags.HasError() { + return diagutil.FrameworkDiagsFromSDK(diags) } return nil @@ -394,19 +383,19 @@ func UpdateApiKey(apiClient *clients.ApiClient, apikey models.ApiKey) fwdiag.Dia func GetApiKey(apiClient *clients.ApiClient, id string) (*models.ApiKeyResponse, fwdiag.Diagnostics) { esClient, err := apiClient.GetESClient() if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } req := esClient.Security.GetAPIKey.WithID(id) res, err := esClient.Security.GetAPIKey(req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to get an apikey."); diags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, "Unable to get an apikey."); diags.HasError() { + return nil, diagutil.FrameworkDiagsFromSDK(diags) } // unmarshal our response to proper type @@ -414,7 +403,7 @@ func GetApiKey(apiClient *clients.ApiClient, id string) (*models.ApiKeyResponse, ApiKeys []models.ApiKeyResponse `json:"api_keys"` } if err := json.NewDecoder(res.Body).Decode(&apiKeys); err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } if len(apiKeys.ApiKeys) != 1 { @@ -439,19 +428,19 @@ func DeleteApiKey(apiClient *clients.ApiClient, id string) fwdiag.Diagnostics { apikeyBytes, err := json.Marshal(apiKeys) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } esClient, err := apiClient.GetESClient() if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } res, err := esClient.Security.InvalidateAPIKey(bytes.NewReader(apikeyBytes)) if err != nil && res.IsError() { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete an apikey"); diags.HasError() { - return utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckError(res, "Unable to delete an apikey"); diags.HasError() { + return diagutil.FrameworkDiagsFromSDK(diags) } return nil } @@ -459,26 +448,26 @@ func DeleteApiKey(apiClient *clients.ApiClient, id string) fwdiag.Diagnostics { func CreateCrossClusterApiKey(apiClient *clients.ApiClient, apikey *models.CrossClusterApiKey) (*models.CrossClusterApiKeyCreateResponse, fwdiag.Diagnostics) { apikeyBytes, err := json.Marshal(apikey) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } esClient, err := apiClient.GetESClient() if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } res, err := esClient.Security.CreateCrossClusterAPIKey(bytes.NewReader(apikeyBytes)) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create cross cluster apikey"); diags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(diags) + if diags := diagutil.CheckErrorFromFW(res, "Unable to create cross cluster apikey"); diags.HasError() { + return nil, diags } var apiKey models.CrossClusterApiKeyCreateResponse if err := json.NewDecoder(res.Body).Decode(&apiKey); err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } return &apiKey, nil @@ -492,21 +481,17 @@ func UpdateCrossClusterApiKey(apiClient *clients.ApiClient, apikey models.CrossC apikey.ID = "" apikeyBytes, err := json.Marshal(apikey) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } esClient, err := apiClient.GetESClient() if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } res, err := esClient.Security.UpdateCrossClusterAPIKey(id, bytes.NewReader(apikeyBytes)) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to update cross cluster apikey"); diags.HasError() { - return utils.FrameworkDiagsFromSDK(diags) - } - - return nil + return diagutil.CheckErrorFromFW(res, "Unable to update cross cluster apikey") } diff --git a/internal/clients/elasticsearch/transform.go b/internal/clients/elasticsearch/transform.go index 7ca596564..9fe92eaa3 100644 --- a/internal/clients/elasticsearch/transform.go +++ b/internal/clients/elasticsearch/transform.go @@ -11,8 +11,8 @@ import ( "github.com/elastic/go-elasticsearch/v8" "github.com/elastic/go-elasticsearch/v8/esapi" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -65,7 +65,7 @@ func PutTransform(ctx context.Context, apiClient *clients.ApiClient, transform * } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to create transform: %s", transform.Name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to create transform: %s", transform.Name)); diags.HasError() { return diags } @@ -104,7 +104,7 @@ func GetTransform(ctx context.Context, apiClient *clients.ApiClient, name *strin if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, fmt.Sprintf("Unable to get requested transform: %s", *name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get requested transform: %s", *name)); diags.HasError() { return nil, diags } @@ -152,7 +152,7 @@ func GetTransformStats(ctx context.Context, apiClient *clients.ApiClient, name * } defer statsRes.Body.Close() - if diags := utils.CheckError(statsRes, fmt.Sprintf("Unable to get transform stats: %s", *name)); diags.HasError() { + if diags := diagutil.CheckError(statsRes, fmt.Sprintf("Unable to get transform stats: %s", *name)); diags.HasError() { return nil, diags } @@ -225,7 +225,7 @@ func UpdateTransform(ctx context.Context, apiClient *clients.ApiClient, transfor } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to update transform: %s", transform.Name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to update transform: %s", transform.Name)); diags.HasError() { return diags } @@ -264,7 +264,7 @@ func DeleteTransform(ctx context.Context, apiClient *clients.ApiClient, name *st return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, fmt.Sprintf("Unable to delete transform: %s", *name)); diags.HasError() { + if diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete transform: %s", *name)); diags.HasError() { return diags } @@ -288,7 +288,7 @@ func startTransform(ctx context.Context, esClient *elasticsearch.Client, transfo } defer startRes.Body.Close() - if diags := utils.CheckError(startRes, fmt.Sprintf("Unable to start transform: %s", transformName)); diags.HasError() { + if diags := diagutil.CheckError(startRes, fmt.Sprintf("Unable to start transform: %s", transformName)); diags.HasError() { return diags } @@ -312,7 +312,7 @@ func stopTransform(ctx context.Context, esClient *elasticsearch.Client, transfor } defer startRes.Body.Close() - if diags := utils.CheckError(startRes, fmt.Sprintf("Unable to stop transform: %s", transformName)); diags.HasError() { + if diags := diagutil.CheckError(startRes, fmt.Sprintf("Unable to stop transform: %s", transformName)); diags.HasError() { return diags } diff --git a/internal/clients/elasticsearch/watch.go b/internal/clients/elasticsearch/watch.go index 23b776a10..03f8c0228 100644 --- a/internal/clients/elasticsearch/watch.go +++ b/internal/clients/elasticsearch/watch.go @@ -7,8 +7,8 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -29,7 +29,7 @@ func PutWatch(ctx context.Context, apiClient *clients.ApiClient, watch *models.P return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to create or update watch"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to create or update watch"); diags.HasError() { return diags } @@ -52,7 +52,7 @@ func GetWatch(ctx context.Context, apiClient *clients.ApiClient, watchID string) if res.StatusCode == http.StatusNotFound { return nil, nil } - if diags := utils.CheckError(res, "Unable to find watch on cluster."); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to find watch on cluster."); diags.HasError() { return nil, diags } @@ -77,7 +77,7 @@ func DeleteWatch(ctx context.Context, apiClient *clients.ApiClient, watchID stri return diag.FromErr(err) } defer res.Body.Close() - if diags := utils.CheckError(res, "Unable to delete watch"); diags.HasError() { + if diags := diagutil.CheckError(res, "Unable to delete watch"); diags.HasError() { return diags } return diags diff --git a/internal/clients/fleet/fleet.go b/internal/clients/fleet/fleet.go index aea02011d..980d8b047 100644 --- a/internal/clients/fleet/fleet.go +++ b/internal/clients/fleet/fleet.go @@ -7,6 +7,7 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework/diag" ) @@ -19,7 +20,7 @@ var ( func GetEnrollmentTokens(ctx context.Context, client *Client) ([]kbapi.EnrollmentApiKey, diag.Diagnostics) { resp, err := client.API.GetFleetEnrollmentApiKeysWithResponse(ctx, nil) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -38,7 +39,7 @@ func GetEnrollmentTokensByPolicy(ctx context.Context, client *Client, policyID s resp, err := client.API.GetFleetEnrollmentApiKeysWithResponse(ctx, ¶ms) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -53,7 +54,7 @@ func GetEnrollmentTokensByPolicy(ctx context.Context, client *Client, policyID s func GetAgentPolicy(ctx context.Context, client *Client, id string) (*kbapi.AgentPolicy, diag.Diagnostics) { resp, err := client.API.GetFleetAgentPoliciesAgentpolicyidWithResponse(ctx, id, nil) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -74,7 +75,7 @@ func CreateAgentPolicy(ctx context.Context, client *Client, req kbapi.PostFleetA resp, err := client.API.PostFleetAgentPoliciesWithResponse(ctx, ¶ms, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -89,7 +90,7 @@ func CreateAgentPolicy(ctx context.Context, client *Client, req kbapi.PostFleetA func UpdateAgentPolicy(ctx context.Context, client *Client, id string, req kbapi.PutFleetAgentPoliciesAgentpolicyidJSONRequestBody) (*kbapi.AgentPolicy, diag.Diagnostics) { resp, err := client.API.PutFleetAgentPoliciesAgentpolicyidWithResponse(ctx, id, nil, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -108,7 +109,7 @@ func DeleteAgentPolicy(ctx context.Context, client *Client, id string) diag.Diag resp, err := client.API.PostFleetAgentPoliciesDeleteWithResponse(ctx, body) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -125,7 +126,7 @@ func DeleteAgentPolicy(ctx context.Context, client *Client, id string) diag.Diag func GetOutput(ctx context.Context, client *Client, id string) (*kbapi.OutputUnion, diag.Diagnostics) { resp, err := client.API.GetFleetOutputsOutputidWithResponse(ctx, id) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -142,7 +143,7 @@ func GetOutput(ctx context.Context, client *Client, id string) (*kbapi.OutputUni func CreateOutput(ctx context.Context, client *Client, req kbapi.NewOutputUnion) (*kbapi.OutputUnion, diag.Diagnostics) { resp, err := client.API.PostFleetOutputsWithResponse(ctx, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -157,7 +158,7 @@ func CreateOutput(ctx context.Context, client *Client, req kbapi.NewOutputUnion) func UpdateOutput(ctx context.Context, client *Client, id string, req kbapi.UpdateOutputUnion) (*kbapi.OutputUnion, diag.Diagnostics) { resp, err := client.API.PutFleetOutputsOutputidWithResponse(ctx, id, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -172,7 +173,7 @@ func UpdateOutput(ctx context.Context, client *Client, id string, req kbapi.Upda func DeleteOutput(ctx context.Context, client *Client, id string) diag.Diagnostics { resp, err := client.API.DeleteFleetOutputsOutputidWithResponse(ctx, id) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -189,7 +190,7 @@ func DeleteOutput(ctx context.Context, client *Client, id string) diag.Diagnosti func GetFleetServerHost(ctx context.Context, client *Client, id string) (*kbapi.ServerHost, diag.Diagnostics) { resp, err := client.API.GetFleetFleetServerHostsItemidWithResponse(ctx, id) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -206,7 +207,7 @@ func GetFleetServerHost(ctx context.Context, client *Client, id string) (*kbapi. func CreateFleetServerHost(ctx context.Context, client *Client, req kbapi.PostFleetFleetServerHostsJSONRequestBody) (*kbapi.ServerHost, diag.Diagnostics) { resp, err := client.API.PostFleetFleetServerHostsWithResponse(ctx, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -221,7 +222,7 @@ func CreateFleetServerHost(ctx context.Context, client *Client, req kbapi.PostFl func UpdateFleetServerHost(ctx context.Context, client *Client, id string, req kbapi.PutFleetFleetServerHostsItemidJSONRequestBody) (*kbapi.ServerHost, diag.Diagnostics) { resp, err := client.API.PutFleetFleetServerHostsItemidWithResponse(ctx, id, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -236,7 +237,7 @@ func UpdateFleetServerHost(ctx context.Context, client *Client, id string, req k func DeleteFleetServerHost(ctx context.Context, client *Client, id string) diag.Diagnostics { resp, err := client.API.DeleteFleetFleetServerHostsItemidWithResponse(ctx, id) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -257,7 +258,7 @@ func GetPackagePolicy(ctx context.Context, client *Client, id string) (*kbapi.Pa resp, err := client.API.GetFleetPackagePoliciesPackagepolicyidWithResponse(ctx, id, ¶ms) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -278,7 +279,7 @@ func CreatePackagePolicy(ctx context.Context, client *Client, req kbapi.PackageP resp, err := client.API.PostFleetPackagePoliciesWithResponse(ctx, ¶ms, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -297,7 +298,7 @@ func UpdatePackagePolicy(ctx context.Context, client *Client, id string, req kba resp, err := client.API.PutFleetPackagePoliciesPackagepolicyidWithResponse(ctx, id, ¶ms, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -316,7 +317,7 @@ func DeletePackagePolicy(ctx context.Context, client *Client, id string, force b resp, err := client.API.DeleteFleetPackagePoliciesPackagepolicyidWithResponse(ctx, id, ¶ms) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -335,14 +336,14 @@ func GetPackage(ctx context.Context, client *Client, name, version string) (*kba resp, err := client.API.GetFleetEpmPackagesPkgnamePkgversionWithResponse(ctx, name, version, ¶ms) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { case http.StatusOK: return &resp.JSON200.Item, nil case http.StatusNotFound: - return nil, utils.FrameworkDiagFromError(ErrPackageNotFound) + return nil, diagutil.FrameworkDiagFromError(ErrPackageNotFound) default: return nil, reportUnknownError(resp.StatusCode(), resp.Body) } @@ -357,7 +358,7 @@ func InstallPackage(ctx context.Context, client *Client, name, version string, f resp, err := client.API.PostFleetEpmPackagesPkgnamePkgversionWithResponse(ctx, name, version, ¶ms, body) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -372,7 +373,7 @@ func InstallPackage(ctx context.Context, client *Client, name, version string, f func Uninstall(ctx context.Context, client *Client, name, version string, force bool) diag.Diagnostics { resp, err := client.API.DeleteFleetEpmPackagesPkgnamePkgversionWithResponse(ctx, name, version, nil) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -400,7 +401,7 @@ func GetPackages(ctx context.Context, client *Client, prerelease bool) ([]kbapi. resp, err := client.API.GetFleetEpmPackagesWithResponse(ctx, ¶ms) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { diff --git a/internal/clients/kibana/alerting.go b/internal/clients/kibana/alerting.go index 031d6f80a..9fd431062 100644 --- a/internal/clients/kibana/alerting.go +++ b/internal/clients/kibana/alerting.go @@ -7,8 +7,8 @@ import ( "github.com/elastic/terraform-provider-elasticstack/generated/alerting" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -203,7 +203,7 @@ func CreateAlertingRule(ctx context.Context, apiClient ApiClient, rule models.Al defer res.Body.Close() - diags := utils.CheckHttpError(res, "Unable to create alerting rule") + diags := diagutil.CheckHttpError(res, "Unable to create alerting rule") if diags.HasError() { return nil, diags } @@ -261,7 +261,7 @@ func UpdateAlertingRule(ctx context.Context, apiClient ApiClient, rule models.Al defer res.Body.Close() - if diags := utils.CheckHttpError(res, "Unable to update alerting rule"); diags.HasError() { + if diags := diagutil.CheckHttpError(res, "Unable to update alerting rule"); diags.HasError() { return nil, diags } @@ -283,7 +283,7 @@ func UpdateAlertingRule(ctx context.Context, apiClient ApiClient, rule models.Al return nil, diag.FromErr(err) } - if diags := utils.CheckHttpError(res, "Unable to enable alerting rule"); diags.HasError() { + if diags := diagutil.CheckHttpError(res, "Unable to enable alerting rule"); diags.HasError() { return nil, diag.FromErr(err) } } @@ -294,7 +294,7 @@ func UpdateAlertingRule(ctx context.Context, apiClient ApiClient, rule models.Al return nil, diag.FromErr(err) } - if diags := utils.CheckHttpError(res, "Unable to disable alerting rule"); diags.HasError() { + if diags := diagutil.CheckHttpError(res, "Unable to disable alerting rule"); diags.HasError() { return nil, diag.FromErr(err) } } @@ -319,7 +319,7 @@ func GetAlertingRule(ctx context.Context, apiClient *clients.ApiClient, id, spac if res.StatusCode == http.StatusNotFound { return nil, nil } - return ruleResponseToModel(spaceID, ruleRes), utils.CheckHttpError(res, "Unable to get alerting rule") + return ruleResponseToModel(spaceID, ruleRes), diagutil.CheckHttpError(res, "Unable to get alerting rule") } func DeleteAlertingRule(ctx context.Context, apiClient *clients.ApiClient, ruleId string, spaceId string) diag.Diagnostics { @@ -336,5 +336,5 @@ func DeleteAlertingRule(ctx context.Context, apiClient *clients.ApiClient, ruleI } defer res.Body.Close() - return utils.CheckHttpError(res, "Unable to delete alerting rule") + return diagutil.CheckHttpError(res, "Unable to delete alerting rule") } diff --git a/internal/clients/kibana/slo.go b/internal/clients/kibana/slo.go index 08aed32a2..e0819d2a4 100644 --- a/internal/clients/kibana/slo.go +++ b/internal/clients/kibana/slo.go @@ -7,8 +7,8 @@ import ( "github.com/elastic/terraform-provider-elasticstack/generated/slo" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" ) @@ -29,13 +29,13 @@ func GetSlo(ctx context.Context, apiClient *clients.ApiClient, id, spaceID strin } if err != nil { diags := diag.FromErr(err) - diags = append(diags, utils.CheckHttpError(res, "unable to create slo with id "+id)...) + diags = append(diags, diagutil.CheckHttpError(res, "unable to create slo with id "+id)...) return nil, diags } defer res.Body.Close() - return sloResponseToModel(spaceID, sloRes), utils.CheckHttpError(res, "Unable to get slo with ID "+string(id)) + return sloResponseToModel(spaceID, sloRes), diagutil.CheckHttpError(res, "Unable to get slo with ID "+string(id)) } func DeleteSlo(ctx context.Context, apiClient *clients.ApiClient, sloId string, spaceId string) diag.Diagnostics { @@ -49,12 +49,12 @@ func DeleteSlo(ctx context.Context, apiClient *clients.ApiClient, sloId string, res, err := req.Execute() if err != nil && res == nil { diags := diag.FromErr(err) - diags = append(diags, utils.CheckHttpError(res, "unable to create slo with id "+sloId)...) + diags = append(diags, diagutil.CheckHttpError(res, "unable to create slo with id "+sloId)...) return diags } defer res.Body.Close() - return utils.CheckHttpError(res, "Unable to delete slo with ID "+string(sloId)) + return diagutil.CheckHttpError(res, "Unable to delete slo with ID "+string(sloId)) } func UpdateSlo(ctx context.Context, apiClient *clients.ApiClient, s models.Slo, supportsGroupByList bool) (*models.Slo, diag.Diagnostics) { @@ -85,12 +85,12 @@ func UpdateSlo(ctx context.Context, apiClient *clients.ApiClient, s models.Slo, if err != nil { diags := diag.FromErr(err) - diags = append(diags, utils.CheckHttpError(res, "unable to create slo with id "+s.SloID)...) + diags = append(diags, diagutil.CheckHttpError(res, "unable to create slo with id "+s.SloID)...) return nil, diags } defer res.Body.Close() - if diags := utils.CheckHttpError(res, "unable to update slo with id "+s.SloID); diags.HasError() { + if diags := diagutil.CheckHttpError(res, "unable to update slo with id "+s.SloID); diags.HasError() { return nil, diags } @@ -129,12 +129,12 @@ func CreateSlo(ctx context.Context, apiClient *clients.ApiClient, s models.Slo, sloRes, res, err := req.Execute() if err != nil { diags := diag.FromErr(err) - diags = append(diags, utils.CheckHttpError(res, "unable to create slo with id "+s.SloID)...) + diags = append(diags, diagutil.CheckHttpError(res, "unable to create slo with id "+s.SloID)...) return nil, diags } defer res.Body.Close() - if diags := utils.CheckHttpError(res, "unable to create slo with id "+s.SloID); diags.HasError() { + if diags := diagutil.CheckHttpError(res, "unable to create slo with id "+s.SloID); diags.HasError() { return nil, diags } diff --git a/internal/clients/kibana_oapi/connector.go b/internal/clients/kibana_oapi/connector.go index 4b6b47f63..d88438e22 100644 --- a/internal/clients/kibana_oapi/connector.go +++ b/internal/clients/kibana_oapi/connector.go @@ -9,6 +9,7 @@ import ( "strings" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" fwdiag "github.com/hashicorp/terraform-plugin-framework/diag" @@ -104,7 +105,7 @@ func SearchConnectors(ctx context.Context, client *Client, connectorName, spaceI c, fwDiags := ConnectorResponseToModel(spaceID, &connector) if fwDiags.HasError() { - return nil, utils.SDKDiagsFromFramework(fwDiags) + return nil, diagutil.SDKDiagsFromFramework(fwDiags) } foundConnectors = append(foundConnectors, c) diff --git a/internal/clients/kibana_oapi/data_views.go b/internal/clients/kibana_oapi/data_views.go index 78d5bcd36..1126a73cc 100644 --- a/internal/clients/kibana_oapi/data_views.go +++ b/internal/clients/kibana_oapi/data_views.go @@ -5,7 +5,7 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/diag" ) @@ -13,7 +13,7 @@ import ( func GetDataViews(ctx context.Context, client *Client, spaceID string) ([]kbapi.GetDataViewsResponseItem, diag.Diagnostics) { resp, err := client.API.GetAllDataViewsDefaultWithResponse(ctx, spaceID) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -28,7 +28,7 @@ func GetDataViews(ctx context.Context, client *Client, spaceID string) ([]kbapi. func GetDataView(ctx context.Context, client *Client, spaceID string, viewID string) (*kbapi.DataViewsDataViewResponseObject, diag.Diagnostics) { resp, err := client.API.GetDataViewDefaultWithResponse(ctx, spaceID, viewID) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -45,7 +45,7 @@ func GetDataView(ctx context.Context, client *Client, spaceID string, viewID str func CreateDataView(ctx context.Context, client *Client, spaceID string, req kbapi.DataViewsCreateDataViewRequestObject) (*kbapi.DataViewsDataViewResponseObject, diag.Diagnostics) { resp, err := client.API.CreateDataViewDefaultwWithResponse(ctx, spaceID, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -60,7 +60,7 @@ func CreateDataView(ctx context.Context, client *Client, spaceID string, req kba func UpdateDataView(ctx context.Context, client *Client, spaceID string, viewID string, req kbapi.DataViewsUpdateDataViewRequestObject) (*kbapi.DataViewsDataViewResponseObject, diag.Diagnostics) { resp, err := client.API.UpdateDataViewDefaultWithResponse(ctx, spaceID, viewID, req) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -75,7 +75,7 @@ func UpdateDataView(ctx context.Context, client *Client, spaceID string, viewID func DeleteDataView(ctx context.Context, client *Client, spaceID string, viewID string) diag.Diagnostics { resp, err := client.API.DeleteDataViewDefaultWithResponse(ctx, spaceID, viewID) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { diff --git a/internal/clients/kibana_oapi/maintenance_window.go b/internal/clients/kibana_oapi/maintenance_window.go index 8babf2c92..1d76cd97d 100644 --- a/internal/clients/kibana_oapi/maintenance_window.go +++ b/internal/clients/kibana_oapi/maintenance_window.go @@ -5,7 +5,7 @@ import ( "net/http" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/diag" ) @@ -14,7 +14,7 @@ func GetMaintenanceWindow(ctx context.Context, client *Client, spaceID string, m resp, err := client.API.GetMaintenanceWindowIdWithResponse(ctx, spaceID, maintenanceWindowID) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -29,7 +29,7 @@ func GetMaintenanceWindow(ctx context.Context, client *Client, spaceID string, m func CreateMaintenanceWindow(ctx context.Context, client *Client, spaceID string, body kbapi.PostMaintenanceWindowJSONRequestBody) (*kbapi.PostMaintenanceWindowResponse, diag.Diagnostics) { resp, err := client.API.PostMaintenanceWindowWithResponse(ctx, spaceID, body) if err != nil { - return nil, utils.FrameworkDiagFromError(err) + return nil, diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -44,7 +44,7 @@ func CreateMaintenanceWindow(ctx context.Context, client *Client, spaceID string func UpdateMaintenanceWindow(ctx context.Context, client *Client, spaceID string, maintenanceWindowID string, req kbapi.PatchMaintenanceWindowIdJSONRequestBody) diag.Diagnostics { resp, err := client.API.PatchMaintenanceWindowIdWithResponse(ctx, spaceID, maintenanceWindowID, req) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { @@ -59,7 +59,7 @@ func UpdateMaintenanceWindow(ctx context.Context, client *Client, spaceID string func DeleteMaintenanceWindow(ctx context.Context, client *Client, spaceID string, maintenanceWindowID string) diag.Diagnostics { resp, err := client.API.DeleteMaintenanceWindowIdWithResponse(ctx, spaceID, maintenanceWindowID) if err != nil { - return utils.FrameworkDiagFromError(err) + return diagutil.FrameworkDiagFromError(err) } switch resp.StatusCode() { diff --git a/internal/utils/diag.go b/internal/diagutil/http.go similarity index 59% rename from internal/utils/diag.go rename to internal/diagutil/http.go index 1a8093747..3a7a55520 100644 --- a/internal/utils/diag.go +++ b/internal/diagutil/http.go @@ -1,4 +1,4 @@ -package utils +package diagutil import ( "fmt" @@ -75,56 +75,3 @@ func CheckHttpErrorFromFW(res *http.Response, errMsg string) fwdiag.Diagnostics } return diags } - -func FrameworkDiagsFromSDK(sdkDiags sdkdiag.Diagnostics) fwdiag.Diagnostics { - var diags fwdiag.Diagnostics - - for _, sdkDiag := range sdkDiags { - var fwDiag fwdiag.Diagnostic - - if sdkDiag.Severity == sdkdiag.Error { - fwDiag = fwdiag.NewErrorDiagnostic(sdkDiag.Summary, sdkDiag.Detail) - } else { - fwDiag = fwdiag.NewWarningDiagnostic(sdkDiag.Summary, sdkDiag.Detail) - } - - diags.Append(fwDiag) - } - - return diags -} - -func SDKDiagsFromFramework(fwDiags fwdiag.Diagnostics) sdkdiag.Diagnostics { - var diags sdkdiag.Diagnostics - - for _, fwDiag := range fwDiags { - var sdkDiag sdkdiag.Diagnostic - - if fwDiag.Severity() == fwdiag.SeverityError { - sdkDiag = sdkdiag.Diagnostic{ - Severity: sdkdiag.Error, - Summary: fwDiag.Summary(), - Detail: fwDiag.Detail(), - } - } else { - sdkDiag = sdkdiag.Diagnostic{ - Severity: sdkdiag.Warning, - Summary: fwDiag.Summary(), - Detail: fwDiag.Detail(), - } - } - - diags = append(diags, sdkDiag) - } - - return diags -} - -func FrameworkDiagFromError(err error) fwdiag.Diagnostics { - if err == nil { - return nil - } - return fwdiag.Diagnostics{ - fwdiag.NewErrorDiagnostic(err.Error(), ""), - } -} diff --git a/internal/diagutil/translation.go b/internal/diagutil/translation.go new file mode 100644 index 000000000..9949ca06b --- /dev/null +++ b/internal/diagutil/translation.go @@ -0,0 +1,79 @@ +package diagutil + +import ( + "fmt" + + fwdiag "github.com/hashicorp/terraform-plugin-framework/diag" + sdkdiag "github.com/hashicorp/terraform-plugin-sdk/v2/diag" +) + +func FrameworkDiagsFromSDK(sdkDiags sdkdiag.Diagnostics) fwdiag.Diagnostics { + var diags fwdiag.Diagnostics + + for _, sdkDiag := range sdkDiags { + var fwDiag fwdiag.Diagnostic + + if sdkDiag.Severity == sdkdiag.Error { + fwDiag = fwdiag.NewErrorDiagnostic(sdkDiag.Summary, sdkDiag.Detail) + } else { + fwDiag = fwdiag.NewWarningDiagnostic(sdkDiag.Summary, sdkDiag.Detail) + } + + diags.Append(fwDiag) + } + + return diags +} + +func SDKDiagsFromFramework(fwDiags fwdiag.Diagnostics) sdkdiag.Diagnostics { + var diags sdkdiag.Diagnostics + + for _, fwDiag := range fwDiags { + var sdkDiag sdkdiag.Diagnostic + + if fwDiag.Severity() == fwdiag.SeverityError { + sdkDiag = sdkdiag.Diagnostic{ + Severity: sdkdiag.Error, + Summary: fwDiag.Summary(), + Detail: fwDiag.Detail(), + } + } else { + sdkDiag = sdkdiag.Diagnostic{ + Severity: sdkdiag.Warning, + Summary: fwDiag.Summary(), + Detail: fwDiag.Detail(), + } + } + + diags = append(diags, sdkDiag) + } + + return diags +} + +func FrameworkDiagFromError(err error) fwdiag.Diagnostics { + if err == nil { + return nil + } + return fwdiag.Diagnostics{ + fwdiag.NewErrorDiagnostic(err.Error(), ""), + } +} + +func SdkDiagsAsError(diags sdkdiag.Diagnostics) error { + for _, diag := range diags { + if diag.Severity == sdkdiag.Error { + return fmt.Errorf("%s: %s", diag.Summary, diag.Detail) + } + } + return nil +} + +func FwDiagsAsError(diags fwdiag.Diagnostics) error { + for _, diag := range diags { + if diag.Severity() == fwdiag.SeverityError { + return fmt.Errorf("%s: %s", diag.Summary(), diag.Detail()) + } + } + return nil +} diff --git a/internal/elasticsearch/enrich/create.go b/internal/elasticsearch/enrich/create.go index 1f1f2e368..1864b6c63 100644 --- a/internal/elasticsearch/enrich/create.go +++ b/internal/elasticsearch/enrich/create.go @@ -5,6 +5,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework/diag" @@ -40,7 +41,7 @@ func (r *enrichPolicyResource) upsert(ctx context.Context, plan tfsdk.Plan, stat policyName := data.Name.ValueString() id, sdkDiags := r.client.ID(ctx, policyName) - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if diags.HasError() { return diags } @@ -75,7 +76,7 @@ func (r *enrichPolicyResource) upsert(ctx context.Context, plan tfsdk.Plan, stat } if sdkDiags := elasticsearch.PutEnrichPolicy(ctx, client, policy); sdkDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) return diags } @@ -84,7 +85,7 @@ func (r *enrichPolicyResource) upsert(ctx context.Context, plan tfsdk.Plan, stat // Execute policy if requested if !data.Execute.IsNull() && !data.Execute.IsUnknown() && data.Execute.ValueBool() { if sdkDiags := elasticsearch.ExecuteEnrichPolicy(ctx, client, policyName); sdkDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) return diags } } diff --git a/internal/elasticsearch/enrich/data_source.go b/internal/elasticsearch/enrich/data_source.go index 2b03bfdcc..68bda708a 100644 --- a/internal/elasticsearch/enrich/data_source.go +++ b/internal/elasticsearch/enrich/data_source.go @@ -6,7 +6,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" @@ -94,7 +94,7 @@ func (d *enrichPolicyDataSource) Read(ctx context.Context, req datasource.ReadRe } id, sdkDiags := client.ID(ctx, policyName) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if resp.Diagnostics.HasError() { return } @@ -102,7 +102,7 @@ func (d *enrichPolicyDataSource) Read(ctx context.Context, req datasource.ReadRe // Use the same read logic as the resource policy, sdkDiags := elasticsearch.GetEnrichPolicy(ctx, client, policyName) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if resp.Diagnostics.HasError() { return } diff --git a/internal/elasticsearch/enrich/delete.go b/internal/elasticsearch/enrich/delete.go index aa249f6d0..322b53b63 100644 --- a/internal/elasticsearch/enrich/delete.go +++ b/internal/elasticsearch/enrich/delete.go @@ -5,7 +5,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" ) @@ -30,5 +30,5 @@ func (r *enrichPolicyResource) Delete(ctx context.Context, req resource.DeleteRe } sdkDiags := elasticsearch.DeleteEnrichPolicy(ctx, client, policyName) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) } diff --git a/internal/elasticsearch/enrich/read.go b/internal/elasticsearch/enrich/read.go index 7e7f366e9..d1ac7f4e5 100644 --- a/internal/elasticsearch/enrich/read.go +++ b/internal/elasticsearch/enrich/read.go @@ -6,7 +6,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-log/tflog" ) @@ -32,7 +32,7 @@ func (r *enrichPolicyResource) Read(ctx context.Context, req resource.ReadReques } policy, sdkDiags := elasticsearch.GetEnrichPolicy(ctx, client, policyName) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if resp.Diagnostics.HasError() { return } diff --git a/internal/elasticsearch/index/data_stream_lifecycle/create.go b/internal/elasticsearch/index/data_stream_lifecycle/create.go index b7d04f43a..9512579f2 100644 --- a/internal/elasticsearch/index/data_stream_lifecycle/create.go +++ b/internal/elasticsearch/index/data_stream_lifecycle/create.go @@ -5,7 +5,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/tfsdk" @@ -32,7 +32,7 @@ func (r Resource) create(ctx context.Context, plan tfsdk.Plan, state *tfsdk.Stat name := planModel.Name.ValueString() id, sdkDiags := client.ID(ctx, name) if sdkDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) return diags } diff --git a/internal/elasticsearch/index/data_stream_lifecycle/models.go b/internal/elasticsearch/index/data_stream_lifecycle/models.go index 82e47d168..34f8fa8e8 100644 --- a/internal/elasticsearch/index/data_stream_lifecycle/models.go +++ b/internal/elasticsearch/index/data_stream_lifecycle/models.go @@ -4,8 +4,8 @@ import ( "context" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/types" ) @@ -28,7 +28,7 @@ type downsamplingTfModel struct { func (model tfModel) GetID() (*clients.CompositeId, diag.Diagnostics) { compId, sdkDiags := clients.CompositeIdFromStr(model.ID.ValueString()) if sdkDiags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(sdkDiags) + return nil, diagutil.FrameworkDiagsFromSDK(sdkDiags) } return compId, nil diff --git a/internal/elasticsearch/index/index/create.go b/internal/elasticsearch/index/index/create.go index 00e2967f7..b9b625ddc 100644 --- a/internal/elasticsearch/index/index/create.go +++ b/internal/elasticsearch/index/index/create.go @@ -5,7 +5,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/types" ) @@ -26,7 +26,7 @@ func (r Resource) Create(ctx context.Context, req resource.CreateRequest, resp * name := planModel.Name.ValueString() id, sdkDiags := client.ID(ctx, name) if sdkDiags.HasError() { - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) return } @@ -39,7 +39,7 @@ func (r Resource) Create(ctx context.Context, req resource.CreateRequest, resp * serverFlavor, sdkDiags := client.ServerFlavor(ctx) if sdkDiags.HasError() { - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) return } diff --git a/internal/elasticsearch/index/index/models.go b/internal/elasticsearch/index/index/models.go index e4b018ee5..0a8c7de99 100644 --- a/internal/elasticsearch/index/index/models.go +++ b/internal/elasticsearch/index/index/models.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/elastic/terraform-provider-elasticstack/internal/utils/customtypes" @@ -300,7 +301,7 @@ func (model tfModel) toPutIndexParams(serverFlavor string) models.PutIndexParams func (model tfModel) GetID() (*clients.CompositeId, diag.Diagnostics) { compId, sdkDiags := clients.CompositeIdFromStr(model.ID.ValueString()) if sdkDiags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(sdkDiags) + return nil, diagutil.FrameworkDiagsFromSDK(sdkDiags) } return compId, nil diff --git a/internal/elasticsearch/index/index/update.go b/internal/elasticsearch/index/index/update.go index 639da8ac1..69e8e9347 100644 --- a/internal/elasticsearch/index/index/update.go +++ b/internal/elasticsearch/index/index/update.go @@ -6,8 +6,8 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -36,7 +36,7 @@ func (r *Resource) Update(ctx context.Context, req resource.UpdateRequest, resp name := planModel.Name.ValueString() id, sdkDiags := client.ID(ctx, name) if sdkDiags.HasError() { - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) return } diff --git a/internal/elasticsearch/security/api_key/create.go b/internal/elasticsearch/security/api_key/create.go index 18f762133..136c3f378 100644 --- a/internal/elasticsearch/security/api_key/create.go +++ b/internal/elasticsearch/security/api_key/create.go @@ -7,8 +7,8 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -92,7 +92,7 @@ func doesCurrentVersionSupportRestrictionOnApiKey(ctx context.Context, client *c currentVersion, diags := client.ServerVersion(ctx) if diags.HasError() { - return false, utils.FrameworkDiagsFromSDK(diags) + return false, diagutil.FrameworkDiagsFromSDK(diags) } return currentVersion.GreaterThanOrEqual(MinVersionWithRestriction), nil @@ -102,7 +102,7 @@ func doesCurrentVersionSupportCrossClusterApiKey(ctx context.Context, client *cl currentVersion, diags := client.ServerVersion(ctx) if diags.HasError() { - return false, utils.FrameworkDiagsFromSDK(diags) + return false, diagutil.FrameworkDiagsFromSDK(diags) } return currentVersion.GreaterThanOrEqual(MinVersionWithCrossCluster), nil @@ -141,7 +141,7 @@ func (r *Resource) createCrossClusterApiKey(ctx context.Context, client *clients id, sdkDiags := client.ID(ctx, putResponse.Id) if sdkDiags.HasError() { - return utils.FrameworkDiagsFromSDK(sdkDiags) + return diagutil.FrameworkDiagsFromSDK(sdkDiags) } planModel.ID = basetypes.NewStringValue(id.String()) @@ -168,7 +168,7 @@ func (r *Resource) createApiKey(ctx context.Context, client *clients.ApiClient, id, sdkDiags := client.ID(ctx, putResponse.Id) if sdkDiags.HasError() { - return utils.FrameworkDiagsFromSDK(sdkDiags) + return diagutil.FrameworkDiagsFromSDK(sdkDiags) } planModel.ID = basetypes.NewStringValue(id.String()) diff --git a/internal/elasticsearch/security/api_key/models.go b/internal/elasticsearch/security/api_key/models.go index f3da6e4ee..4ef17b838 100644 --- a/internal/elasticsearch/security/api_key/models.go +++ b/internal/elasticsearch/security/api_key/models.go @@ -5,6 +5,7 @@ import ( "encoding/json" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/go-version" @@ -48,7 +49,7 @@ type tfModel struct { func (model tfModel) GetID() (*clients.CompositeId, diag.Diagnostics) { compId, sdkDiags := clients.CompositeIdFromStr(model.ID.ValueString()) if sdkDiags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(sdkDiags) + return nil, diagutil.FrameworkDiagsFromSDK(sdkDiags) } return compId, nil @@ -232,7 +233,7 @@ func (model *tfModel) populateFromAPI(apiKey models.ApiKeyResponse, serverVersio func marshalNormalizedJsonValue(item any) (jsontypes.Normalized, diag.Diagnostics) { jsonBytes, err := json.Marshal(item) if err != nil { - return jsontypes.Normalized{}, utils.FrameworkDiagFromError(err) + return jsontypes.Normalized{}, diagutil.FrameworkDiagFromError(err) } return jsontypes.NewNormalizedValue(string(jsonBytes)), nil diff --git a/internal/elasticsearch/security/api_key/read.go b/internal/elasticsearch/security/api_key/read.go index 2afcf4414..8d072d831 100644 --- a/internal/elasticsearch/security/api_key/read.go +++ b/internal/elasticsearch/security/api_key/read.go @@ -5,7 +5,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/resource" ) @@ -58,7 +58,7 @@ func (r *Resource) read(ctx context.Context, client *clients.ApiClient, model tf } version, sdkDiags := client.ServerVersion(ctx) - diags = utils.FrameworkDiagsFromSDK(sdkDiags) + diags = diagutil.FrameworkDiagsFromSDK(sdkDiags) if diags.HasError() { return nil, diags } diff --git a/internal/elasticsearch/security/api_key/resource.go b/internal/elasticsearch/security/api_key/resource.go index 3a3e0c27d..6af6dd706 100644 --- a/internal/elasticsearch/security/api_key/resource.go +++ b/internal/elasticsearch/security/api_key/resource.go @@ -5,7 +5,7 @@ import ( "encoding/json" "github.com/elastic/terraform-provider-elasticstack/internal/clients" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -76,7 +76,7 @@ type clusterVersionPrivateData struct { func (r *Resource) saveClusterVersion(ctx context.Context, client *clients.ApiClient, priv privateData) diag.Diagnostics { version, sdkDiags := client.ServerVersion(ctx) - diags := utils.FrameworkDiagsFromSDK(sdkDiags) + diags := diagutil.FrameworkDiagsFromSDK(sdkDiags) if diags.HasError() { return diags } diff --git a/internal/elasticsearch/security/role_mapping/data_source.go b/internal/elasticsearch/security/role_mapping/data_source.go index 13dcd9641..acce3be9a 100644 --- a/internal/elasticsearch/security/role_mapping/data_source.go +++ b/internal/elasticsearch/security/role_mapping/data_source.go @@ -5,8 +5,8 @@ import ( "fmt" "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" providerschema "github.com/elastic/terraform-provider-elasticstack/internal/schema" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" @@ -90,7 +90,7 @@ func (d *roleMappingDataSource) Read(ctx context.Context, req datasource.ReadReq } id, sdkDiags := client.ID(ctx, roleMappingName) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if resp.Diagnostics.HasError() { return } diff --git a/internal/elasticsearch/security/role_mapping/read.go b/internal/elasticsearch/security/role_mapping/read.go index 7731db4c8..2bc415c10 100644 --- a/internal/elasticsearch/security/role_mapping/read.go +++ b/internal/elasticsearch/security/role_mapping/read.go @@ -7,6 +7,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework/diag" @@ -34,7 +35,7 @@ func readRoleMapping(ctx context.Context, client *clients.ApiClient, roleMapping // Set basic fields compId, compDiags := client.ID(ctx, roleMappingName) - diags.Append(utils.FrameworkDiagsFromSDK(compDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(compDiags)...) if diags.HasError() { return nil, diags } diff --git a/internal/elasticsearch/security/system_user/read.go b/internal/elasticsearch/security/system_user/read.go index 530b9f040..a5d7dc2f0 100644 --- a/internal/elasticsearch/security/system_user/read.go +++ b/internal/elasticsearch/security/system_user/read.go @@ -6,7 +6,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-plugin-log/tflog" @@ -33,7 +33,7 @@ func (r *systemUserResource) Read(ctx context.Context, req resource.ReadRequest, } user, sdkDiags := elasticsearch.GetUser(ctx, client, usernameId) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if resp.Diagnostics.HasError() { return } diff --git a/internal/elasticsearch/security/system_user/update.go b/internal/elasticsearch/security/system_user/update.go index 1537f2f87..5b957342e 100644 --- a/internal/elasticsearch/security/system_user/update.go +++ b/internal/elasticsearch/security/system_user/update.go @@ -6,6 +6,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework/diag" @@ -24,7 +25,7 @@ func (r *systemUserResource) update(ctx context.Context, plan tfsdk.Plan, state usernameId := data.Username.ValueString() id, sdkDiags := r.client.ID(ctx, usernameId) - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if diags.HasError() { return diags } @@ -36,7 +37,7 @@ func (r *systemUserResource) update(ctx context.Context, plan tfsdk.Plan, state } user, sdkDiags := elasticsearch.GetUser(ctx, client, usernameId) - diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if diags.HasError() { return diags } diff --git a/internal/fleet/agent_policy/resource.go b/internal/fleet/agent_policy/resource.go index 8854fde9f..cfd8825d4 100644 --- a/internal/fleet/agent_policy/resource.go +++ b/internal/fleet/agent_policy/resource.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/elastic/terraform-provider-elasticstack/internal/clients" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/path" @@ -51,22 +51,22 @@ func (r *agentPolicyResource) ImportState(ctx context.Context, req resource.Impo func (r *agentPolicyResource) buildFeatures(ctx context.Context) (features, diag.Diagnostics) { supportsGDT, diags := r.client.EnforceMinVersion(ctx, MinVersionGlobalDataTags) if diags.HasError() { - return features{}, utils.FrameworkDiagsFromSDK(diags) + return features{}, diagutil.FrameworkDiagsFromSDK(diags) } supportsSupportsAgentless, diags := r.client.EnforceMinVersion(ctx, MinSupportsAgentlessVersion) if diags.HasError() { - return features{}, utils.FrameworkDiagsFromSDK(diags) + return features{}, diagutil.FrameworkDiagsFromSDK(diags) } supportsInactivityTimeout, diags := r.client.EnforceMinVersion(ctx, MinVersionInactivityTimeout) if diags.HasError() { - return features{}, utils.FrameworkDiagsFromSDK(diags) + return features{}, diagutil.FrameworkDiagsFromSDK(diags) } supportsUnenrollmentTimeout, diags := r.client.EnforceMinVersion(ctx, MinVersionUnenrollmentTimeout) if diags.HasError() { - return features{}, utils.FrameworkDiagsFromSDK(diags) + return features{}, diagutil.FrameworkDiagsFromSDK(diags) } return features{ diff --git a/internal/fleet/agent_policy/resource_test.go b/internal/fleet/agent_policy/resource_test.go index 085fa2dd2..b2c191c7a 100644 --- a/internal/fleet/agent_policy/resource_test.go +++ b/internal/fleet/agent_policy/resource_test.go @@ -10,8 +10,8 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/acctest" "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/fleet/agent_policy" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/elastic/terraform-provider-elasticstack/internal/versionutils" "github.com/hashicorp/go-version" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" @@ -522,7 +522,7 @@ func checkResourceAgentPolicyDestroy(s *terraform.State) error { } policy, diags := fleet.GetAgentPolicy(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if policy != nil { return fmt.Errorf("agent policy id=%v still exists, but it should have been removed", rs.Primary.ID) @@ -548,14 +548,14 @@ func checkResourceAgentPolicySkipDestroy(s *terraform.State) error { } policy, diags := fleet.GetAgentPolicy(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if policy == nil { return fmt.Errorf("agent policy id=%v does not exist, but should still exist when skip_destroy is true", rs.Primary.ID) } if diags = fleet.DeleteAgentPolicy(context.Background(), fleetClient, rs.Primary.ID); diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } } return nil diff --git a/internal/fleet/enrollment_tokens/data_source_test.go b/internal/fleet/enrollment_tokens/data_source_test.go index c4c5793a9..cba5698c5 100644 --- a/internal/fleet/enrollment_tokens/data_source_test.go +++ b/internal/fleet/enrollment_tokens/data_source_test.go @@ -8,7 +8,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/acctest" "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/versionutils" "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -70,7 +70,7 @@ func checkResourceAgentPolicyDestroy(s *terraform.State) error { } policy, diags := fleet.GetAgentPolicy(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if policy != nil { return fmt.Errorf("agent policy id=%v still exists, but it should have been removed", rs.Primary.ID) diff --git a/internal/fleet/integration_policy/resource_test.go b/internal/fleet/integration_policy/resource_test.go index 70c9375d3..38d5dd1bb 100644 --- a/internal/fleet/integration_policy/resource_test.go +++ b/internal/fleet/integration_policy/resource_test.go @@ -10,7 +10,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/acctest" "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/versionutils" "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" @@ -193,7 +193,7 @@ func checkResourceIntegrationPolicyDestroy(s *terraform.State) error { case "elasticstack_fleet_agent_policy": policy, diags := fleet.GetAgentPolicy(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if policy != nil { return fmt.Errorf("agent policy id=%v still exists, but it should have been removed", rs.Primary.ID) @@ -201,7 +201,7 @@ func checkResourceIntegrationPolicyDestroy(s *terraform.State) error { case "elasticstack_fleet_integration_policy": policy, diags := fleet.GetPackagePolicy(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if policy != nil { return fmt.Errorf("integration policy id=%v still exists, but it should have been removed", rs.Primary.ID) diff --git a/internal/fleet/output/acc_test.go b/internal/fleet/output/acc_test.go index cd87c6b6d..7971b8e5c 100644 --- a/internal/fleet/output/acc_test.go +++ b/internal/fleet/output/acc_test.go @@ -8,8 +8,8 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/acctest" "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/fleet/output" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/elastic/terraform-provider-elasticstack/internal/versionutils" "github.com/hashicorp/go-version" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" @@ -543,7 +543,7 @@ func checkResourceOutputDestroy(s *terraform.State) error { } output, diags := fleet.GetOutput(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if output != nil { return fmt.Errorf("output id=%v still exists, but it should have been removed", rs.Primary.ID) diff --git a/internal/fleet/output/models.go b/internal/fleet/output/models.go index 3c1847368..493ff97c9 100644 --- a/internal/fleet/output/models.go +++ b/internal/fleet/output/models.go @@ -6,7 +6,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" "github.com/elastic/terraform-provider-elasticstack/internal/clients" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/types" ) @@ -100,7 +100,7 @@ func assertKafkaSupport(ctx context.Context, client *clients.ApiClient) diag.Dia // Check minimum version requirement for Kafka output type if supported, versionDiags := client.EnforceMinVersion(ctx, MinVersionOutputKafka); versionDiags.HasError() { - diags.Append(utils.FrameworkDiagsFromSDK(versionDiags)...) + diags.Append(diagutil.FrameworkDiagsFromSDK(versionDiags)...) return diags } else if !supported { diags.AddError("Unsupported version for Kafka output", diff --git a/internal/fleet/server_host/resource_test.go b/internal/fleet/server_host/resource_test.go index 6c372e7dd..99248389d 100644 --- a/internal/fleet/server_host/resource_test.go +++ b/internal/fleet/server_host/resource_test.go @@ -8,7 +8,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/acctest" "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/versionutils" "github.com/hashicorp/go-version" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" @@ -149,7 +149,7 @@ func checkResourceFleetServerHostDestroy(s *terraform.State) error { } host, diags := fleet.GetFleetServerHost(context.Background(), fleetClient, rs.Primary.ID) if diags.HasError() { - return utils.FwDiagsAsError(diags) + return diagutil.FwDiagsAsError(diags) } if host != nil { return fmt.Errorf("fleet server host id=%v still exists, but it should have been removed", rs.Primary.ID) diff --git a/internal/kibana/connectors/create.go b/internal/kibana/connectors/create.go index 143bb9fb5..10e116d3e 100644 --- a/internal/kibana/connectors/create.go +++ b/internal/kibana/connectors/create.go @@ -5,7 +5,7 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/elastic/terraform-provider-elasticstack/internal/clients/kibana_oapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/types" ) @@ -37,7 +37,7 @@ func (r *Resource) Create(ctx context.Context, request resource.CreateRequest, r } version, sdkDiags := client.ServerVersion(ctx) - response.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + response.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if response.Diagnostics.HasError() { return } diff --git a/internal/kibana/connectors/models.go b/internal/kibana/connectors/models.go index 7adf834d7..2a9c1e3b0 100644 --- a/internal/kibana/connectors/models.go +++ b/internal/kibana/connectors/models.go @@ -2,6 +2,7 @@ package connectors import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/elastic/terraform-provider-elasticstack/internal/models" "github.com/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" @@ -26,7 +27,7 @@ type tfModel struct { func (model tfModel) GetID() (*clients.CompositeId, diag.Diagnostics) { compId, sdkDiags := clients.CompositeIdFromStr(model.ID.ValueString()) if sdkDiags.HasError() { - return nil, utils.FrameworkDiagsFromSDK(sdkDiags) + return nil, diagutil.FrameworkDiagsFromSDK(sdkDiags) } return compId, nil diff --git a/internal/kibana/maintenance_window/create.go b/internal/kibana/maintenance_window/create.go index a38a14a3c..b1425f11e 100644 --- a/internal/kibana/maintenance_window/create.go +++ b/internal/kibana/maintenance_window/create.go @@ -4,7 +4,7 @@ import ( "context" "github.com/elastic/terraform-provider-elasticstack/internal/clients/kibana_oapi" - "github.com/elastic/terraform-provider-elasticstack/internal/utils" + "github.com/elastic/terraform-provider-elasticstack/internal/diagutil" "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/types" @@ -29,7 +29,7 @@ func (r *MaintenanceWindowResource) Create(ctx context.Context, req resource.Cre } isSupported, sdkDiags := r.client.EnforceMinVersion(ctx, version.Must(version.NewVersion("9.1.0"))) - resp.Diagnostics.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) + resp.Diagnostics.Append(diagutil.FrameworkDiagsFromSDK(sdkDiags)...) if resp.Diagnostics.HasError() { return } diff --git a/internal/utils/tfsdk.go b/internal/utils/tfsdk.go index eb594da44..b88a03207 100644 --- a/internal/utils/tfsdk.go +++ b/internal/utils/tfsdk.go @@ -63,7 +63,7 @@ func elementsAs[T any](ctx context.Context, value Elementable, p path.Path, diag } d := value.ElementsAs(ctx, &result, false) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return result } @@ -93,7 +93,7 @@ func NormalizedTypeToMap[T any](value jsontypes.Normalized, p path.Path, diags * var dest map[string]T d := value.Unmarshal(&dest) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return dest } @@ -106,7 +106,7 @@ func MapToMapType[T1 any, T2 any](ctx context.Context, value map[string]T1, elem elems := TransformMap(ctx, value, p, diags, iteratee) mapping, d := types.MapValueFrom(ctx, elemType, elems) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return mapping } @@ -134,7 +134,7 @@ func MapTypeAs[T any](ctx context.Context, value types.Map, p path.Path, diags * // MapValueFrom converts a tfsdk aware map[string]T to a types.Map. func MapValueFrom[T any](ctx context.Context, value map[string]T, elemType attr.Type, p path.Path, diags *diag.Diagnostics) types.Map { mapping, d := types.MapValueFrom(ctx, elemType, value) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return mapping } @@ -151,7 +151,7 @@ func SliceToListType[T1 any, T2 any](ctx context.Context, value []T1, elemType a elems := TransformSlice(ctx, value, p, diags, iteratee) list, nd := types.ListValueFrom(ctx, elemType, elems) - diags.Append(ConvertToAttrDiags(nd, p)...) + diags.Append(convertToAttrDiags(nd, p)...) return list } @@ -206,7 +206,7 @@ func ListTypeAs[T any](ctx context.Context, value types.List, p path.Path, diags // ListValueFrom converts a tfsdk aware []T to a types.List. func ListValueFrom[T any](ctx context.Context, value []T, elemType attr.Type, p path.Path, diags *diag.Diagnostics) types.List { list, d := types.ListValueFrom(ctx, elemType, value) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return list } @@ -221,7 +221,7 @@ func SetTypeAs[T any](ctx context.Context, value types.Set, p path.Path, diags * func SetValueFrom[T any](ctx context.Context, value []T, elemType attr.Type, p path.Path, diags *diag.Diagnostics) types.Set { list, d := types.SetValueFrom(ctx, elemType, value) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return list } @@ -237,7 +237,7 @@ func StructToObjectType[T1 any, T2 any](ctx context.Context, value *T1, attrType item := TransformObject(ctx, value, p, diags, transformee) obj, d := types.ObjectValueFrom(ctx, attrTypes, item) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return obj } @@ -265,14 +265,14 @@ func ObjectTypeAs[T any](ctx context.Context, value types.Object, p path.Path, d var item T d := value.As(ctx, &item, basetypes.ObjectAsOptions{}) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return &item } // ObjectValueFrom converts a tfsdk aware T to a types.Object. func ObjectValueFrom[T any](ctx context.Context, value *T, attrTypes map[string]attr.Type, p path.Path, diags *diag.Diagnostics) types.Object { obj, d := types.ObjectValueFrom(ctx, attrTypes, value) - diags.Append(ConvertToAttrDiags(d, p)...) + diags.Append(convertToAttrDiags(d, p)...) return obj } @@ -347,3 +347,18 @@ func TransformMapToSlice[T1 any, T2 any](ctx context.Context, value map[string]T return elems } + +// convertToAttrDiags wraps an existing collection of diagnostics with an attribute path. +func convertToAttrDiags(diags diag.Diagnostics, path path.Path) diag.Diagnostics { + var nd diag.Diagnostics + for _, d := range diags { + if d.Severity() == diag.SeverityError { + nd.AddAttributeError(path, d.Summary(), d.Detail()) + } else if d.Severity() == diag.SeverityWarning { + nd.AddAttributeWarning(path, d.Summary(), d.Detail()) + } else { + nd.Append(d) + } + } + return nd +} diff --git a/internal/utils/utils.go b/internal/utils/utils.go index ae74c3358..497db2836 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -10,10 +10,7 @@ import ( "time" providerSchema "github.com/elastic/terraform-provider-elasticstack/internal/schema" - fwdiag "github.com/hashicorp/terraform-plugin-framework/diag" - "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-log/tflog" - sdkdiag "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -207,39 +204,6 @@ func FlipMap[K comparable, V comparable](m map[K]V) map[V]K { return inv } -func SdkDiagsAsError(diags sdkdiag.Diagnostics) error { - for _, diag := range diags { - if diag.Severity == sdkdiag.Error { - return fmt.Errorf("%s: %s", diag.Summary, diag.Detail) - } - } - return nil -} - -func FwDiagsAsError(diags fwdiag.Diagnostics) error { - for _, diag := range diags { - if diag.Severity() == fwdiag.SeverityError { - return fmt.Errorf("%s: %s", diag.Summary(), diag.Detail()) - } - } - return nil -} - -// ConvertToAttrDiags wraps an existing collection of diagnostics with an attribute path. -func ConvertToAttrDiags(diags fwdiag.Diagnostics, path path.Path) fwdiag.Diagnostics { - var nd fwdiag.Diagnostics - for _, d := range diags { - if d.Severity() == fwdiag.SeverityError { - nd.AddAttributeError(path, d.Summary(), d.Detail()) - } else if d.Severity() == fwdiag.SeverityWarning { - nd.AddAttributeWarning(path, d.Summary(), d.Detail()) - } else { - nd.Append(d) - } - } - return nd -} - func DefaultIfNil[T any](value *T) T { var result T