fix(region): refactor huawei api for support organization (#19067)

This commit is contained in:
屈轩
2023-12-20 19:26:50 +08:00
committed by GitHub
parent bc454e809c
commit 4bfe55428f
118 changed files with 2256 additions and 7153 deletions
@@ -590,6 +590,9 @@ func (drv *SManagedVirtualizedGuestDriver) RemoteDeployGuestForCreate(ctx contex
if err == nil || !options.Options.EnableAutoSwitchServerSku {
return iVM, err
}
if errors.Cause(err) != cloudprovider.ErrInvalidSku {
return iVM, err
}
skus, e := models.ServerSkuManager.GetSkus(host.GetProviderName(), guest.VcpuCount, guest.VmemSize)
if e != nil {
return iVM, errors.Wrapf(e, "GetSkus")
+19 -6
View File
@@ -102,7 +102,7 @@ type SElasticcache struct {
CapacityMB int `nullable:"false" list:"user" create:"optional" json:"capacity_mb"`
// 对应Sku
LocalCategory string `width:"16" charset:"ascii" nullable:"false" list:"user" create:"optional" json:"local_category"`
LocalCategory string `width:"16" charset:"ascii" nullable:"true" list:"user" create:"optional" json:"local_category"`
// 类型
// single(单副本) | double(双副本) | readone (单可读) | readthree (3可读) | readfive(5只读)
@@ -212,22 +212,23 @@ func (manager *SElasticcacheManager) FetchCustomizeColumns(
virtRows := manager.SVirtualResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
manRows := manager.SManagedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
regRows := manager.SCloudregionResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
vpcRows := manager.SVpcResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
zoneRows := manager.SZoneResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
netIds := make([]string, len(objs))
cacheIds := make([]string, len(objs))
vpcIds := make([]string, len(objs))
zoneIds := []string{}
for i := range rows {
rows[i] = api.ElasticcacheDetails{
VirtualResourceDetails: virtRows[i],
VpcResourceInfo: vpcRows[i],
ZoneResourceInfoBase: zoneRows[i].ZoneResourceInfoBase,
}
rows[i].ManagedResourceInfo = manRows[i]
rows[i].CloudregionResourceInfo = regRows[i]
netIds[i] = objs[i].(*SElasticcache).NetworkId
cacheIds[i] = objs[i].(*SElasticcache).Id
cache := objs[i].(*SElasticcache)
netIds[i] = cache.NetworkId
cacheIds[i] = cache.Id
vpcIds[i] = cache.VpcId
sz := strings.Split(objs[i].(*SElasticcache).SlaveZones, ",")
for j := range sz {
@@ -237,8 +238,15 @@ func (manager *SElasticcacheManager) FetchCustomizeColumns(
}
}
vpcs := make(map[string]SVpc)
err := db.FetchStandaloneObjectsByIds(VpcManager, vpcIds, vpcs)
if err != nil {
log.Errorf("FetchStandaloneObjectsByIds fail %s", err)
return nil
}
networks := make(map[string]SNetwork)
err := db.FetchStandaloneObjectsByIds(NetworkManager, netIds, &networks)
err = db.FetchStandaloneObjectsByIds(NetworkManager, netIds, &networks)
if err != nil {
log.Errorf("FetchStandaloneObjectsByIds fail %s", err)
return rows
@@ -248,6 +256,11 @@ func (manager *SElasticcacheManager) FetchCustomizeColumns(
if net, ok := networks[netIds[i]]; ok {
rows[i].Network = net.Name
}
if vpc, ok := vpcs[vpcIds[i]]; ok {
rows[i].Vpc = vpc.Name
rows[i].VpcExtId = vpc.ExternalId
rows[i].IsDefaultVpc = vpc.IsDefault
}
}
if len(fields) == 0 || fields.Contains("secgroups") || fields.Contains("secgroup") {
@@ -354,11 +354,15 @@ func (self *SVpcPeeringConnection) syncRemove(ctx context.Context, userCred mccl
return self.RealDelete(ctx, userCred)
}
func (self *SVpcPeeringConnection) SyncWithCloudPeerConnection(ctx context.Context, userCred mcclient.TokenCredential, ext cloudprovider.ICloudVpcPeeringConnection, provider *SCloudprovider) error {
func (self *SVpcPeeringConnection) SyncWithCloudPeerConnection(ctx context.Context, userCred mcclient.TokenCredential, ext cloudprovider.ICloudVpcPeeringConnection) error {
vpc, err := self.GetVpc()
if err != nil {
return errors.Wrapf(err, "GetVpc")
}
provider := vpc.GetCloudprovider()
if provider == nil {
return errors.Wrapf(cloudprovider.ErrNotFound, "cloudprovider for vpc %s", vpc.Name)
}
_, err = db.Update(self, func() error {
self.Status = ext.GetStatus()
self.ExternalId = ext.GetGlobalId()
+1 -1
View File
@@ -1742,7 +1742,7 @@ func (svpc *SVpc) SyncVpcPeeringConnections(
if !xor {
for i := 0; i < len(commondb); i += 1 {
err = commondb[i].SyncWithCloudPeerConnection(ctx, userCred, commonext[i], provider)
err = commondb[i].SyncWithCloudPeerConnection(ctx, userCred, commonext[i])
if err != nil {
result.UpdateError(err)
continue
@@ -90,7 +90,7 @@ func (self *VpcPeeringConnectionCreateTask) OnInit(ctx context.Context, obj db.I
}
iPeerConnection.Refresh()
err = peer.SyncWithCloudPeerConnection(ctx, self.GetUserCred(), iPeerConnection, nil)
err = peer.SyncWithCloudPeerConnection(ctx, self.GetUserCred(), iPeerConnection)
if err != nil {
self.taskFailed(ctx, peer, errors.Wrapf(err, "SyncWithCloudPeerConnection"))
return
@@ -69,7 +69,7 @@ func (self *VpcPeeringConnectionSyncstatusTask) OnInit(ctx context.Context, obj
return
}
err = peer.SyncWithCloudPeerConnection(ctx, self.UserCred, ipeer, nil)
err = peer.SyncWithCloudPeerConnection(ctx, self.UserCred, ipeer)
if err != nil {
self.taskFail(ctx, peer, errors.Wrapf(err, "SyncWithCloudPeerConnection(ctx, self.UserCred, %s, nil)", jsonutils.Marshal(ipeer).String()))
return