def add_disk(disk_id): """ Add a disk :param disk_id: Identifier of the disk :type disk_id: str """ API._log('Add disk {0}'.format(disk_id)) all_disks = DiskController.list_disks() if disk_id not in all_disks: raise BadRequest('Disk not available') if all_disks[disk_id]['available'] is False: raise BadRequest('Disk already configured') with file_mutex('add_disk'), file_mutex('disk_{0}'.format(disk_id)): DiskController.prepare_disk(disk_id) all_disks = DiskController.list_disks() if disk_id not in all_disks: raise BadRequest('Disk could not be added') return all_disks[disk_id]
def index_disk(disk_id): """ Retrieve information about a single disk :param disk_id: Identifier of the disk :type disk_id: str """ API._log('Listing disk {0}'.format(disk_id)) all_disks = DiskController.list_disks() if disk_id not in all_disks: raise BadRequest('Disk unknown') return all_disks[disk_id]
def delete_disk(disk_id): """ Delete a disk :param disk_id: Identifier of the disk :type disk_id: str """ API._log('Deleting disk {0}'.format(disk_id)) all_disks = DiskController.list_disks() if disk_id not in all_disks: raise BadRequest('Disk not available') if all_disks[disk_id]['available'] is True: raise BadRequest('Disk not yet configured') with file_mutex('disk_{0}'.format(disk_id)): mountpoints = FSTab.read() if disk_id in mountpoints: mountpoint = mountpoints[disk_id] asds = ASDController.list_asds(mountpoint) for asd_id in asds: ASDController.remove_asd(asd_id, mountpoint) DiskController.clean_disk(disk_id, mountpoint)
def restart_disk(disk_id): """ Restart a disk :param disk_id: Identifier of the disk :type disk_id: str """ API._log('Restarting disk {0}'.format(disk_id)) all_disks = DiskController.list_disks() if disk_id not in all_disks: raise BadRequest('Disk not available') if all_disks[disk_id]['available'] is False: raise BadRequest('Disk already configured') with file_mutex('disk_{0}'.format(disk_id)): API._log('Got lock for restarting disk {0}'.format(disk_id)) mountpoints = FSTab.read() if disk_id in mountpoints: mountpoint = mountpoints[disk_id] asds = ASDController.list_asds(mountpoint) for asd_id in asds: ASDController.stop_asd(asd_id) DiskController.remount_disk(disk_id, mountpoint) asds = ASDController.list_asds(mountpoint) for asd_id in asds: ASDController.start_asd(asd_id)
def list_disks(): """ List all disk information """ API._logger.info('Listing disks') return dict((key.split('/')[-1], value) for key, value in DiskController.list_disks().iteritems())
def list_disks(): """ List all disk information """ API._log('Listing disks') return DiskController.list_disks()