From 2bd249be264fd828b09924ffd630c6717edb9ffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 12 Sep 2018 17:08:25 +0800 Subject: [PATCH] =?UTF-8?q?rbd=E7=B1=BB=E5=9E=8Bdisk=E9=9C=80=E8=A6=81path?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/disks.go | 18 +++--------------- pkg/compute/models/guestdisks.go | 3 ++- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 699556c1bd..ca238a6d7e 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -207,21 +207,9 @@ func (self *SDisk) GetCloudprovider() *SCloudprovider { } func (self *SDisk) GetPathAtHost(host *SHost) string { - storage := self.GetStorage() - if storage.StorageType == STORAGE_RBD { - pool, _ := storage.StorageConf.GetString("pool") - monHost, _ := storage.StorageConf.GetString("mon_host") - key, _ := storage.StorageConf.GetString("key") - for _, keyword := range []string{"@", ":", "="} { - monHost = strings.Replace(monHost, keyword, fmt.Sprintf("\\%s", keyword), -1) - key = strings.Replace(key, keyword, fmt.Sprintf("\\%s", keyword), -1) - } - return fmt.Sprintf("rbd:%s/%s:mon_host=%s:key=%s", pool, self.Id, monHost, key) - } else if storage.StorageType == STORAGE_LOCAL || storage.StorageType == STORAGE_NAS { - hostStorage := host.GetHoststorageOfId(self.StorageId) - if hostStorage != nil { - return path.Join(hostStorage.MountPoint, self.Id) - } + hostStorage := host.GetHoststorageOfId(self.StorageId) + if hostStorage != nil { + return path.Join(hostStorage.MountPoint, self.Id) } return "" } diff --git a/pkg/compute/models/guestdisks.go b/pkg/compute/models/guestdisks.go index 82c63895df..80c6de1474 100644 --- a/pkg/compute/models/guestdisks.go +++ b/pkg/compute/models/guestdisks.go @@ -115,7 +115,8 @@ func (self *SGuestdisk) GetJsonDescAtHost(host *SHost) jsonutils.JSONObject { // if hostcachedimg is not None: // desc['image_path'] = hostcachedimg.path } - if host.HostType == HOST_TYPE_HYPERVISOR && disk.IsLocal() { + storage := disk.GetStorage() + if host.HostType == HOST_TYPE_HYPERVISOR && disk.IsLocal() || (storage != nil && storage.StorageType == STORAGE_RBD) { desc.Add(jsonutils.NewString(disk.StorageId), "storage_id") localpath := disk.GetPathAtHost(host) if len(localpath) == 0 {