From 7d25a44b4e978d801b0820c73417b111ba5bad43 Mon Sep 17 00:00:00 2001 From: ioito Date: Thu, 22 Aug 2019 19:40:57 +0800 Subject: [PATCH] fix: qcloud sync unavailable storages --- pkg/multicloud/qcloud/localstorage.go | 6 +++++- pkg/multicloud/qcloud/storage.go | 6 +++++- pkg/multicloud/qcloud/zone.go | 16 +++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pkg/multicloud/qcloud/localstorage.go b/pkg/multicloud/qcloud/localstorage.go index 4dc6f9c0cf..1261719d2f 100644 --- a/pkg/multicloud/qcloud/localstorage.go +++ b/pkg/multicloud/qcloud/localstorage.go @@ -27,6 +27,7 @@ import ( type SLocalStorage struct { zone *SZone storageType string + available bool } func (self *SLocalStorage) GetMetadata() *jsonutils.JSONDict { @@ -84,6 +85,9 @@ func (self *SLocalStorage) GetStorageConf() jsonutils.JSONObject { } func (self *SLocalStorage) GetStatus() string { + if !self.available { + return api.STORAGE_OFFLINE + } return api.STORAGE_ONLINE } @@ -93,7 +97,7 @@ func (self *SLocalStorage) Refresh() error { } func (self *SLocalStorage) GetEnabled() bool { - return true + return self.available == true } func (self *SLocalStorage) GetIStoragecache() cloudprovider.ICloudStoragecache { diff --git a/pkg/multicloud/qcloud/storage.go b/pkg/multicloud/qcloud/storage.go index 71dd329533..d997e8e992 100644 --- a/pkg/multicloud/qcloud/storage.go +++ b/pkg/multicloud/qcloud/storage.go @@ -29,6 +29,7 @@ import ( type SStorage struct { zone *SZone storageType string + available bool } func (self *SStorage) GetMetadata() *jsonutils.JSONDict { @@ -97,6 +98,9 @@ func (self *SStorage) GetStorageConf() jsonutils.JSONObject { } func (self *SStorage) GetStatus() string { + if !self.available { + return api.STORAGE_OFFLINE + } return api.STORAGE_ONLINE } @@ -106,7 +110,7 @@ func (self *SStorage) Refresh() error { } func (self *SStorage) GetEnabled() bool { - return true + return self.available == true } func (self *SStorage) GetIStoragecache() cloudprovider.ICloudStoragecache { diff --git a/pkg/multicloud/qcloud/zone.go b/pkg/multicloud/qcloud/zone.go index be473e0daa..428c9a2237 100644 --- a/pkg/multicloud/qcloud/zone.go +++ b/pkg/multicloud/qcloud/zone.go @@ -141,14 +141,20 @@ func (self *SZone) fetchStorages() error { } storageTypes := []string{} for _, diskConfig := range diskConfigSet { - if diskConfig.Available && !utils.IsInStringArray(diskConfig.DiskType, storageTypes) { - storageTypes = append(storageTypes, diskConfig.DiskType) - storage := SStorage{zone: self, storageType: diskConfig.DiskType} + if !utils.IsInStringArray(strings.ToUpper(diskConfig.DiskType), storageTypes) { + storageTypes = append(storageTypes, strings.ToUpper(diskConfig.DiskType)) + storage := SStorage{zone: self, storageType: diskConfig.DiskType, available: diskConfig.Available} + self.istorages = append(self.istorages, &storage) + } + } + for _, storageType := range []string{"CLOUD_PREMIUM", "CLOUD_SSD", "CLOUD_BASIC"} { + if !utils.IsInStringArray(storageType, storageTypes) { + storage := SStorage{zone: self, storageType: storageType, available: false} self.istorages = append(self.istorages, &storage) } } for _, localstorageType := range []string{"LOCAL_BASIC", "LOCAL_SSD"} { - storage := SLocalStorage{zone: self, storageType: localstorageType} + storage := SLocalStorage{zone: self, storageType: localstorageType, available: self.region.GetId() == "ap-hongkong"} //仅有香港本地存储可用 self.istorages = append(self.istorages, &storage) } return nil @@ -186,7 +192,7 @@ func (self *SZone) getStorageByCategory(category string) (*SStorage, error) { //return &SStorage{zone: self, storageType: strings.ToUpper(storages[i].GetStorageType())}, nil } storage := storages[i].(*SStorage) - if storage.storageType == category { + if strings.ToLower(storage.storageType) == strings.ToLower(category) { return storage, nil } }