Example #1
0
    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
Example #2
0
    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)