mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
sync classic redis fix
This commit is contained in:
@@ -566,7 +566,6 @@ func (manager *SElasticcacheManager) newFromCloudElasticcache(ctx context.Contex
|
||||
instance.Engine = extInstance.GetEngine()
|
||||
instance.EngineVersion = extInstance.GetEngineVersion()
|
||||
|
||||
instance.NetworkType = extInstance.GetNetworkType()
|
||||
instance.PrivateDNS = extInstance.GetPrivateDNS()
|
||||
instance.PrivateIpAddr = extInstance.GetPrivateIpAddr()
|
||||
instance.PrivateConnectPort = extInstance.GetPrivateConnectPort()
|
||||
@@ -577,36 +576,57 @@ func (manager *SElasticcacheManager) newFromCloudElasticcache(ctx context.Contex
|
||||
instance.MaintainEndTime = extInstance.GetMaintainEndTime()
|
||||
instance.AuthMode = extInstance.GetAuthMode()
|
||||
|
||||
var zone *SZone
|
||||
if zoneId := extInstance.GetZoneId(); len(zoneId) > 0 {
|
||||
zone, err := db.FetchByExternalId(ZoneManager, zoneId)
|
||||
_zone, err := db.FetchByExternalId(ZoneManager, zoneId)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "newFromCloudElasticcache.FetchZoneId")
|
||||
}
|
||||
instance.ZoneId = zone.GetId()
|
||||
instance.ZoneId = _zone.GetId()
|
||||
zone = _zone.(*SZone)
|
||||
}
|
||||
|
||||
if vpcId := extInstance.GetVpcId(); len(vpcId) > 0 {
|
||||
vpc, err := db.FetchByExternalIdAndManagerId(VpcManager, vpcId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
return q.Equals("manager_id", provider.Id)
|
||||
})
|
||||
instance.NetworkType = extInstance.GetNetworkType()
|
||||
if instance.NetworkType == api.LB_NETWORK_TYPE_CLASSIC {
|
||||
vpc, err := VpcManager.GetOrCreateVpcForClassicNetwork(ctx, region)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "newFromCloudElasticcache.FetchVpcId")
|
||||
return nil, errors.Wrap(err, "NewVpcForClassicNetwork")
|
||||
}
|
||||
instance.VpcId = vpc.GetId()
|
||||
}
|
||||
|
||||
if networkId := extInstance.GetNetworkId(); len(networkId) > 0 {
|
||||
network, err := db.FetchByExternalIdAndManagerId(NetworkManager, networkId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
wire := WireManager.Query().SubQuery()
|
||||
vpc := VpcManager.Query().SubQuery()
|
||||
return q.Join(wire, sqlchemy.Equals(wire.Field("id"), q.Field("wire_id"))).
|
||||
Join(vpc, sqlchemy.Equals(vpc.Field("id"), wire.Field("vpc_id"))).
|
||||
Filter(sqlchemy.Equals(vpc.Field("manager_id"), provider.Id))
|
||||
})
|
||||
wire, err := WireManager.GetOrCreateWireForClassicNetwork(ctx, vpc, zone)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "newFromCloudElasticcache.FetchNetworkId")
|
||||
return nil, errors.Wrap(err, "NewWireForClassicNetwork")
|
||||
}
|
||||
network, err := NetworkManager.GetOrCreateClassicNetwork(ctx, wire)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "GetOrCreateClassicNetwork")
|
||||
}
|
||||
instance.NetworkId = network.GetId()
|
||||
} else {
|
||||
if vpcId := extInstance.GetVpcId(); len(vpcId) > 0 {
|
||||
vpc, err := db.FetchByExternalIdAndManagerId(VpcManager, vpcId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
return q.Equals("manager_id", provider.Id)
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "newFromCloudElasticcache.FetchVpcId")
|
||||
}
|
||||
instance.VpcId = vpc.GetId()
|
||||
}
|
||||
|
||||
if networkId := extInstance.GetNetworkId(); len(networkId) > 0 {
|
||||
network, err := db.FetchByExternalIdAndManagerId(NetworkManager, networkId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
wire := WireManager.Query().SubQuery()
|
||||
vpc := VpcManager.Query().SubQuery()
|
||||
return q.Join(wire, sqlchemy.Equals(wire.Field("id"), q.Field("wire_id"))).
|
||||
Join(vpc, sqlchemy.Equals(vpc.Field("id"), wire.Field("vpc_id"))).
|
||||
Filter(sqlchemy.Equals(vpc.Field("manager_id"), provider.Id))
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "newFromCloudElasticcache.FetchNetworkId")
|
||||
}
|
||||
instance.NetworkId = network.GetId()
|
||||
}
|
||||
}
|
||||
|
||||
if createdAt := extInstance.GetCreatedAt(); !createdAt.IsZero() {
|
||||
|
||||
@@ -2732,7 +2732,8 @@ func getCloudNicNetwork(ctx context.Context, vnic cloudprovider.ICloudNic, host
|
||||
vnet := vnic.GetINetwork()
|
||||
if vnet == nil {
|
||||
if vnic.InClassicNetwork() {
|
||||
vpc, err := VpcManager.GetOrCreateVpcForClassicNetwork(ctx, host)
|
||||
region := host.GetRegion()
|
||||
vpc, err := VpcManager.GetOrCreateVpcForClassicNetwork(ctx, region)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "NewVpcForClassicNetwork")
|
||||
}
|
||||
|
||||
@@ -289,7 +289,7 @@ func SyncElasticCacheSkus(ctx context.Context, userCred mcclient.TokenCredential
|
||||
|
||||
// 同步Region elasticcache sku列表.
|
||||
func SyncElasticCacheSkusByRegion(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion) error {
|
||||
if region.GetDriver().IsSupportedElasticcache() {
|
||||
if !region.GetDriver().IsSupportedElasticcache() {
|
||||
notes := fmt.Sprintf("SyncElasticCacheSkusByRegion %s not support elasticcache", region.Name)
|
||||
log.Infof(notes)
|
||||
return nil
|
||||
|
||||
@@ -191,12 +191,11 @@ func (manager *SVpcManager) getVpcExternalIdForClassicNetwork(regionId, cloudpro
|
||||
return fmt.Sprintf("%s-%s", regionId, cloudproviderId)
|
||||
}
|
||||
|
||||
func (manager *SVpcManager) GetOrCreateVpcForClassicNetwork(ctx context.Context, host *SHost) (*SVpc, error) {
|
||||
region := host.GetRegion()
|
||||
cloudprovider := host.GetCloudprovider()
|
||||
func (manager *SVpcManager) GetOrCreateVpcForClassicNetwork(ctx context.Context, region *SCloudregion) (*SVpc, error) {
|
||||
cloudprovider := region.GetCloudprovider()
|
||||
externalId := manager.getVpcExternalIdForClassicNetwork(region.Id, cloudprovider.Id)
|
||||
_vpc, err := db.FetchByExternalIdAndManagerId(manager, externalId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
return q.Equals("manager_id", host.ManagerId)
|
||||
return q.Equals("manager_id", region.ManagerId)
|
||||
})
|
||||
if err == nil {
|
||||
return _vpc.(*SVpc), nil
|
||||
@@ -213,7 +212,7 @@ func (manager *SVpcManager) GetOrCreateVpcForClassicNetwork(ctx context.Context,
|
||||
vpc.SetEnabled(false)
|
||||
vpc.Status = api.VPC_STATUS_UNAVAILABLE
|
||||
vpc.ExternalId = externalId
|
||||
vpc.ManagerId = host.ManagerId
|
||||
vpc.ManagerId = region.ManagerId
|
||||
err = manager.TableSpec().Insert(ctx, vpc)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Insert vpc for classic network")
|
||||
|
||||
Reference in New Issue
Block a user