def test_get_changed_fields_snapshot(self): vol = cinderlib.Volume(self.backend, size=1, extra_specs={'k': 'v'}) snap = cinderlib.Snapshot(vol) self.persistence.set_snapshot(snap) snap._ovo.display_name = "abcde" result = self.persistence.get_changed_fields(snap) self.assertEqual(result, {'display_name': snap._ovo.display_name})
def test_set_snapshot(self): vol = cinderlib.Volume(self.backend, size=1, name='disk') snap = cinderlib.Snapshot(vol, name='disk') self.assertDictEqual({}, self.persistence.snapshots) self.persistence.set_snapshot(snap) self.assertDictEqual({snap.id: snap}, self.persistence.snapshots)
def test_set_connection(self): vol = cinderlib.Volume(self.backend, size=1, name='disk') conn = cinderlib.Connection(self.backend, volume=vol, connector={}) self.assertDictEqual({}, self.persistence.connections) self.persistence.set_connection(conn) self.assertDictEqual({conn.id: conn}, self.persistence.connections)
def test_create_volume_with_default_volume_type(self): vol = cinderlib.Volume(self.backend, size=1, name='disk') self.persistence.set_volume(vol) self.assertEqual(self.persistence.DEFAULT_TYPE.id, vol.volume_type_id) self.assertIs(self.persistence.DEFAULT_TYPE, vol.volume_type) res = sqla_api.volume_type_get(self.context, vol.volume_type_id) self.assertIsNotNone(res) self.assertEqual('__DEFAULT__', res['name'])
def create_volumes(self, data): vols = [] for d in data: d.setdefault('backend_or_vol', self.backend) vol = cinderlib.Volume(**d) vols.append(vol) self.persistence.set_volume(vol) return self.sorted(vols)
def test_volume_refresh_with_conn_and_snaps(self, get_conns_mock, get_snaps_mock, get_mock): vol = self.create_n_volumes(1)[0] vol_id = vol.id vol.local_attach = mock.sentinel.local_attach get_mock.return_value = cinderlib.Volume(vol) vol.refresh() get_mock.assert_called_once_with(vol_id) get_conns_mock.assert_called_once_with() get_snaps_mock.assert_called_once_with() self.assertIs(mock.sentinel.local_attach, vol.local_attach)
def test_volume_refresh(self, get_conns_mock, get_snaps_mock, get_mock): vol = self.create_n_volumes(1)[0] vol_id = vol.id # This is to simulate situation where the persistence does lazy loading vol._snapshots = vol._connections = None get_mock.return_value = cinderlib.Volume(vol) vol.refresh() get_mock.assert_called_once_with(vol_id) get_conns_mock.assert_not_called() get_snaps_mock.assert_not_called() self.assertIsNone(vol.local_attach)
def test_set_volume(self): res = sqla_api.volume_get_all(self.context) self.assertListEqual([], res) vol = cinderlib.Volume(self.backend, size=1, name='disk') expected = {'availability_zone': vol.availability_zone, 'size': vol.size, 'name': vol.name} self.persistence.set_volume(vol) db_vol = sqla_api.volume_get(self.context, vol.id) actual = {'availability_zone': db_vol.availability_zone, 'size': db_vol.size, 'name': db_vol.display_name} self.assertDictEqual(expected, actual)
def test_set_snapshot(self): vol = cinderlib.Volume(self.backend, size=1, name='disk') snap = cinderlib.Snapshot(vol, name='disk') self.assertEqual(0, len(sqla_api.snapshot_get_all(self.context))) self.persistence.set_snapshot(snap) db_entries = sqla_api.snapshot_get_all(self.context) self.assertEqual(1, len(db_entries)) ovo_snap = cinder_ovos.Snapshot(self.context) ovo_snap._from_db_object(ovo_snap._context, ovo_snap, db_entries[0]) cl_snap = cinderlib.Snapshot(vol, __ovo=ovo_snap) self.assertEqualObj(snap, cl_snap)
def test_set_connection(self): vol = cinderlib.Volume(self.backend, size=1, name='disk') conn = cinderlib.Connection(self.backend, volume=vol, connector={}) self.assertEqual(0, len(sqla_api.volume_attachment_get_all(self.context))) self.persistence.set_connection(conn) db_entries = sqla_api.volume_attachment_get_all(self.context) self.assertEqual(1, len(db_entries)) ovo_conn = cinder_ovos.VolumeAttachment(self.context) ovo_conn._from_db_object(ovo_conn._context, ovo_conn, db_entries[0]) cl_conn = cinderlib.Connection(vol.backend, volume=vol, __ovo=ovo_conn) self.assertEqualObj(conn, cl_conn)
def test_delete_volume_not_found(self): vols = self.create_n_volumes(2) fake_vol = cinderlib.Volume(backend_or_vol=self.backend) self.persistence.delete_volume(fake_vol) res = self.persistence.get_volumes() self.assertListEqualObj(vols, self.sorted(res))
def test_set_volume(self): vol = cinderlib.Volume(self.backend, size=1, name='disk') self.assertDictEqual({}, self.persistence.volumes) self.persistence.set_volume(vol) self.assertDictEqual({vol.id: vol}, self.persistence.volumes)