def list_volumes(vpool_guid=None): """ List all known volumes on a specific vpool or on all """ if vpool_guid is not None: vpool = VPool(vpool_guid) storagedriver_client = StorageDriverClient.load(vpool) response = storagedriver_client.list_volumes() else: response = [] for vpool in VPoolList.get_vpools(): storagedriver_client = StorageDriverClient.load(vpool) response.extend(storagedriver_client.list_volumes()) return response
def list_volumes(vpool_guid=None): """ List all known volumes on a specific vpool or on all """ if vpool_guid is not None: vpool = VPool(vpool_guid) storagedriver_client = StorageDriverClient.load(vpool) response = storagedriver_client.list_volumes() else: response = [] for vpool in VPoolList.get_vpools(): storagedriver_client = StorageDriverClient.load(vpool) response.extend(storagedriver_client.list_volumes()) return response
def update_status(storagedriver_id): """ Sets Storage Driver offline in case hypervisor management Center reports the hypervisor pmachine related to this Storage Driver as unavailable. :param storagedriver_id: ID of the storagedriver to update its status """ pmachine = PMachineList.get_by_storagedriver_id(storagedriver_id) storagedriver = StorageDriverList.get_by_storagedriver_id(storagedriver_id) storagerouter = storagedriver.storagerouter if pmachine.mgmtcenter: # Update status pmachine.invalidate_dynamics(['host_status']) else: # No management Center, cannot update status via api logger.info('Updating status of pmachine {0} using SSHClient'.format(pmachine.name)) host_status = 'RUNNING' try: client = SSHClient(storagerouter, username='******') configuration_dir = EtcdConfiguration.get('/ovs/framework/paths|cfgdir') logger.info('SSHClient connected successfully to {0} at {1}'.format(pmachine.name, client.ip)) with Remote(client.ip, [LocalStorageRouterClient]) as remote: lsrc = remote.LocalStorageRouterClient('{0}/storagedriver/storagedriver/{1}.json'.format(configuration_dir, storagedriver.vpool.name)) lsrc.server_revision() logger.info('LocalStorageRouterClient connected successfully to {0} at {1}'.format(pmachine.name, client.ip)) except Exception as ex: logger.error('Connectivity check failed, assuming host {0} is halted. {1}'.format(pmachine.name, ex)) host_status = 'HALTED' if host_status != 'RUNNING': # Host is stopped storagedriver_client = StorageDriverClient.load(storagedriver.vpool) storagedriver_client.mark_node_offline(str(storagedriver.storagedriver_id))
def reload_client(self): """ Reloads the StorageDriver Client """ self._frozen = False self._storagedriver_client = StorageDriverClient.load(self) self._frozen = True
def reload_client(self): """ Reloads the StorageDriver Client """ if self.vpool: self._frozen = False self.storagedriver_client = StorageDriverClient.load(self.vpool) self._frozen = True
def reload_client(self): """ Reloads the StorageDriver Client """ if self.vpool_guid: self._frozen = False self._storagedriver_client = StorageDriverClient.load(self.vpool) self._frozen = True
def move_away(storagerouter_guid): """ Moves away all vDisks from all Storage Drivers this Storage Router is serving """ storagedrivers = StorageRouter(storagerouter_guid).storagedrivers if len(storagedrivers) > 0: storagedriver_client = StorageDriverClient.load(storagedrivers[0].vpool) for storagedriver in storagedrivers: storagedriver_client.mark_node_offline(str(storagedriver.storagedriver_id))
def reload_client(self, client): """ Reloads the StorageDriverClient or ObjectRegistryClient """ self._frozen = False if client == "storagedriver": self._storagedriver_client = StorageDriverClient.load(self) elif client == "objectregistry": self._objectregistry_client = ObjectRegistryClient.load(self) self._frozen = True
def reload_client(self, client): """ Reloads the StorageDriverClient or ObjectRegistryClient """ self._frozen = False if client == 'storagedriver': self._storagedriver_client = StorageDriverClient.load(self) elif client == 'objectregistry': self._objectregistry_client = ObjectRegistryClient.load(self) self._frozen = True
def move_away(storagerouter_guid): """ Moves away all vDisks from all Storage Drivers this Storage Router is serving """ storagedrivers = StorageRouter(storagerouter_guid).storagedrivers if len(storagedrivers) > 0: storagedriver_client = StorageDriverClient.load( storagedrivers[0].vpool) for storagedriver in storagedrivers: storagedriver_client.mark_node_offline( str(storagedriver.storagedriver_id))
def reload_client(self, client): """ Reloads the StorageDriverClient or ObjectRegistryClient """ if self.vpool_guid: self._frozen = False if client == 'storagedriver': self._storagedriver_client = StorageDriverClient.load(self.vpool) elif client == 'objectregistry': self._objectregistry_client = ObjectRegistryClient.load(self.vpool) self._frozen = True
def reload_client(self, client): """ Reloads the StorageDriverClient, ObjectRegistryClient or ClusterRegistry client """ self._frozen = False if client == 'storagedriver': self._storagedriver_client = StorageDriverClient.load(self) elif client == 'objectregistry': self._objectregistry_client = ObjectRegistryClient.load(self) elif client == 'clusterregistry': self._clusterregistry_client = ClusterRegistryClient.load(self) self._frozen = True
def mark_offline(storagerouter_guid): """ Marks all StorageDrivers on this StorageRouter offline :param storagerouter_guid: Guid of the Storage Router :type storagerouter_guid: str :return: None """ for storagedriver in StorageRouter(storagerouter_guid).storagedrivers: vpool = storagedriver.vpool if len(vpool.storagedrivers) > 1: storagedriver_client = StorageDriverClient.load(vpool, excluded_storagedrivers=[storagedriver]) storagedriver_client.mark_node_offline(str(storagedriver.storagedriver_id))
def reload_client(self, client): """ Reloads the StorageDriverClient or ObjectRegistryClient """ if self.vpool_guid: self._frozen = False if client == 'storagedriver': self._storagedriver_client = StorageDriverClient.load( self.vpool) elif client == 'objectregistry': self._objectregistry_client = ObjectRegistryClient.load( self.vpool) elif client == 'filesystem_metadata': self._fsmetadata_client = FSMetaDataClient.load(self.vpool) self._frozen = True
def update_status(storagedriver_id): """ Sets Storage Driver offline in case hypervisor management Center reports the hypervisor pmachine related to this Storage Driver as unavailable. :param storagedriver_id: ID of the storagedriver to update its status """ pmachine = PMachineList.get_by_storagedriver_id(storagedriver_id) storagedriver = StorageDriverList.get_by_storagedriver_id( storagedriver_id) storagerouter = storagedriver.storagerouter if pmachine.mgmtcenter: # Update status pmachine.invalidate_dynamics(['host_status']) else: # No management Center, cannot update status via api logger.info( 'Updating status of pmachine {0} using SSHClient'.format( pmachine.name)) host_status = 'RUNNING' try: client = SSHClient(storagerouter, username='******') configuration_dir = EtcdConfiguration.get( '/ovs/framework/paths|cfgdir') logger.info( 'SSHClient connected successfully to {0} at {1}'.format( pmachine.name, client.ip)) with Remote(client.ip, [LocalStorageRouterClient]) as remote: lsrc = remote.LocalStorageRouterClient( '{0}/storagedriver/storagedriver/{1}.json'.format( configuration_dir, storagedriver.vpool.name)) lsrc.server_revision() logger.info( 'LocalStorageRouterClient connected successfully to {0} at {1}' .format(pmachine.name, client.ip)) except Exception as ex: logger.error( 'Connectivity check failed, assuming host {0} is halted. {1}' .format(pmachine.name, ex)) host_status = 'HALTED' if host_status != 'RUNNING': # Host is stopped storagedriver_client = StorageDriverClient.load( storagedriver.vpool) storagedriver_client.mark_node_offline( str(storagedriver.storagedriver_id))
def update_status(storagedriver_id): """ Sets Storage Driver offline in case hypervisor management Center reports the hypervisor pmachine related to this Storage Driver as unavailable. """ pmachine = PMachineList.get_by_storagedriver_id(storagedriver_id) if pmachine.mgmtcenter: # Update status pmachine.invalidate_dynamics(['host_status']) host_status = pmachine.host_status if host_status != 'RUNNING': # Host is stopped storagedriver = StorageDriverList.get_by_storagedriver_id(storagedriver_id) storagedriver_client = StorageDriverClient.load(storagedriver.vpool) storagedriver_client.mark_node_offline(str(storagedriver.storagedriver_id)) else: # No management Center, cannot update status via api #TODO: should we try manually (ping, ssh)? pass
def update_status(storagedriver_id): """ Sets Storage Driver offline in case hypervisor management Center reports the hypervisor pmachine related to this Storage Driver as unavailable. """ pmachine = PMachineList.get_by_storagedriver_id(storagedriver_id) if pmachine.mgmtcenter: # Update status pmachine.invalidate_dynamics(['host_status']) host_status = pmachine.host_status if host_status != 'RUNNING': # Host is stopped storagedriver = StorageDriverList.get_by_storagedriver_id( storagedriver_id) storagedriver_client = StorageDriverClient.load( storagedriver.vpool) storagedriver_client.mark_node_offline( str(storagedriver.storagedriver_id)) else: # No management Center, cannot update status via api # @TODO: should we try manually (ping, ssh)? pass
def update_status(storagedriver_id): """ Sets Storage Driver offline in case hypervisor management Center reports the hypervisor pmachine related to this Storage Driver as unavailable. :param storagedriver_id: ID of the storagedriver to update its status :type storagedriver_id: str :return: None """ pmachine = PMachineList.get_by_storagedriver_id(storagedriver_id) storagedriver = StorageDriverList.get_by_storagedriver_id( storagedriver_id) storagerouter = storagedriver.storagerouter if pmachine.mgmtcenter: # Update status pmachine.invalidate_dynamics(['host_status']) host_status = pmachine.host_status else: # No management Center, cannot update status via api StorageDriverController._logger.info( 'Updating status of pmachine {0} using SSHClient'.format( pmachine.name)) path = StorageDriverConfiguration( 'storagedriver', storagedriver.vpool.guid, storagedriver.storagedriver_id).remote_path host_status = 'RUNNING' try: client = SSHClient(storagerouter, username='******') StorageDriverController._logger.info( 'SSHClient connected successfully to {0} at {1}'.format( pmachine.name, client.ip)) except UnableToConnectException as ex: StorageDriverController._logger.error( 'SSHClient connectivity check failed, assuming host {0} is halted. {1}' .format(pmachine.name, ex)) host_status = 'HALTED' else: try: with remote(client.ip, [LocalStorageRouterClient]) as rem: lsrc = rem.LocalStorageRouterClient(path) lsrc.server_revision() StorageDriverController._logger.info( 'LocalStorageRouterClient connected successfully to {0} at {1}' .format(pmachine.name, client.ip)) except (EOFError, RuntimeError, ClusterNotReachableException) as ex: StorageDriverController._logger.error( 'LocalStorageRouterClient check failed, assuming volumedriver on host {0} {1} is halted. {2}' .format(pmachine.name, client.ip, ex)) host_status = 'HALTED' if host_status != 'RUNNING': # Host is stopped storagedriver_client = StorageDriverClient.load( storagedriver.vpool) storagedriver_client.mark_node_offline( str(storagedriver.storagedriver_id)) StorageDriverController._logger.warning( 'Storagedriver {0} marked offline'.format( storagedriver.storagedriver_id))