From edb78d518e582fadf3d5ebb604c30e6202a77912 Mon Sep 17 00:00:00 2001 From: Nassim Guelbi <127761370+9albi@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:09:07 +0200 Subject: [PATCH 1/2] added slug to resource definition --- conformity/resource_conformity_custom_rule.go | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/conformity/resource_conformity_custom_rule.go b/conformity/resource_conformity_custom_rule.go index dbb7dc5..884c797 100644 --- a/conformity/resource_conformity_custom_rule.go +++ b/conformity/resource_conformity_custom_rule.go @@ -36,6 +36,10 @@ func resourceConformityCustomRule() *schema.Resource { Type: schema.TypeString, Required: true, }, + "slug": { + Type: schema.TypeString, + Optional: true, + }, "cloud_provider": { Type: schema.TypeString, Required: true, @@ -168,8 +172,7 @@ func resourceConformityCustomRule() *schema.Resource { func resourceConformityCustomRuleCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { client := m.(*cloudconformity.Client) - // Warning or errors can be collected in a slice type - var diags diag.Diagnostics + payload := cloudconformity.CustomRuleRequest{} // Required fields @@ -188,8 +191,11 @@ func resourceConformityCustomRuleCreate(ctx context.Context, d *schema.ResourceD processInputCustomRuleRules(&payload, d) } // Optional fields - if d.Get("remediation_notes") != "" { - payload.RemediationNotes = d.Get("remediation_notes").(string) + if v, ok := d.GetOk("remediation_notes"); ok{ + payload.RemediationNotes = v.(string) + } + if v, ok := d.GetOk("slug"); ok{ + payload.Slug = v.(string) } customRule, err := client.CreateConformityCustomRule(payload) @@ -198,8 +204,7 @@ func resourceConformityCustomRuleCreate(ctx context.Context, d *schema.ResourceD } d.SetId(customRule.ID) - resourceConformityCustomRuleRead(ctx, d, m) - return diags + return resourceConformityCustomRuleRead(ctx, d, m) } func resourceConformityCustomRuleRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { @@ -223,6 +228,9 @@ func resourceConformityCustomRuleRead(ctx context.Context, d *schema.ResourceDat if err := d.Set("name", rule.Attributes.Name); err != nil { return diag.FromErr(err) } + if err := d.Set("slug", rule.Attributes.Slug); err != nil { + return diag.FromErr(err) + } if err := d.Set("cloud_provider", rule.Attributes.Provider); err != nil { return diag.FromErr(err) } @@ -283,8 +291,11 @@ func resourceConformityCustomRuleUpdate(ctx context.Context, d *schema.ResourceD processInputCustomRuleRules(&payload, d) } // Optional fields - if d.Get("remediation_notes") != "" { - payload.RemediationNotes = d.Get("remediation_notes").(string) + if value, exist := d.GetOk("remediation_notes"); exist{ + payload.RemediationNotes = value.(string) + } + if value, exist := d.GetOk("slug"); exist{ + payload.Slug = value.(string) } id := d.Id() _, err := client.UpdateCustomRule(id, payload) From 57cf2f128e855338cdda6815bd2170dca8dc4599 Mon Sep 17 00:00:00 2001 From: Nassim Guelbi <127761370+9albi@users.noreply.github.com> Date: Mon, 22 Jul 2024 18:44:37 +0200 Subject: [PATCH 2/2] added slug to api model --- pkg/cloudconformity/models.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/cloudconformity/models.go b/pkg/cloudconformity/models.go index 5745dce..6f231fa 100644 --- a/pkg/cloudconformity/models.go +++ b/pkg/cloudconformity/models.go @@ -610,6 +610,7 @@ type GcpProjectsResponse struct { type CustomRule struct { ID string `json:"id"` Name string `json:"name"` + Slug string `json:"slug,omitempty"` Description string `json:"description"` RemediationNotes string `json:"remediationNotes,omitempty"` Service string `json:"service"` @@ -624,6 +625,7 @@ type CustomRule struct { type CustomRuleRequest struct { Name string `json:"name"` + Slug string `json:"slug,omitempty"` Description string `json:"description"` RemediationNotes string `json:"remediationNotes,omitempty"` Service string `json:"service"` @@ -674,6 +676,7 @@ type CustomRuleResponse struct { ID string `json:"id"` Attributes struct { Name string `json:"name"` + Slug string `json:"slug,omitempty"` Description string `json:"description"` Service string `json:"service"` ResourceType string `json:"resourceType"`