From 4ab0e1ebbc148a912e0bec2d52006f7ff2ee4e00 Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 25 Apr 2022 14:29:52 +0800 Subject: [PATCH] fix(region): ipv6 gateway purge --- cmd/climc/shell/compute/ipv6_gateways.go | 2 ++ pkg/compute/models/purge.go | 19 +++++++++++++++++++ pkg/mcclient/options/base.go | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cmd/climc/shell/compute/ipv6_gateways.go b/cmd/climc/shell/compute/ipv6_gateways.go index 89e3c47eb6..c02fac5b0e 100644 --- a/cmd/climc/shell/compute/ipv6_gateways.go +++ b/cmd/climc/shell/compute/ipv6_gateways.go @@ -17,10 +17,12 @@ package compute import ( "yunion.io/x/onecloud/cmd/climc/shell" modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute" + "yunion.io/x/onecloud/pkg/mcclient/options" "yunion.io/x/onecloud/pkg/mcclient/options/compute" ) func init() { cmd := shell.NewResourceCmd(&modules.IPv6Gateways) cmd.List(&compute.IPv6GatewayListOptions{}) + cmd.Show(&options.BaseIdOptions{}) } diff --git a/pkg/compute/models/purge.go b/pkg/compute/models/purge.go index ad9d6aea1a..9a132cd665 100644 --- a/pkg/compute/models/purge.go +++ b/pkg/compute/models/purge.go @@ -1125,6 +1125,20 @@ func (vpc *SVpc) purgeWires(ctx context.Context, userCred mcclient.TokenCredenti return nil } +func (self *SVpc) purgeIPv6Gateways(ctx context.Context, userCred mcclient.TokenCredential) error { + gws, err := self.GetIPv6Gateways() + if err != nil { + return errors.Wrapf(err, "GetIPv6Gateways for vpc %s", self.Id) + } + for i := range gws { + err := gws[i].RealDelete(ctx, userCred) + if err != nil { + return err + } + } + return nil +} + func (vpc *SVpc) purgeVpcPeeringConnections(ctx context.Context, userCred mcclient.TokenCredential) error { vpcPCs, err := vpc.GetVpcPeeringConnections() if err != nil { @@ -1148,6 +1162,11 @@ func (vpc *SVpc) Purge(ctx context.Context, userCred mcclient.TokenCredential) e return err } + err = vpc.purgeIPv6Gateways(ctx, userCred) + if err != nil { + return errors.Wrapf(err, "purgeIPv6Gateways") + } + err = vpc.purgeWires(ctx, userCred) if err != nil { return err diff --git a/pkg/mcclient/options/base.go b/pkg/mcclient/options/base.go index cc0c9d622a..61fee2e366 100644 --- a/pkg/mcclient/options/base.go +++ b/pkg/mcclient/options/base.go @@ -238,7 +238,7 @@ type BaseListOptions struct { Manager string `help:"List objects belonging to the cloud provider" json:"manager,omitempty"` Account string `help:"List objects belonging to the cloud account" json:"account,omitempty"` - Provider []string `help:"List objects from the provider" choices:"OneCloud|VMware|Aliyun|Qcloud|Azure|Aws|Huawei|OpenStack|Ucloud|ZStack|Google|Ctyun|Cloudpods|Nutanix|BingoCloud" json:"provider,omitempty"` + Provider []string `help:"List objects from the provider" choices:"OneCloud|VMware|Aliyun|Apsara|Qcloud|Azure|Aws|Huawei|OpenStack|Ucloud|ZStack|Google|Ctyun|Cloudpods|Nutanix|BingoCloud" json:"provider,omitempty"` Brand []string `help:"List objects belonging to a special brand"` CloudEnv string `help:"Cloud environment" choices:"public|private|onpremise|private_or_onpremise" json:"cloud_env,omitempty"` PublicCloud *bool `help:"List objects belonging to public cloud" json:"public_cloud"`