def list_volumes(self): """ List all the block devices available via the back end API. :returns: A ``list`` of ``BlockDeviceVolume``s. """ pagesProxy = PagesProxy() vdiskInfos = pagesProxy.listVDisks() tgtHost = hedvigLookupTgt('wood', self.logger_) volumes = [] for vdiskInfo in vdiskInfos: try: vDiskInfo = pagesProxy.describeVDisk(vdiskInfo.vDiskName) except Exception as e: continue try: lunnum = hedvigGetLun(tgtHost, vdiskInfo.vDiskName, self.logger_) attached_to = self._is_attached(tgtHost, lunnum) except Exception as e: attached_to = None volumes.append( BlockDeviceVolume(blockdevice_id=unicode(vdiskInfo.vDiskName), size=vdiskInfo.size, attached_to=attached_to, dataset_id=UUID(vdiskInfo.vDiskName))) return volumes
def destroy_volume(self, blockdevice_id): """ Destroy an existing volume. :param unicode blockdevice_id: The unique identifier for the volume to destroy. :raises UnknownVolume: If the supplied ``blockdevice_id`` does not exist. :return: ``None`` """ if (findVDisk(str(blockdevice_id)) == None): raise UnknownVolume(blockdevice_id) pagesProxy = PagesProxy() pagesProxy.deleteVirtualDisk(str(blockdevice_id)) # Remove when delete issue is fixed time.sleep(1)