diff options
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/openstack/fakes.py | 5 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 9 | ||||
| -rw-r--r-- | nova/tests/objects/test_instance.py | 37 |
3 files changed, 48 insertions, 3 deletions
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py index f05561ff2..a4edf9e89 100644 --- a/nova/tests/api/openstack/fakes.py +++ b/nova/tests/api/openstack/fakes.py @@ -488,7 +488,10 @@ def stub_instance(id, user_id=None, project_id=None, host=None, key_data = '' if security_groups is None: - security_groups = [{"id": 1, "name": "test"}] + security_groups = [{"id": 1, "name": "test", "description": "Foo:", + "project_id": "project", "user_id": "user", + "created_at": None, "updated_at": None, + "deleted_at": None, "deleted": False}] # ReservationID isn't sent back, hack it in there. server_name = name or "server%s" % id diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 7953f8b63..cb9498b1a 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -262,6 +262,7 @@ class BaseTestCase(test.TestCase): inst['created_at'] = timeutils.utcnow() inst['updated_at'] = timeutils.utcnow() inst['launched_at'] = timeutils.utcnow() + inst['security_groups'] = [] inst.update(params) _create_service_entries(self.context.elevated(), {'fake_zone': [inst['host']]}) @@ -275,7 +276,10 @@ class BaseTestCase(test.TestCase): def _fake_db_create(_ctxt, inst): for k, v in inst.items(): - setattr(instance, k, v) + if k == 'security_groups': + setattr(instance, k, v or None) + else: + setattr(instance, k, v) return instance self.stubs.Set(db, 'instance_create', _fake_db_create) @@ -4851,7 +4855,8 @@ class ComputeTestCase(BaseTestCase): inst = dict(fakes.stub_instance(1), deleted_at=None, created_at=None, updated_at=None, deleted=0, info_cache={'instance_uuid': 'fake-uuid', - 'network_info': None}) + 'network_info': None}, + security_groups=None) startup_instances = [inst, inst, inst] def _do_mock_calls(defer_iptables_apply): diff --git a/nova/tests/objects/test_instance.py b/nova/tests/objects/test_instance.py index 09ce70355..f5128e73f 100644 --- a/nova/tests/objects/test_instance.py +++ b/nova/tests/objects/test_instance.py @@ -20,6 +20,7 @@ from nova import context from nova import db from nova.objects import base from nova.objects import instance +from nova.objects import security_group from nova.openstack.common import timeutils from nova.tests.api.openstack import fakes from nova.tests.objects import test_objects @@ -41,6 +42,7 @@ class _TestInstanceObject(object): tzinfo=iso8601.iso8601.Utc(), microsecond=0)) fake_instance['deleted'] = False fake_instance['info_cache']['instance_uuid'] = fake_instance['uuid'] + fake_instance['security_groups'] = None return fake_instance def test_datetime_deserialization(self): @@ -213,6 +215,40 @@ class _TestInstanceObject(object): inst.info_cache.network_info = 'bar' inst.save() + def test_with_security_groups(self): + ctxt = context.get_admin_context() + fake_inst = dict(self.fake_instance) + fake_uuid = fake_inst['uuid'] + fake_inst['security_groups'] = [ + {'id': 1, 'name': 'secgroup1', 'description': 'fake-desc', + 'user_id': 'fake-user', 'project_id': 'fake_project', + 'created_at': None, 'updated_at': None, 'deleted_at': None, + 'deleted': False}, + {'id': 2, 'name': 'secgroup2', 'description': 'fake-desc', + 'user_id': 'fake-user', 'project_id': 'fake_project', + 'created_at': None, 'updated_at': None, 'deleted_at': None, + 'deleted': False}, + ] + self.mox.StubOutWithMock(db, 'instance_get_by_uuid') + self.mox.StubOutWithMock(db, 'instance_update_and_get_original') + self.mox.StubOutWithMock(db, 'security_group_update') + db.instance_get_by_uuid(ctxt, fake_uuid, []).AndReturn(fake_inst) + db.security_group_update(ctxt, 1, {'description': 'changed'} + ).AndReturn(fake_inst['security_groups'][0]) + self.mox.ReplayAll() + inst = instance.Instance.get_by_uuid(ctxt, fake_uuid) + self.assertEqual(len(inst.security_groups), 2) + for index, group in enumerate(fake_inst['security_groups']): + for key in group: + self.assertEqual(group[key], + inst.security_groups[index][key]) + self.assertTrue(isinstance(inst.security_groups[index], + security_group.SecurityGroup)) + self.assertEqual(inst.security_groups.obj_what_changed(), set()) + inst.security_groups[0].description = 'changed' + inst.save() + self.assertEqual(inst.security_groups.obj_what_changed(), set()) + def test_iteritems_with_extra_attrs(self): self.stubs.Set(instance.Instance, 'name', 'foo') inst = instance.Instance() @@ -248,6 +284,7 @@ class _TestInstanceListObject(object): tzinfo=iso8601.iso8601.Utc(), microsecond=0)) fake_instance['info_cache'] = {'network_info': 'foo', 'instance_uuid': fake_instance['uuid']} + fake_instance['security_groups'] = [] fake_instance['deleted'] = 0 if updates: fake_instance.update(updates) |
