Skip to content

Commit 1d306ae

Browse files
fix bugs
1 parent 6e6bd84 commit 1d306ae

5 files changed

+22
-60
lines changed

datadog/fwprovider/data_source_datadog_csm_threats_multi_policy_agent_rules.go

Lines changed: 15 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -97,41 +97,13 @@ func (r *csmThreatsMultiPolicyAgentRulesDataSource) Read(ctx context.Context, re
9797
agentRuleModel.Description = types.StringValue(attributes.GetDescription())
9898
agentRuleModel.Enabled = types.BoolValue(attributes.GetEnabled())
9999
agentRuleModel.Expression = types.StringValue(*attributes.Expression)
100-
101-
// Handle product tags if they exist
102-
if attributes.ProductTags != nil && len(attributes.GetProductTags()) > 0 {
103-
// Remove duplicates from product tags
104-
uniqueTags := make(map[string]struct{})
105-
for _, tag := range attributes.GetProductTags() {
106-
uniqueTags[tag] = struct{}{}
107-
}
108-
uniqueTagsSlice := make([]string, 0, len(uniqueTags))
109-
for tag := range uniqueTags {
110-
uniqueTagsSlice = append(uniqueTagsSlice, tag)
111-
}
112-
113-
productTags, diags := types.SetValueFrom(ctx, types.StringType, uniqueTagsSlice)
114-
if diags.HasError() {
115-
response.Diagnostics.Append(diags...)
116-
continue
117-
}
118-
agentRuleModel.ProductTags = productTags
119-
} else {
120-
// Create an empty set if no product tags
121-
emptySet, diags := types.SetValueFrom(ctx, types.StringType, []string{})
122-
if diags.HasError() {
123-
response.Diagnostics.Append(diags...)
124-
continue
125-
}
126-
agentRuleModel.ProductTags = emptySet
127-
}
128-
100+
agentRuleModel.ProductTags, _ = types.SetValueFrom(ctx, types.StringType, attributes.GetProductTags())
129101
agentRuleIds[idx] = agentRule.GetId()
130102
agentRules[idx] = agentRuleModel
131103
}
132104

133105
stateId := strings.Join(agentRuleIds, "--")
134-
state.Id = types.StringValue(computeDataSourceID(&stateId))
106+
state.Id = types.StringValue(computeMultiPolicyAgentRulesID(&stateId))
135107
tfAgentRuleIds, diags := types.ListValueFrom(ctx, types.StringType, agentRuleIds)
136108
response.Diagnostics.Append(diags...)
137109
state.AgentRulesIds = tfAgentRuleIds
@@ -140,6 +112,19 @@ func (r *csmThreatsMultiPolicyAgentRulesDataSource) Read(ctx context.Context, re
140112
response.Diagnostics.Append(response.State.Set(ctx, &state)...)
141113
}
142114

115+
func computeMultiPolicyAgentRulesID(ids *string) string {
116+
// Key for hashing
117+
var b strings.Builder
118+
if ids != nil {
119+
b.WriteString(*ids)
120+
}
121+
keyStr := b.String()
122+
h := sha256.New()
123+
h.Write([]byte(keyStr))
124+
125+
return fmt.Sprintf("%x", h.Sum(nil))
126+
}
127+
143128
func (*csmThreatsMultiPolicyAgentRulesDataSource) Schema(_ context.Context, _ datasource.SchemaRequest, response *datasource.SchemaResponse) {
144129
response.Schema = schema.Schema{
145130
Description: "Use this data source to retrieve information about existing Agent rules.",
@@ -173,16 +158,3 @@ func (*csmThreatsMultiPolicyAgentRulesDataSource) Schema(_ context.Context, _ da
173158
},
174159
}
175160
}
176-
177-
func computeDataSourceID(ids *string) string {
178-
// Key for hashing
179-
var b strings.Builder
180-
if ids != nil {
181-
b.WriteString(*ids)
182-
}
183-
keyStr := b.String()
184-
h := sha256.New()
185-
h.Write([]byte(keyStr))
186-
187-
return fmt.Sprintf("%x", h.Sum(nil))
188-
}

