Loading cloudcontrol/node/hypervisor/lib.py +14 −4 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ """Helpers for libvirt.""" """Helpers for libvirt.""" import logging import logging import time from itertools import chain, imap, count from itertools import chain, imap, count from StringIO import StringIO from StringIO import StringIO from xml.etree import cElementTree as et from xml.etree import cElementTree as et Loading Loading @@ -303,7 +304,7 @@ class StorageIndex(object): self.paths = None self.paths = None self.update() self.update() def update(self): def update(self, retry=1): """Update storage pools and volumes.""" """Update storage pools and volumes.""" # go through all storage pools and check if it is already in the index # go through all storage pools and check if it is already in the index for lv_storage in imap( for lv_storage in imap( Loading @@ -315,7 +316,7 @@ class StorageIndex(object): ): ): if lv_storage.name() in self.storages: if lv_storage.name() in self.storages: # update # update self.storages[lv_storage.name()].update() self.storages[lv_storage.name()].update(retry) else: else: # add storage pool # add storage pool s = Storage(lv_storage) s = Storage(lv_storage) Loading Loading @@ -416,6 +417,7 @@ class Storage(object): """Storage abstraction.""" """Storage abstraction.""" SHARED_TYPES = ['rbd'] SHARED_TYPES = ['rbd'] REFRESH_RETRY_INTERVAL = 1 def __init__(self, lv_storage): def __init__(self, lv_storage): """ """ Loading @@ -438,9 +440,17 @@ class Storage(object): def is_shared(self): def is_shared(self): return True if self.type in Storage.SHARED_TYPES else False return True if self.type in Storage.SHARED_TYPES else False def update(self): def update(self, retry=1): for _ in xrange(retry): try: self.lv_storage.refresh() except libvirt.libvirtError as err: logger.warning('Unable to refresh storage %s: %s', self.name, err) time.sleep(self.REFRESH_RETRY_INTERVAL) else: break try: try: self.lv_storage.refresh() self.update_attr() self.update_attr() # update volumes # update volumes Loading Loading
cloudcontrol/node/hypervisor/lib.py +14 −4 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ """Helpers for libvirt.""" """Helpers for libvirt.""" import logging import logging import time from itertools import chain, imap, count from itertools import chain, imap, count from StringIO import StringIO from StringIO import StringIO from xml.etree import cElementTree as et from xml.etree import cElementTree as et Loading Loading @@ -303,7 +304,7 @@ class StorageIndex(object): self.paths = None self.paths = None self.update() self.update() def update(self): def update(self, retry=1): """Update storage pools and volumes.""" """Update storage pools and volumes.""" # go through all storage pools and check if it is already in the index # go through all storage pools and check if it is already in the index for lv_storage in imap( for lv_storage in imap( Loading @@ -315,7 +316,7 @@ class StorageIndex(object): ): ): if lv_storage.name() in self.storages: if lv_storage.name() in self.storages: # update # update self.storages[lv_storage.name()].update() self.storages[lv_storage.name()].update(retry) else: else: # add storage pool # add storage pool s = Storage(lv_storage) s = Storage(lv_storage) Loading Loading @@ -416,6 +417,7 @@ class Storage(object): """Storage abstraction.""" """Storage abstraction.""" SHARED_TYPES = ['rbd'] SHARED_TYPES = ['rbd'] REFRESH_RETRY_INTERVAL = 1 def __init__(self, lv_storage): def __init__(self, lv_storage): """ """ Loading @@ -438,9 +440,17 @@ class Storage(object): def is_shared(self): def is_shared(self): return True if self.type in Storage.SHARED_TYPES else False return True if self.type in Storage.SHARED_TYPES else False def update(self): def update(self, retry=1): for _ in xrange(retry): try: self.lv_storage.refresh() except libvirt.libvirtError as err: logger.warning('Unable to refresh storage %s: %s', self.name, err) time.sleep(self.REFRESH_RETRY_INTERVAL) else: break try: try: self.lv_storage.refresh() self.update_attr() self.update_attr() # update volumes # update volumes Loading