Ejemplo n.º 1
0
 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]
Ejemplo n.º 2
0
 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]
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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())
Ejemplo n.º 6
0
 def list_disks():
     """ List all disk information """
     API._log('Listing disks')
     return DiskController.list_disks()