diff --git a/nova/api/openstack/compute/security_groups.py b/nova/api/openstack/compute/security_groups.py index d1524707805f..cd036f6ef02a 100644 --- a/nova/api/openstack/compute/security_groups.py +++ b/nova/api/openstack/compute/security_groups.py @@ -443,7 +443,7 @@ class SecurityGroupsOutputController(wsgi.Controller): instance = req.get_db_instance(server['id']) groups = instance.get(key) if groups: - server[ATTRIBUTE_NAME] = [{"name": group["name"]} + server[ATTRIBUTE_NAME] = [{"name": group.name} for group in groups] else: # If method is a POST we get the security groups intended for an diff --git a/nova/objects/security_group.py b/nova/objects/security_group.py index e158ae890067..853f35e99fdf 100644 --- a/nova/objects/security_group.py +++ b/nova/objects/security_group.py @@ -18,10 +18,8 @@ from nova.objects import base from nova.objects import fields -# TODO(berrange): Remove NovaObjectDictCompat @base.NovaObjectRegistry.register -class SecurityGroup(base.NovaPersistentObject, base.NovaObject, - base.NovaObjectDictCompat): +class SecurityGroup(base.NovaPersistentObject, base.NovaObject): # Version 1.0: Initial version # Version 1.1: String attributes updated to support unicode VERSION = '1.1' @@ -38,7 +36,7 @@ class SecurityGroup(base.NovaPersistentObject, base.NovaObject, def _from_db_object(context, secgroup, db_secgroup): # NOTE(danms): These are identical right now for field in secgroup.fields: - secgroup[field] = db_secgroup[field] + setattr(secgroup, field, db_secgroup[field]) secgroup._context = context secgroup.obj_reset_changes() return secgroup diff --git a/nova/tests/unit/api/openstack/compute/test_scheduler_hints.py b/nova/tests/unit/api/openstack/compute/test_scheduler_hints.py index 73c029e78ec3..304561e3007b 100644 --- a/nova/tests/unit/api/openstack/compute/test_scheduler_hints.py +++ b/nova/tests/unit/api/openstack/compute/test_scheduler_hints.py @@ -39,7 +39,7 @@ class SchedulerHintsTestCaseV21(test.TestCase): def setUp(self): super(SchedulerHintsTestCaseV21, self).setUp() - self.fake_instance = fakes.stub_instance(1, uuid=UUID) + self.fake_instance = fakes.stub_instance_obj(None, id=1, uuid=UUID) self._set_up_router() def _set_up_router(self): diff --git a/nova/tests/unit/objects/test_instance.py b/nova/tests/unit/objects/test_instance.py index 60ad90fb97b3..ab4773551019 100644 --- a/nova/tests/unit/objects/test_instance.py +++ b/nova/tests/unit/objects/test_instance.py @@ -829,7 +829,7 @@ class _TestInstanceObject(object): for index, group in enumerate(fake_inst['security_groups']): for key in group: self.assertEqual(group[key], - inst.security_groups[index][key]) + getattr(inst.security_groups[index], key)) self.assertIsInstance(inst.security_groups[index], security_group.SecurityGroup) self.assertEqual(set(), inst.security_groups.obj_what_changed()) diff --git a/nova/tests/unit/objects/test_security_group.py b/nova/tests/unit/objects/test_security_group.py index b6b50dc80cf4..982e502f6784 100644 --- a/nova/tests/unit/objects/test_security_group.py +++ b/nova/tests/unit/objects/test_security_group.py @@ -17,6 +17,7 @@ from nova.objects import instance from nova.objects import security_group from nova.tests.unit.objects import test_objects from nova.tests import uuidsentinel as uuids +from oslo_versionedobjects import fixture as ovo_fixture fake_secgroup = { @@ -42,8 +43,8 @@ class _TestSecurityGroupObject(object): db.security_group_get(self.context, 1).AndReturn(fake_secgroup) self.mox.ReplayAll() secgroup = security_group.SecurityGroup.get(self.context, 1) - self.assertEqual(self._fix_deleted(fake_secgroup), - dict(secgroup.items())) + ovo_fixture.compare_obj(self, secgroup, + self._fix_deleted(fake_secgroup)) self.assertEqual(secgroup.obj_what_changed(), set()) def test_get_by_name(self): @@ -54,8 +55,8 @@ class _TestSecurityGroupObject(object): secgroup = security_group.SecurityGroup.get_by_name(self.context, 'fake-project', 'fake-name') - self.assertEqual(self._fix_deleted(fake_secgroup), - dict(secgroup.items())) + ovo_fixture.compare_obj(self, secgroup, + self._fix_deleted(fake_secgroup)) self.assertEqual(secgroup.obj_what_changed(), set()) def test_in_use(self): @@ -78,8 +79,8 @@ class _TestSecurityGroupObject(object): fake_secgroup) secgroup.description = 'foobar' secgroup.save() - self.assertEqual(self._fix_deleted(updated_secgroup), - dict(secgroup.items())) + ovo_fixture.compare_obj(self, secgroup, + self._fix_deleted(updated_secgroup)) self.assertEqual(secgroup.obj_what_changed(), set()) def test_save_no_changes(self): @@ -99,8 +100,8 @@ class _TestSecurityGroupObject(object): self.context, security_group.SecurityGroup(self.context), fake_secgroup) secgroup.refresh() - self.assertEqual(self._fix_deleted(updated_secgroup), - dict(secgroup.items())) + ovo_fixture.compare_obj(self, secgroup, + self._fix_deleted(updated_secgroup)) self.assertEqual(secgroup.obj_what_changed(), set()) @@ -130,7 +131,7 @@ class _TestSecurityGroupListObject(object): self.assertIsInstance(secgroup_list[i], security_group.SecurityGroup) self.assertEqual(fake_secgroups[i]['id'], - secgroup_list[i]['id']) + secgroup_list[i].id) self.assertEqual(secgroup_list[i]._context, self.context) def test_get_by_project(self): @@ -145,7 +146,7 @@ class _TestSecurityGroupListObject(object): self.assertIsInstance(secgroup_list[i], security_group.SecurityGroup) self.assertEqual(fake_secgroups[i]['id'], - secgroup_list[i]['id']) + secgroup_list[i].id) def test_get_by_instance(self): inst = instance.Instance() @@ -161,7 +162,7 @@ class _TestSecurityGroupListObject(object): self.assertIsInstance(secgroup_list[i], security_group.SecurityGroup) self.assertEqual(fake_secgroups[i]['id'], - secgroup_list[i]['id']) + secgroup_list[i].id) class TestSecurityGroupListObject(test_objects._LocalTest, diff --git a/nova/tests/unit/virt/libvirt/test_firewall.py b/nova/tests/unit/virt/libvirt/test_firewall.py index 79f8814e3e7f..8cc3d33f31a7 100644 --- a/nova/tests/unit/virt/libvirt/test_firewall.py +++ b/nova/tests/unit/virt/libvirt/test_firewall.py @@ -171,40 +171,40 @@ class IptablesFirewallTestCase(test.NoDBTestCase): name='testsourcegroup', description='src group') - r1 = objects.SecurityGroupRule(parent_group_id=secgroup['id'], + r1 = objects.SecurityGroupRule(parent_group_id=secgroup.id, protocol='icmp', from_port=-1, to_port=-1, cidr='192.168.11.0/24', grantee_group=None) - r2 = objects.SecurityGroupRule(parent_group_id=secgroup['id'], + r2 = objects.SecurityGroupRule(parent_group_id=secgroup.id, protocol='icmp', from_port=8, to_port=-1, cidr='192.168.11.0/24', grantee_group=None) - r3 = objects.SecurityGroupRule(parent_group_id=secgroup['id'], + r3 = objects.SecurityGroupRule(parent_group_id=secgroup.id, protocol='tcp', from_port=80, to_port=81, cidr='192.168.10.0/24', grantee_group=None) - r4 = objects.SecurityGroupRule(parent_group_id=secgroup['id'], + r4 = objects.SecurityGroupRule(parent_group_id=secgroup.id, protocol='tcp', from_port=80, to_port=81, cidr=None, grantee_group=src_secgroup, - group_id=src_secgroup['id']) + group_id=src_secgroup.id) - r5 = objects.SecurityGroupRule(parent_group_id=secgroup['id'], + r5 = objects.SecurityGroupRule(parent_group_id=secgroup.id, protocol=None, cidr=None, grantee_group=src_secgroup, - group_id=src_secgroup['id']) + group_id=src_secgroup.id) secgroup_list = objects.SecurityGroupList() secgroup_list.objects.append(secgroup) @@ -217,7 +217,7 @@ class IptablesFirewallTestCase(test.NoDBTestCase): objects=[r1, r2, r3, r4, r5]) def _fake_instlist(ctxt, id): - if id == src_secgroup['id']: + if id == src_secgroup.id: insts = objects.InstanceList() insts.objects.append(src_instance_ref) return insts