Пример #1
0
 def test__snapshot_removed_not_present(self):
     vol = objects.Volume(self.backend,
                          name='vol_name', description='vol_desc', size=10)
     snap = objects.Snapshot(vol)
     snap2 = objects.Snapshot(vol)
     vol._snapshots = [snap2]
     vol._ovo.snapshots.objects = [snap2._ovo]
     # Just check it doesn't break or remove any other snaps
     vol._snapshot_removed(snap)
     self.assertEqual([snap2], vol._snapshots)
     self.assertEqual([snap2._ovo], vol._ovo.snapshots.objects)
Пример #2
0
 def test__snapshot_removed(self):
     vol = objects.Volume(self.backend,
                          name='vol_name', description='vol_desc', size=10)
     snap = objects.Snapshot(vol)
     snap2 = objects.Snapshot(vol)
     snap_other_instance = objects.Snapshot(vol, id=snap.id,
                                            description='d')
     snap_other_instance2 = objects.Snapshot(vol, id=snap.id,
                                             description='e')
     vol._snapshots = [snap2, snap_other_instance]
     vol._ovo.snapshots.objects = [snap2._ovo, snap_other_instance2._ovo]
     # Just check it doesn't break or remove any other snaps
     vol._snapshot_removed(snap)
     self.assertEqual([snap2], vol._snapshots)
     self.assertEqual([snap2._ovo], vol._ovo.snapshots.objects)
Пример #3
0
 def test__snapshot_removed_not_loaded(self):
     vol = objects.Volume(self.backend,
                          name='vol_name', description='vol_desc', size=10)
     vol._snapshots = None
     snap = objects.Snapshot(vol)
     # Just check it doesn't break
     vol._snapshot_removed(snap)
Пример #4
0
    def test_snap_to_and_from(self):
        vol = objects.Volume(self.backend, size=10)
        snap = objects.Snapshot(vol, name='disk')
        json_data = snap.json

        # Confirm vol.json property is equivalent to the non simplified version
        self.assertEqual(json_data, snap.to_json(simplified=False))
        snap2 = objects.Snapshot.load(json_data)
        self.assertEqual(snap.json, snap2.json)
Пример #5
0
 def get_snapshots(self, snapshot_id=None, snapshot_name=None,
                   volume_id=None):
     filters = self._build_filter(id=snapshot_id, volume_id=volume_id,
                                  display_name=snapshot_name)
     LOG.debug('get_snapshots for %s', filters)
     ovos = cinder_objs.SnapshotList.get_all(objects.CONTEXT,
                                             filters=filters)
     result = [objects.Snapshot(None, __ovo=ovo) for ovo in ovos.objects]
     return result
Пример #6
0
 def setUp(self):
     super(TestSnapshot, self).setUp()
     self.vol = objects.Volume(self.backend_name,
                               size=10,
                               extra_specs={'e': 'v'},
                               qos_specs={'q': 'qv'})
     self.snap = objects.Snapshot(self.vol,
                                  name='my_snap',
                                  description='my_desc')
     self.vol._snapshots.append(self.snap)
     self.vol._ovo.snapshots.objects.append(self.snap._ovo)
Пример #7
0
    def test_vol_to_and_from(self):
        vol = objects.Volume(self.backend, size=10)
        snap = objects.Snapshot(vol, name='disk')

        # Associate the snapshot with the volume
        vol._snapshots = None
        with mock.patch.object(vol.persistence,
                               'get_snapshots',
                               return_value=[snap]):
            vol.snapshots
        self.assertEqual(1, len(vol.snapshots))

        json_data = vol.json

        # Confirm vol.json property is equivalent to the non simplified version
        self.assertEqual(json_data, vol.to_json(simplified=False))
        vol2 = objects.Volume.load(json_data)
        # Check snapshots are recovered as well
        self.assertEqual(1, len(vol2.snapshots))
        self.assertEqual(vol.json, vol2.json)
Пример #8
0
    def test_snapshots_lazy_loading(self):
        vol = objects.Volume(self.backend, size=10)
        vol._snapshots = None

        snaps = [objects.Snapshot(vol, name='my_snap')]
        # Persistence retrieves Snapshots without the Volume, just volume_id
        snaps[0]._ovo.volume = None

        mock_get_snaps = self.persistence.get_snapshots
        mock_get_snaps.return_value = snaps

        result = vol.snapshots

        mock_get_snaps.called_once_with(vol.id)
        self.assertEqual(snaps, result)
        self.assertEqual(snaps, vol._snapshots)
        self.assertEqual(1, len(vol._ovo.snapshots))
        self.assertEqual(vol._ovo.snapshots[0], result[0]._ovo)
        # There is no second call when we reference it again
        mock_get_snaps.reset_mock()
        result = vol.snapshots
        self.assertEqual(snaps, result)
        mock_get_snaps.not_called()
Пример #9
0
 def test_init_from_ovo(self):
     snap2 = objects.Snapshot(None, __ovo=self.snap._ovo)
     self.assertEqual(self.snap.backend, snap2.backend)
     self.assertEqual(self.snap._ovo, snap2._ovo)
     self.assertEqual(self.vol, self.snap.volume)
Пример #10
0
 def test_delete_error_with_snaps(self):
     vol = objects.Volume(self.backend_name, size=10, status='available')
     snap = objects.Snapshot(vol)
     vol._snapshots.append(snap)
     self.assertRaises(exception.InvalidVolume, vol.delete)
     self.assertEqual('available', vol._ovo.status)