From e5072873315820e4020c4ae465c70b769bebd139 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Fri, 22 Oct 2021 18:04:57 +0800 Subject: [PATCH] fix(region): qcloud classic nic and storage sync --- pkg/compute/models/disks.go | 7 +++++++ pkg/multicloud/qcloud/instance.go | 13 ++++++++++++- pkg/multicloud/qcloud/localdisk.go | 3 ++- pkg/multicloud/qcloud/localstorage.go | 4 ++++ pkg/multicloud/qcloud/zone.go | 6 ++++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index b641458fa2..fd90fefc98 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -1578,6 +1578,13 @@ func (manager *SDiskManager) newFromCloudDisk(ctx context.Context, userCred mccl disk.IsEmulated = extDisk.IsEmulated() + if templateId := extDisk.GetTemplateId(); len(templateId) > 0 { + cachedImage, err := db.FetchByExternalId(CachedimageManager, templateId) + if err == nil && cachedImage != nil { + disk.TemplateId = cachedImage.GetId() + } + } + if provider.GetFactory().IsSupportPrepaidResources() { disk.BillingType = extDisk.GetBillingType() if expired := extDisk.GetExpiredAt(); !expired.IsZero() { diff --git a/pkg/multicloud/qcloud/instance.go b/pkg/multicloud/qcloud/instance.go index 5f50d3d2a3..39b4233035 100644 --- a/pkg/multicloud/qcloud/instance.go +++ b/pkg/multicloud/qcloud/instance.go @@ -222,6 +222,7 @@ func (self *SInstance) GetIDisks() ([]cloudprovider.ICloudDisk, error) { DiskSize: self.SystemDisk.DiskSize, DisktType: self.SystemDisk.DiskType, DiskUsage: "SYSTEM_DISK", + imageId: self.ImageId, } idisks = append(idisks, &disk) } @@ -273,13 +274,23 @@ func (self *SInstance) GetINics() ([]cloudprovider.ICloudNic, error) { nics []cloudprovider.ICloudNic ) + if classic { + for _, ipAddr := range self.PrivateIpAddresses { + nic := SInstanceNic{ + instance: self, + ipAddr: ipAddr, + classic: true, + } + nics = append(nics, &nic) + } + } client, err := region.client.getVpcClient(region.GetId()) if err != nil { return nil, err } req := qvpc.NewDescribeNetworkInterfacesRequest() req.Filters = []*qvpc.Filter{ - &qvpc.Filter{ + { Values: qcommon.StringPtrs([]string{self.InstanceId}), Name: qcommon.StringPtr("attachment.instance-id"), }, diff --git a/pkg/multicloud/qcloud/localdisk.go b/pkg/multicloud/qcloud/localdisk.go index e91a3dc1ee..79d8f06717 100644 --- a/pkg/multicloud/qcloud/localdisk.go +++ b/pkg/multicloud/qcloud/localdisk.go @@ -32,6 +32,7 @@ type SLocalDisk struct { DiskSize float32 DisktType string DiskUsage string + imageId string } func (self *SLocalDisk) GetSysTags() map[string]string { @@ -112,7 +113,7 @@ func (self *SLocalDisk) Reset(ctx context.Context, snapshotId string) (string, e } func (self *SLocalDisk) GetTemplateId() string { - return "" + return self.imageId } func (self *SLocalDisk) GetStatus() string { diff --git a/pkg/multicloud/qcloud/localstorage.go b/pkg/multicloud/qcloud/localstorage.go index 06b433dc33..48832f8be1 100644 --- a/pkg/multicloud/qcloud/localstorage.go +++ b/pkg/multicloud/qcloud/localstorage.go @@ -128,3 +128,7 @@ func (self *SLocalStorage) GetMountPoint() string { func (self *SLocalStorage) IsSysDiskStore() bool { return true } + +func (self *SLocalStorage) DisableSync() bool { + return true +} diff --git a/pkg/multicloud/qcloud/zone.go b/pkg/multicloud/qcloud/zone.go index da03247a64..54652d2eba 100644 --- a/pkg/multicloud/qcloud/zone.go +++ b/pkg/multicloud/qcloud/zone.go @@ -170,6 +170,12 @@ func (self *SZone) fetchStorages() error { storage := SLocalStorage{zone: self, storageType: localstorageType, available: true} self.istorages = append(self.istorages, &storage) } + for _, storageType := range QCLOUD_LOCAL_STORAGE_TYPES { + if !utils.IsInStringArray(storageType, self.localstorages) { + storage := SLocalStorage{zone: self, storageType: storageType, available: false} + self.istorages = append(self.istorages, &storage) + } + } return nil }