Skip to content

Commit dd23445

Browse files
authored
fix(terraform): delete config resources by updating them with an empty object (#507)
1 parent f55cc80 commit dd23445

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

assets/terraform/internal/manager/config.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
sdkerrors "github.com/PaloAltoNetworks/pango/errors"
1010
"github.com/PaloAltoNetworks/pango/util"
1111
"github.com/PaloAltoNetworks/pango/version"
12-
"github.com/PaloAltoNetworks/pango/xmlapi"
1312
)
1413

1514
type TFConfigObject[E any] interface {
@@ -86,22 +85,14 @@ func (o *ConfigObjectManager[C, L, S]) Read(ctx context.Context, location L, com
8685
}
8786

8887
func (o *ConfigObjectManager[C, L, S]) Delete(ctx context.Context, location L, config C) error {
89-
deletes := xmlapi.NewChunkedMultiConfig(1, 1)
90-
9188
xpath, err := location.XpathWithComponents(o.client.Versioning())
9289
if err != nil {
9390
return err
9491
}
9592

96-
deletes.Add(&xmlapi.Config{
97-
Action: "delete",
98-
Xpath: util.AsXpath(xpath),
99-
Target: o.client.GetTarget(),
100-
})
101-
102-
_, _, _, err = o.client.MultiConfig(ctx, deletes, false, nil)
93+
err = o.service.UpdateWithXpath(ctx, util.AsXpath(xpath), config)
10394
if err != nil {
104-
return &Error{err: err, message: "sdk error while deleting"}
95+
return err
10596
}
10697

10798
return nil

pkg/translate/terraform_provider/template.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1635,20 +1635,23 @@ const resourceDeleteFunction = `
16351635
return
16361636
}
16371637
{{- else }}
1638+
components, err := state.resourceXpathParentComponents()
1639+
if err != nil {
1640+
resp.Diagnostics.AddError("Error creating resource xpath", err.Error())
1641+
return
1642+
}
16381643
1639-
{{- $ev := "nil" }}
1640-
{{- if .HasEncryptedResources }}
1641-
{{- $ev = "&ev" }}
1642-
ev := make(map[string]types.String)
1643-
{{- end }}
1644-
var obj *{{ $resourceSDKStructName }}
1645-
resp.Diagnostics.Append(state.CopyToPango(ctx, &obj, {{ $ev }})...)
1646-
if resp.Diagnostics.HasError() {
1644+
existing, err := r.manager.Read(ctx, location, components)
1645+
if err != nil {
1646+
resp.Diagnostics.AddError("Error while deleting resource", err.Error())
16471647
return
16481648
}
16491649
1650-
err := r.manager.Delete(ctx, location, obj)
1651-
if err != nil && errors.Is(err, sdkmanager.ErrObjectNotFound) {
1650+
var obj {{ $resourceSDKStructName }}
1651+
obj.Misc = existing.Misc
1652+
1653+
err = r.manager.Delete(ctx, location, &obj)
1654+
if err != nil && !errors.Is(err, sdkmanager.ErrObjectNotFound) {
16521655
resp.Diagnostics.AddError("Error in delete", err.Error())
16531656
return
16541657
}

0 commit comments

Comments
 (0)