Exemplo n.º 1
0
    def test_run_attach_detach_volume(self):
        # Create one volume and one node to test with
        instance_id = "storage-test"
        vol_size = "5"
        user_id = "fake"
        project_id = 'fake'
        mountpoint = "/dev/sdf"
        volume_id = self.mystorage.create_volume(vol_size, user_id, project_id)

        volume_obj = storage.get_volume(volume_id)
        volume_obj.start_attach(instance_id, mountpoint)
        rv = yield self.mynode.attach_volume(volume_id,
                                          instance_id,
                                          mountpoint)
        self.assertEqual(volume_obj['status'], "in-use")
        self.assertEqual(volume_obj['attachStatus'], "attached")
        self.assertEqual(volume_obj['instance_id'], instance_id)
        self.assertEqual(volume_obj['mountpoint'], mountpoint)

        self.assertRaises(exception.Error,
                          self.mystorage.delete_volume,
                          volume_id)

        rv = yield self.mystorage.detach_volume(volume_id)
        volume_obj = storage.get_volume(volume_id)
        self.assertEqual(volume_obj['status'], "available")

        rv = self.mystorage.delete_volume(volume_id)
        self.assertRaises(exception.Error,
                          storage.get_volume,
                          volume_id)
Exemplo n.º 2
0
    def test_run_attach_detach_volume(self):
        # Create one volume and one node to test with
        instance_id = "storage-test"
        vol_size = "5"
        user_id = "fake"
        project_id = 'fake'
        mountpoint = "/dev/sdf"
        volume_id = self.mystorage.create_volume(vol_size, user_id, project_id)

        volume_obj = storage.get_volume(volume_id)
        volume_obj.start_attach(instance_id, mountpoint)
        rv = yield self.mynode.attach_volume(volume_id, instance_id,
                                             mountpoint)
        self.assertEqual(volume_obj['status'], "in-use")
        self.assertEqual(volume_obj['attachStatus'], "attached")
        self.assertEqual(volume_obj['instance_id'], instance_id)
        self.assertEqual(volume_obj['mountpoint'], mountpoint)

        self.assertRaises(exception.Error, self.mystorage.delete_volume,
                          volume_id)

        rv = yield self.mystorage.detach_volume(volume_id)
        volume_obj = storage.get_volume(volume_id)
        self.assertEqual(volume_obj['status'], "available")

        rv = self.mystorage.delete_volume(volume_id)
        self.assertRaises(exception.Error, storage.get_volume, volume_id)
Exemplo n.º 3
0
 def attach_volume(self, instance_id=None, volume_id=None, mountpoint=None):
     volume = storage.get_volume(volume_id)
     yield self._init_aoe()
     yield utils.runthis(
         "Attached Volume: %s",
         "sudo virsh attach-disk %s /dev/etherd/%s %s" %
         (instance_id, volume['aoe_device'], mountpoint.split("/")[-1]))
     volume.finish_attach()
     defer.returnValue(True)
Exemplo n.º 4
0
Arquivo: node.py Projeto: sorenh/cc
 def attach_volume(self, instance_id = None,
                   volume_id = None, mountpoint = None):
     volume = storage.get_volume(volume_id)
     yield self._init_aoe()
     yield utils.runthis("Attached Volume: %s",
             "sudo virsh attach-disk %s /dev/etherd/%s %s"
             % (instance_id, volume['aoe_device'], mountpoint.split("/")[-1]))
     volume.finish_attach()
     defer.returnValue(True)
Exemplo n.º 5
0
 def detach_volume(self, instance_id, volume_id):
     """ detach a volume from an instance """
     # despite the documentation, virsh detach-disk just wants the device
     # name without the leading /dev/
     volume = storage.get_volume(volume_id)
     target = volume['mountpoint'].rpartition('/dev/')[2]
     utils.runthis("Detached Volume: %s",
                   "sudo virsh detach-disk %s %s " % (instance_id, target))
     volume.finish_detach()
     return defer.succeed(True)
Exemplo n.º 6
0
Arquivo: node.py Projeto: sorenh/cc
 def detach_volume(self, instance_id, volume_id):
     """ detach a volume from an instance """
     # despite the documentation, virsh detach-disk just wants the device
     # name without the leading /dev/
     volume = storage.get_volume(volume_id)
     target = volume['mountpoint'].rpartition('/dev/')[2]
     utils.runthis("Detached Volume: %s", "sudo virsh detach-disk %s %s "
             % (instance_id, target))
     volume.finish_detach()
     return defer.succeed(True)
Exemplo n.º 7
0
    def test_run_create_volume(self):
        vol_size = '0'
        user_id = 'fake'
        project_id = 'fake'
        volume_id = self.mystorage.create_volume(vol_size, user_id, project_id)
        # TODO(termie): get_volume returns differently than create_volume
        self.assertEqual(volume_id, storage.get_volume(volume_id)['volume_id'])

        rv = self.mystorage.delete_volume(volume_id)
        self.assertRaises(exception.Error, storage.get_volume, volume_id)
Exemplo n.º 8
0
    def test_run_create_volume(self):
        vol_size = '0'
        user_id = 'fake'
        project_id = 'fake'
        volume_id = self.mystorage.create_volume(vol_size, user_id, project_id)
        # TODO(termie): get_volume returns differently than create_volume
        self.assertEqual(volume_id,
                         storage.get_volume(volume_id)['volume_id'])

        rv = self.mystorage.delete_volume(volume_id)
        self.assertRaises(exception.Error,
                          storage.get_volume,
                          volume_id)
Exemplo n.º 9
0
Arquivo: cloud.py Projeto: sorenh/cc
 def volumes(self):
     """ returns a list of all volumes """
     for volume_id in datastore.Redis.instance().smembers("volumes"):
         volume = storage.get_volume(volume_id)
         yield volume
Exemplo n.º 10
0
Arquivo: cloud.py Projeto: sorenh/cc
 def _get_volume(self, context, volume_id):
     volume = storage.get_volume(volume_id)
     if context.user.is_admin() or volume['project_id'] == context.project.id:
         return volume
     raise exception.NotFound('Volume %s could not be found' % volume_id)
Exemplo n.º 11
0
 def volumes(self):
     """ returns a list of all volumes """
     for volume_id in datastore.Redis.instance().smembers("volumes"):
         volume = storage.get_volume(volume_id)
         yield volume
Exemplo n.º 12
0
 def _get_volume(self, context, volume_id):
     volume = storage.get_volume(volume_id)
     if context.user.is_admin(
     ) or volume['project_id'] == context.project.id:
         return volume
     raise exception.NotFound('Volume %s could not be found' % volume_id)