mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-05-06 21:52:54 +08:00
fix(region): lb listener rule associate backend group (#22735)
This commit is contained in:
@@ -758,127 +758,21 @@ func (lbr *SLoadbalancerListenerRule) constructFieldsFromCloudListenerRule(userC
|
||||
lbr.RedirectPath = extRule.GetRedirectPath()
|
||||
}
|
||||
|
||||
/*
|
||||
if groupId := extRule.GetBackendGroupId(); len(groupId) > 0 {
|
||||
if utils.IsInStringArray(lbr.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HCSO, api.CLOUD_PROVIDER_HCS}) {
|
||||
group, err := db.FetchByExternalId(HuaweiCachedLbbgManager, groupId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
lbr.BackendGroupId = ""
|
||||
}
|
||||
log.Errorf("Fetch huawei loadbalancer backendgroup by external id %s failed: %s", groupId, err)
|
||||
} else {
|
||||
lbr.BackendGroupId = group.(*SHuaweiCachedLbbg).BackendGroupId
|
||||
}
|
||||
|
||||
} else if lbr.GetProviderName() == api.CLOUD_PROVIDER_AWS {
|
||||
if len(groupId) > 0 {
|
||||
group, err := db.FetchByExternalId(AwsCachedLbbgManager, groupId)
|
||||
if err != nil {
|
||||
log.Errorf("Fetch aws loadbalancer backendgroup by external id %s failed: %s", groupId, err)
|
||||
} else {
|
||||
lbr.BackendGroupId = group.(*SAwsCachedLbbg).BackendGroupId
|
||||
}
|
||||
|
||||
}
|
||||
} else if lbr.GetProviderName() == api.CLOUD_PROVIDER_QCLOUD {
|
||||
group, err := db.FetchByExternalId(QcloudCachedLbbgManager, groupId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
lbr.BackendGroupId = ""
|
||||
}
|
||||
log.Errorf("Fetch qcloud loadbalancer backendgroup by external id %s failed: %s", groupId, err)
|
||||
} else {
|
||||
lbr.BackendGroupId = group.(*SQcloudCachedLbbg).BackendGroupId
|
||||
}
|
||||
|
||||
} else if backendgroup, err := db.FetchByExternalId(LoadbalancerBackendGroupManager, groupId); err == nil {
|
||||
lbr.BackendGroupId = backendgroup.GetId()
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
func (lbr *SLoadbalancerListenerRule) updateCachedLoadbalancerBackendGroupAssociate(ctx context.Context, extRule cloudprovider.ICloudLoadbalancerListenerRule) error {
|
||||
exteralLbbgId := extRule.GetBackendGroupId()
|
||||
if len(exteralLbbgId) == 0 {
|
||||
return nil
|
||||
lis, err := lbr.GetLoadbalancerListener()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
switch lbr.GetProviderName() {
|
||||
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HCSO, api.CLOUD_PROVIDER_HCS:
|
||||
_group, err := db.FetchByExternalId(HuaweiCachedLbbgManager, exteralLbbgId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
lbr.BackendGroupId = ""
|
||||
}
|
||||
return fmt.Errorf("Fetch huawei loadbalancer backendgroup by external id %s failed: %s", exteralLbbgId, err)
|
||||
}
|
||||
|
||||
if _group != nil {
|
||||
group := _group.(*SHuaweiCachedLbbg)
|
||||
if group.AssociatedId != lbr.Id {
|
||||
_, err := db.UpdateWithLock(ctx, group, func() error {
|
||||
group.AssociatedId = lbr.Id
|
||||
group.AssociatedType = api.LB_ASSOCIATE_TYPE_RULE
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "LoadbalancerListener.updateCachedLoadbalancerBackendGroupAssociate.huawei")
|
||||
}
|
||||
}
|
||||
}
|
||||
case api.CLOUD_PROVIDER_QCLOUD:
|
||||
_group, err := db.FetchByExternalId(QcloudCachedLbbgManager, exteralLbbgId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
lbr.BackendGroupId = ""
|
||||
}
|
||||
return fmt.Errorf("Fetch qcloud loadbalancer backendgroup by external id %s failed: %s", exteralLbbgId, err)
|
||||
}
|
||||
|
||||
if _group != nil {
|
||||
group := _group.(*SQcloudCachedLbbg)
|
||||
if group.AssociatedId != lbr.Id {
|
||||
_, err := db.UpdateWithLock(ctx, group, func() error {
|
||||
group.AssociatedId = lbr.Id
|
||||
group.AssociatedType = api.LB_ASSOCIATE_TYPE_RULE
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "LoadbalancerListener.updateCachedLoadbalancerBackendGroupAssociate.qcloud")
|
||||
}
|
||||
}
|
||||
}
|
||||
case api.CLOUD_PROVIDER_OPENSTACK:
|
||||
_group, err := db.FetchByExternalId(OpenstackCachedLbbgManager, exteralLbbgId)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
lbr.BackendGroupId = ""
|
||||
}
|
||||
return fmt.Errorf("Fetch openstack loadbalancer backendgroup by external id %s failed: %s", exteralLbbgId, err)
|
||||
}
|
||||
|
||||
if _group != nil {
|
||||
group := _group.(*SOpenstackCachedLbbg)
|
||||
if group.AssociatedId != lbr.Id {
|
||||
_, err := db.UpdateWithLock(ctx, group, func() error {
|
||||
group.AssociatedId = lbr.Id
|
||||
group.AssociatedType = api.LB_ASSOCIATE_TYPE_RULE
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "LoadbalancerListener.updateCachedLoadbalancerBackendGroupAssociate.openstack")
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
return nil
|
||||
if groupId := extRule.GetBackendGroupId(); len(groupId) > 0 {
|
||||
group, err := db.FetchByExternalIdAndManagerId(LoadbalancerBackendGroupManager, groupId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
return q.Equals("loadbalancer_id", lis.LoadbalancerId)
|
||||
})
|
||||
if err != nil {
|
||||
log.Errorf("Fetch loadbalancer backendgroup by external id %s failed: %s", groupId, err)
|
||||
} else {
|
||||
lbr.BackendGroupId = group.GetId()
|
||||
}
|
||||
*/
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (man *SLoadbalancerListenerRuleManager) newFromCloudLoadbalancerListenerRule(
|
||||
@@ -894,8 +788,6 @@ func (man *SLoadbalancerListenerRuleManager) newFromCloudLoadbalancerListenerRul
|
||||
|
||||
lbr.ExternalId = extRule.GetGlobalId()
|
||||
lbr.ListenerId = listener.Id
|
||||
//lbr.ManagerId = listener.ManagerId
|
||||
//lbr.CloudregionId = listener.CloudregionId
|
||||
|
||||
lbr.constructFieldsFromCloudListenerRule(userCred, extRule)
|
||||
var err = func() error {
|
||||
@@ -914,11 +806,6 @@ func (man *SLoadbalancerListenerRuleManager) newFromCloudLoadbalancerListenerRul
|
||||
return nil, errors.Wrapf(err, "Insert")
|
||||
}
|
||||
|
||||
err = lbr.updateCachedLoadbalancerBackendGroupAssociate(ctx, extRule)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "LoadbalancerListenerRuleManager.newFromCloudLoadbalancerListenerRule")
|
||||
}
|
||||
|
||||
db.OpsLog.LogEvent(lbr, db.ACT_CREATE, lbr.GetShortDesc(ctx), userCred)
|
||||
|
||||
return lbr, nil
|
||||
@@ -943,22 +830,14 @@ func (lbr *SLoadbalancerListenerRule) SyncWithCloudLoadbalancerListenerRule(
|
||||
syncOwnerId mcclient.IIdentityProvider,
|
||||
provider *SCloudprovider,
|
||||
) error {
|
||||
// listener := lbr.GetLoadbalancerListener()
|
||||
diff, err := db.UpdateWithLock(ctx, lbr, func() error {
|
||||
lbr.constructFieldsFromCloudListenerRule(userCred, extRule)
|
||||
// lbr.ManagerId = provider.Id
|
||||
// lbr.CloudregionId = listener.CloudregionId
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = lbr.updateCachedLoadbalancerBackendGroupAssociate(ctx, extRule)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "LoadbalancerListenerRule.SyncWithCloudLoadbalancerListenerRule")
|
||||
}
|
||||
|
||||
db.OpsLog.LogSyncUpdate(lbr, diff, userCred)
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user