Skip to content

Commit bcda89f

Browse files
committed
Fix deletion of VPC
1 parent 0ad69e1 commit bcda89f

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

pkg/cloud/isolated_network.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -361,14 +361,18 @@ func (c *client) DisposeIsoNetResources(
361361
if err := c.RemoveClusterTagFromNetwork(csCluster, *isoNet.Network()); err != nil {
362362
return err
363363
}
364-
if err := c.RemoveClusterTagFromVPC(csCluster, isoNet.Spec.VPC); err != nil {
364+
if err := c.DeleteNetworkIfNotInUse(*isoNet.Network()); err != nil && !strings.Contains(strings.ToLower(err.Error()), "no match found") {
365365
return err
366366
}
367-
if err := c.DeleteNetworkIfNotInUse(*isoNet.Network()); err != nil {
368-
return err
367+
if isoNet.Spec.VPC != nil && isoNet.Spec.VPC.ID != "" {
368+
if err := c.RemoveClusterTagFromVPC(csCluster, *isoNet.Spec.VPC); err != nil {
369+
return err
370+
}
371+
if err := c.DeleteVPCIfNotInUse(*isoNet.Spec.VPC); err != nil && !strings.Contains(strings.ToLower(err.Error()), "no match found") {
372+
return err
373+
}
369374
}
370-
err := c.DeleteVPCIfNotInUse(isoNet.Spec.VPC)
371-
return err
375+
return nil
372376
}
373377

374378
// DeleteNetworkIfNotInUse deletes an isolated network if the network is no longer in use (indicated by in use tags).

pkg/cloud/vpc.go

+6-10
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ const (
3535
type VPCIface interface {
3636
ResolveVPC(*infrav1.VPC) error
3737
CreateVPC(*infrav1.CloudStackFailureDomain, *infrav1.VPC) error
38-
RemoveClusterTagFromVPC(*infrav1.CloudStackCluster, *infrav1.VPC) error
38+
RemoveClusterTagFromVPC(*infrav1.CloudStackCluster, infrav1.VPC) error
39+
DeleteVPCIfNotInUse(infrav1.VPC) (retError error)
3940
}
4041

4142
// getVPCOfferingID fetches a vpc offering id.
@@ -99,6 +100,7 @@ func (c *client) CreateVPC(fd *infrav1.CloudStackFailureDomain, vpc *infrav1.VPC
99100

100101
p := c.cs.VPC.NewCreateVPCParams(vpc.CIDR, vpc.Name, vpc.Name, offeringID, fd.Spec.Zone.ID)
101102
setIfNotEmpty(c.user.Project.ID, p.SetProjectid)
103+
p.SetStart(true)
102104
resp, err := c.cs.VPC.CreateVPC(p)
103105
if err != nil {
104106
c.customMetrics.EvaluateErrorAndIncrementAcsReconciliationErrorCounter(err)
@@ -109,17 +111,14 @@ func (c *client) CreateVPC(fd *infrav1.CloudStackFailureDomain, vpc *infrav1.VPC
109111
}
110112

111113
// DeleteVPC deletes a VPC.
112-
func (c *client) DeleteVPC(vpc *infrav1.VPC) error {
114+
func (c *client) DeleteVPC(vpc infrav1.VPC) error {
113115
_, err := c.cs.VPC.DeleteVPC(c.cs.VPC.NewDeleteVPCParams(vpc.ID))
114116
c.customMetrics.EvaluateErrorAndIncrementAcsReconciliationErrorCounter(err)
115117
return errors.Wrapf(err, "deleting vpc with id %s", vpc.ID)
116118
}
117119

118120
// DeleteVPCIfNotInUse deletes a VPC if the VPC is no longer in use (indicated by in use tags).
119-
func (c *client) DeleteVPCIfNotInUse(vpc *infrav1.VPC) (retError error) {
120-
if vpc == nil || vpc.ID == "" {
121-
return nil
122-
}
121+
func (c *client) DeleteVPCIfNotInUse(vpc infrav1.VPC) (retError error) {
123122
tags, err := c.GetTags(ResourceTypeVPC, vpc.ID)
124123
if err != nil {
125124
return err
@@ -144,10 +143,7 @@ func generateVPCTagName(csCluster *infrav1.CloudStackCluster) string {
144143
}
145144

146145
// RemoveClusterTagFromVPC removes the cluster in use tag from a VPC.
147-
func (c *client) RemoveClusterTagFromVPC(csCluster *infrav1.CloudStackCluster, vpc *infrav1.VPC) (retError error) {
148-
if vpc == nil || vpc.ID == "" {
149-
return nil
150-
}
146+
func (c *client) RemoveClusterTagFromVPC(csCluster *infrav1.CloudStackCluster, vpc infrav1.VPC) (retError error) {
151147
tags, err := c.GetTags(ResourceTypeVPC, vpc.ID)
152148
if err != nil {
153149
return err

0 commit comments

Comments
 (0)