Ejemplo n.º 1
0
def fake_snapshot_obj(context, **updates):
    expected_attrs = updates.pop('expected_attrs', None) or []
    if 'volume' in updates and 'volume' not in expected_attrs:
        expected_attrs.append('volume')
    return snapshot.Snapshot._from_db_object(context, snapshot.Snapshot(),
                                             fake_db_snapshot(**updates),
                                             expected_attrs=expected_attrs)
Ejemplo n.º 2
0
    def test_create_volume_from_snapshot(self, _copy_volume):
        TEST_SNAP = obj_snap.Snapshot(volume_id=fake.VOLUME_ID,
                                      volume_size=1024,
                                      provider_location='/dev/loop1')
        TEST_VOLUME = obj_volume.Volume(id=fake.VOLUME_ID,
                                        name_id=fake.VOLUME_NAME_ID,
                                        size=1,
                                        display_name='vol1',
                                        provider_location='/dev/loop2')

        with mock.patch.object(self.drv,
                               'find_appropriate_size_device',
                               return_value='/dev/loop2') as fasd_mocked:
            with mock.patch.object(self.drv, '_get_devices_sizes',
                                   return_value={'/dev/loop2': 1024}) as \
                    gds_mocked:
                with mock.patch.object(self.drv,
                                       '_update_provider_location') as \
                        upl_mocked:
                    volutils.copy_volume('/dev/loop1',
                                         fasd_mocked,
                                         1024,
                                         mock.sentinel,
                                         execute=self.drv._execute)
                    self.drv.create_volume_from_snapshot(
                        TEST_VOLUME, TEST_SNAP)
                    fasd_mocked.assert_called_once_with(TEST_SNAP.volume_size)
                    gds_mocked.assert_called_once_with(['/dev/loop2'])
                    upl_mocked.assert_called_once_with(TEST_VOLUME,
                                                       '/dev/loop2')
Ejemplo n.º 3
0
 def test_save(self, snapshot_update):
     snapshot = snapshot_obj.Snapshot._from_db_object(
         self.context, snapshot_obj.Snapshot(), fake_snapshot)
     snapshot.display_name = 'foobar'
     snapshot.save(self.context)
     snapshot_update.assert_called_once_with(self.context, snapshot.id,
                                             {'display_name': 'foobar'})
Ejemplo n.º 4
0
 def test_obj_load_attr(self, volume_get_by_id):
     snapshot = snapshot_obj.Snapshot._from_db_object(
         self.context, snapshot_obj.Snapshot(), fake_snapshot)
     volume = volume_obj.Volume(context=self.context, id=2)
     volume_get_by_id.return_value = volume
     self.assertEqual(volume, snapshot.volume)
     volume_get_by_id.assert_called_once_with(self.context,
                                              snapshot.volume_id)
Ejemplo n.º 5
0
 def test_obj_fields(self):
     volume = volume_obj.Volume(context=self.context, id=2, _name_id=2)
     snapshot = snapshot_obj.Snapshot(context=self.context,
                                      id=1,
                                      volume=volume)
     self.assertEqual(['name', 'volume_name'], snapshot.obj_extra_fields)
     self.assertEqual('snapshot-1', snapshot.name)
     self.assertEqual('volume-2', snapshot.volume_name)
Ejemplo n.º 6
0
 def test_delete_metadata_key(self, snapshot_metadata_delete):
     snapshot = snapshot_obj.Snapshot(self.context, id=1)
     snapshot.metadata = {'key1': 'value1', 'key2': 'value2'}
     self.assertEqual({}, snapshot._orig_metadata)
     snapshot.delete_metadata_key(self.context, 'key2')
     self.assertEqual({'key1': 'value1'}, snapshot.metadata)
     snapshot_metadata_delete.assert_called_once_with(
         self.context, '1', 'key2')
Ejemplo n.º 7
0
    def test_create_snapshot_with_not_available_volume(self):
        TEST_VOLUME = obj_volume.Volume(id=fake.VOLUME_ID,
                                        name_id=fake.VOLUME_NAME_ID,
                                        size=1,
                                        display_name='vol1',
                                        status='in use',
                                        provider_location='/dev/loop1')
        TEST_SNAP = obj_snap.Snapshot(id=fake.SNAPSHOT_ID,
                                      volume_id=fake.VOLUME_ID,
                                      volume_size=1024,
                                      provider_location='/dev/loop2',
                                      volume=TEST_VOLUME)

        self.assertRaises(cinder.exception.CinderException,
                          self.drv.create_snapshot, TEST_SNAP)
