From 71b0c07bc22ca2200beb36be7a8a2c1ac6b94eea Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 28 Jun 2021 16:37:50 +0800 Subject: [PATCH] fix(region): waf purge with account delete --- pkg/compute/models/cloudproviders.go | 4 ++ pkg/compute/models/purge.go | 60 ++++++++++++++++++++++++++++ pkg/compute/service/handlers.go | 1 + 3 files changed, 65 insertions(+) diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index 1af88d9048..b8af6ac454 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -1476,6 +1476,10 @@ func (self *SCloudprovider) RealDelete(ctx context.Context, userCred mcclient.To ElasticcacheManager, AccessGroupCacheManager, FileSystemManager, + WafRuleGroupCacheManager, + WafIPSetCacheManager, + WafRegexSetCacheManager, + WafInstanceManager, VpcManager, ElasticipManager, NetworkInterfaceManager, diff --git a/pkg/compute/models/purge.go b/pkg/compute/models/purge.go index 23e43ea699..d82b7d96ef 100644 --- a/pkg/compute/models/purge.go +++ b/pkg/compute/models/purge.go @@ -1924,3 +1924,63 @@ func (vpcPC *SVpcPeeringConnection) purge(ctx context.Context, userCred mcclient defer lockman.ReleaseObject(ctx, vpcPC) return vpcPC.RealDelete(ctx, userCred) } + +func (manager *SWafRuleGroupCacheManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error { + caches := []SWafRuleGroupCache{} + err := fetchByManagerId(manager, providerId, &caches) + if err != nil { + return errors.Wrapf(err, "fetchByManagerId") + } + for i := range caches { + err := caches[i].RealDelete(ctx, userCred) + if err != nil { + return errors.Wrapf(err, "cache delete") + } + } + return nil +} + +func (manager *SWafIPSetCacheManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error { + caches := []SWafIPSetCache{} + err := fetchByManagerId(manager, providerId, &caches) + if err != nil { + return errors.Wrapf(err, "fetchByManagerId") + } + for i := range caches { + err := caches[i].RealDelete(ctx, userCred) + if err != nil { + return errors.Wrapf(err, "cache delete") + } + } + return nil +} + +func (manager *SWafRegexSetCacheManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error { + caches := []SWafRegexSetCache{} + err := fetchByManagerId(manager, providerId, &caches) + if err != nil { + return errors.Wrapf(err, "fetchByManagerId") + } + for i := range caches { + err := caches[i].RealDelete(ctx, userCred) + if err != nil { + return errors.Wrapf(err, "cache delete") + } + } + return nil +} + +func (manager *SWafInstanceManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error { + ins := []SWafInstance{} + err := fetchByManagerId(manager, providerId, &ins) + if err != nil { + return errors.Wrapf(err, "fetchByManagerId") + } + for i := range ins { + err := ins[i].RealDelete(ctx, userCred) + if err != nil { + return errors.Wrapf(err, "cache delete") + } + } + return nil +} diff --git a/pkg/compute/service/handlers.go b/pkg/compute/service/handlers.go index 0fcd2b87c7..ed56be68af 100644 --- a/pkg/compute/service/handlers.go +++ b/pkg/compute/service/handlers.go @@ -219,6 +219,7 @@ func InitHandlers(app *appsrv.Application) { models.ProjectMappingManager, models.WafRuleGroupManager, + models.WafRuleGroupCacheManager, models.WafIPSetManager, models.WafIPSetCacheManager, models.WafRegexSetManager,