fix: lb purge error

This commit is contained in:
ioito
2019-08-08 19:49:02 +08:00
parent 04b2e39ba1
commit f22ab9cc00
2 changed files with 29 additions and 0 deletions
@@ -183,6 +183,16 @@ func (man *SLoadbalancerBackendGroupManager) ValidateCreateData(ctx context.Cont
return region.GetDriver().ValidateCreateLoadbalancerBackendGroupData(ctx, userCred, data, lb, backends)
}
func (lbbg *SLoadbalancerBackendGroup) GetLoadbalancerListenerRules() ([]SLoadbalancerListenerRule, error) {
q := LoadbalancerListenerRuleManager.Query().Equals("backend_group_id", lbbg.Id).IsFalse("pending_deleted")
rules := []SLoadbalancerListenerRule{}
err := db.FetchModelObjects(LoadbalancerListenerRuleManager, q, &rules)
if err != nil {
return nil, err
}
return rules, nil
}
func (lbbg *SLoadbalancerBackendGroup) GetLoadbalancerListeners() ([]SLoadbalancerListener, error) {
q := LoadbalancerListenerManager.Query().Equals("backend_group_id", lbbg.Id).IsFalse("pending_deleted")
listeners := []SLoadbalancerListener{}
+19
View File
@@ -391,6 +391,20 @@ func (lbbg *SLoadbalancerBackendGroup) purgeListeners(ctx context.Context, userC
return nil
}
func (lbbg *SLoadbalancerBackendGroup) purgeListenerrules(ctx context.Context, userCred mcclient.TokenCredential) error {
rules, err := lbbg.GetLoadbalancerListenerRules()
if err != nil {
return err
}
for i := range rules {
err = rules[i].purge(ctx, userCred)
if err != nil {
return err
}
}
return nil
}
func (lbbg *SLoadbalancerBackendGroup) purge(ctx context.Context, userCred mcclient.TokenCredential) error {
lockman.LockObject(ctx, lbbg)
defer lockman.ReleaseObject(ctx, lbbg)
@@ -405,6 +419,11 @@ func (lbbg *SLoadbalancerBackendGroup) purge(ctx context.Context, userCred mccli
return err
}
err = lbbg.purgeListenerrules(ctx, userCred)
if err != nil {
return err
}
err = lbbg.ValidateDeleteCondition(ctx)
if err != nil {
return err