Ejemplo n.º 8
0
    def test_delete_snapshot(self, _clear_volume, _exists):
        TEST_SNAP = obj_snap.Snapshot(volume_id=fake.VOLUME_ID,
                                      provider_location='/dev/loop1',
                                      status=fields.SnapshotStatus.AVAILABLE)

        with mock.patch.object(self.drv, 'local_path',
                               return_value='/dev/loop1') as lp_mocked:
            with mock.patch.object(self.drv, '_get_devices_sizes',
                                   return_value={'/dev/loop1': 1}) as \
                    gds_mocked:
                volutils.clear_volume(gds_mocked, lp_mocked)
                self.drv.delete_snapshot(TEST_SNAP)
                lp_mocked.assert_called_once_with(TEST_SNAP)
                gds_mocked.assert_called_once_with(['/dev/loop1'])

        self.assertTrue(_exists.called)
        self.assertTrue(_clear_volume.called)
Ejemplo n.º 9
0
 def test_save_with_metadata(self, snapshot_update,
                             snapshot_metadata_update):
     snapshot = snapshot_obj.Snapshot._from_db_object(
         self.context, snapshot_obj.Snapshot(), fake_snapshot)
     snapshot.display_name = 'foobar'
     snapshot.metadata = {'key1': 'value1'}
     self.assertEqual(
         {
             'display_name': 'foobar',
             'metadata': {
                 'key1': 'value1'
             }
         }, snapshot.obj_get_changes())
     snapshot.save(self.context)
     snapshot_update.assert_called_once_with(self.context, snapshot.id,
                                             {'display_name': 'foobar'})
     snapshot_metadata_update.assert_called_once_with(
         self.context, '1', {'key1': 'value1'}, True)
Ejemplo n.º 10
0
    """Return predefined volume info."""
    return TEST_VOLUME[int(volume_id.replace("-", ""))]


TEST_SNAPSHOT = []
snapshot = {}
snapshot['id'] = '10000000-0000-0000-0000-{0:012d}'.format(0)
snapshot['name'] = 'TEST_SNAPSHOT{0:d}'.format(0)
snapshot['provider_location'] = '{0:d}'.format(1)
snapshot['status'] = 'available'
snapshot['volume_id'] = '00000000-0000-0000-0000-{0:012d}'.format(0)
snapshot['volume'] = _volume_get(None, snapshot['volume_id'])
snapshot['volume_name'] = 'test-volume{0:d}'.format(0)
snapshot['volume_size'] = 128
snapshot = obj_snap.Snapshot._from_db_object(
    CTXT, obj_snap.Snapshot(), fake_snapshot.fake_db_snapshot(**snapshot))
TEST_SNAPSHOT.append(snapshot)

# Dummy response for REST API
POST_SESSIONS_RESULT = {
    "token": "b74777a3-f9f0-4ea8-bd8f-09847fac48d3",
    "sessionId": 0,
}

GET_PORTS_RESULT = {
    "data": [
        {
            "portId": CONFIG_MAP['port_id'],
            "portType": "FIBRE",
            "portAttributes": ["TAR", "MCU", "RCU", "ELUN"],
            "fabricMode": True,
Ejemplo n.º 11
0
def fake_snapshot_obj(context, **updates):
    expected_attrs = updates.pop('expected_attrs', None)
    return snapshot.Snapshot._from_db_object(context,
                                             snapshot.Snapshot(),
                                             fake_db_snapshot(**updates),
                                             expected_attrs=expected_attrs)
Ejemplo n.º 12
0
 def test_destroy(self, snapshot_destroy):
     snapshot = snapshot_obj.Snapshot(context=self.context, id=1)
     snapshot.destroy()
     snapshot_destroy.assert_called_once_with(self.context, '1')
Ejemplo n.º 13
0
 def test_create_with_provider_id(self, snapshot_create):
     snapshot = snapshot_obj.Snapshot(context=self.context)
     snapshot.create()
     self.assertEqual('1111-aaaa', snapshot.provider_id)
Ejemplo n.º 14
0
 def test_create(self, snapshot_create):
     snapshot = snapshot_obj.Snapshot(context=self.context)
     snapshot.create()
     self.assertEqual(fake_snapshot['id'], snapshot.id)
     self.assertEqual(fake_snapshot['volume_id'], snapshot.volume_id)
Ejemplo n.º 15
0
 def test_reset_changes(self):
     snapshot = snapshot_obj.Snapshot()
     snapshot.metadata = {'key1': 'value1'}
     self.assertEqual({}, snapshot._orig_metadata)
     snapshot.obj_reset_changes(['metadata'])
     self.assertEqual({'key1': 'value1'}, snapshot._orig_metadata)