datadog/fwprovider/data_source_datadog_csm_threats_policy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (r *csmThreatsPoliciesDataSource) Read(ctx context.Context, request datasou
7272
}
7373

7474
stateId := strings.Join(policyIds, "--")
75-
state.Id = types.StringValue(computeDataSourceID(&stateId))
75+
state.Id = types.StringValue(computeMultiPolicyAgentRulesID(&stateId))
7676
tfAgentRuleIds, diags := types.ListValueFrom(ctx, types.StringType, policyIds)
7777
response.Diagnostics.Append(diags...)
7878
state.PolicyIds = tfAgentRuleIds

datadog/fwprovider/resource_datadog_csm_threats_multi_policies.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package fwprovider
33
import (
44
"context"
55
"fmt"
6+
"sync"
67

78
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
89
"github.com/hashicorp/terraform-plugin-framework/diag"
@@ -15,8 +16,9 @@ import (
1516
)
1617

1718
var (
18-
_ resource.ResourceWithConfigure = &csmThreatsPoliciesListResource{}
19-
_ resource.ResourceWithImportState = &csmThreatsPoliciesListResource{}
19+
csmThreatsMutex sync.Mutex
20+
_ resource.ResourceWithConfigure = &csmThreatsPoliciesListResource{}
21+
_ resource.ResourceWithImportState = &csmThreatsPoliciesListResource{}
2022
)
2123

2224
type csmThreatsPoliciesListResource struct {

datadog/fwprovider/resource_datadog_csm_threats_multi_policy_agent_rule.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package fwprovider
33
import (
44
"context"
55
"strings"
6-
"sync"
76

87
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
98
"github.com/hashicorp/terraform-plugin-framework/path"
@@ -17,9 +16,8 @@ import (
1716
)
1817

1918
var (
20-
csmThreatsMutex sync.Mutex
21-
_ resource.ResourceWithConfigure = &csmThreatsMultiPolicyAgentRuleResource{}
22-
_ resource.ResourceWithImportState = &csmThreatsMultiPolicyAgentRuleResource{}
19+
_ resource.ResourceWithConfigure = &csmThreatsMultiPolicyAgentRuleResource{}
20+
_ resource.ResourceWithImportState = &csmThreatsMultiPolicyAgentRuleResource{}
2321
)
2422

2523
type csmThreatsMultiPolicyAgentRuleResource struct {
@@ -110,9 +108,6 @@ func (r *csmThreatsMultiPolicyAgentRuleResource) Create(ctx context.Context, req
110108
return
111109
}
112110

113-
csmThreatsMutex.Lock()
114-
defer csmThreatsMutex.Unlock()
115-
116111
agentRulePayload, err := r.buildCreateCSMThreatsAgentRulePayload(&state)
117112
if err != nil {
118113
response.Diagnostics.AddError("error while parsing resource", err.Error())
@@ -166,9 +161,6 @@ func (r *csmThreatsMultiPolicyAgentRuleResource) Update(ctx context.Context, req
166161
return
167162
}
168163

169-
csmThreatsMutex.Lock()
170-
defer csmThreatsMutex.Unlock()
171-
172164
agentRulePayload, err := r.buildUpdateCSMThreatsAgentRulePayload(&state)
173165
if err != nil {
174166
response.Diagnostics.AddError("error while parsing resource", err.Error())
@@ -195,9 +187,6 @@ func (r *csmThreatsMultiPolicyAgentRuleResource) Delete(ctx context.Context, req
195187
return
196188
}
197189

198-
csmThreatsMutex.Lock()
199-
defer csmThreatsMutex.Unlock()
200-
201190
id := state.Id.ValueString()
202191
policyId := state.PolicyId.ValueString()
203192
httpResp, err := r.api.DeleteCSMThreatsAgentRule(r.auth, id, *datadogV2.NewDeleteCSMThreatsAgentRuleOptionalParameters().WithPolicyId(policyId))

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,3 @@ require (
102102
)
103103

104104
go 1.23.0
105-
replace github.com/DataDog/datadog-api-client-go/v2 v2.35.0 => ../datadog-api-spec/generated/datadog-api-client-go

0 commit comments

Comments
 (0)