summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJoe Gordon <jogo@cloudscaling.com>2012-11-28 16:31:57 -0800
committerJoe Gordon <joe.gordon0@gmail.com>2012-11-28 20:48:40 -0800
commit4e6bae7a00a1a5768a20f54f484299d7396123d5 (patch)
tree1867837292d048ed15bf03198bc9e42f26239b4a /nova
parent0666348b033b1838eef37c0f7e9db0d9e7bcb03a (diff)
Access DB values as dict not as attributes
We cannot assume nova.db.api will be returning sqlalchemy objects with attributes, instead treat return values as dicts Part of blueprint db-api-cleanup Change-Id: Icb955118aabff1d8f9ee7c3e95f8f2b3ffc671ee
Diffstat (limited to 'nova')
-rw-r--r--nova/api/ec2/cloud.py25
-rw-r--r--nova/compute/api.py18
-rw-r--r--nova/tests/api/ec2/test_cloud.py6
-rw-r--r--nova/tests/compute/test_compute.py26
-rw-r--r--nova/tests/compute/test_compute_utils.py8
5 files changed, 42 insertions, 41 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index df6f17fb0..ab59205a9 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -242,7 +242,7 @@ class CloudController(object):
disabled_services = db.service_get_all(context, True)
available_zones = []
- for zone in [service.availability_zone for service
+ for zone in [service['availability_zone'] for service
in enabled_services]:
if not zone in available_zones:
available_zones.append(zone)
@@ -277,12 +277,13 @@ class CloudController(object):
zone_hosts = {}
host_services = {}
for service in enabled_services:
- zone_hosts.setdefault(service.availability_zone, [])
- if not service.host in zone_hosts[service.availability_zone]:
- zone_hosts[service.availability_zone].append(service.host)
+ zone_hosts.setdefault(service['availability_zone'], [])
+ if not service['host'] in zone_hosts[service['availability_zone']]:
+ zone_hosts[service['availability_zone']].append(
+ service['host'])
- host_services.setdefault(service.host, [])
- host_services[service.host].append(service)
+ host_services.setdefault(service['host'], [])
+ host_services[service['host']].append(service)
result = []
for zone in available_zones:
@@ -475,11 +476,11 @@ class CloudController(object):
def _format_security_group(self, context, group):
g = {}
- g['groupDescription'] = group.description
- g['groupName'] = group.name
- g['ownerId'] = group.project_id
+ g['groupDescription'] = group['description']
+ g['groupName'] = group['name']
+ g['ownerId'] = group['project_id']
g['ipPermissions'] = []
- for rule in group.rules:
+ for rule in group['rules']:
r = {}
r['groups'] = []
r['ipRanges'] = []
@@ -612,7 +613,7 @@ class CloudController(object):
rulesvalues = self._rule_args_to_dict(context, values)
self._validate_rulevalues(rulesvalues)
for values_for_rule in rulesvalues:
- values_for_rule['parent_group_id'] = security_group.id
+ values_for_rule['parent_group_id'] = security_group['id']
rule_ids.append(self.security_group_api.rule_exists(
security_group, values_for_rule))
@@ -645,7 +646,7 @@ class CloudController(object):
rulesvalues = self._rule_args_to_dict(context, values)
self._validate_rulevalues(rulesvalues)
for values_for_rule in rulesvalues:
- values_for_rule['parent_group_id'] = security_group.id
+ values_for_rule['parent_group_id'] = security_group['id']
if self.security_group_api.rule_exists(security_group,
values_for_rule):
err = _('%s - This rule already exists in group')
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 79db499bd..e377b0e32 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -2152,7 +2152,7 @@ class AggregateAPI(base.Base):
def create_aggregate(self, context, aggregate_name, availability_zone):
"""Creates the model for the aggregate."""
- zones = [s.availability_zone for s in
+ zones = [s['availability_zone'] for s in
self.db.service_get_all_by_topic(context,
CONF.compute_topic)]
if availability_zone in zones:
@@ -2214,7 +2214,7 @@ class AggregateAPI(base.Base):
# validates the host; ComputeHostNotFound is raised if invalid
service = self.db.service_get_all_compute_by_host(context, host)[0]
aggregate = self.db.aggregate_get(context, aggregate_id)
- if service.availability_zone != aggregate.availability_zone:
+ if service['availability_zone'] != aggregate['availability_zone']:
raise exception.InvalidAggregateAction(
action='add host',
aggregate_id=aggregate_id,
@@ -2237,8 +2237,8 @@ class AggregateAPI(base.Base):
def _get_aggregate_info(self, context, aggregate):
"""Builds a dictionary with aggregate props, metadata and hosts."""
- metadata = self.db.aggregate_metadata_get(context, aggregate.id)
- hosts = self.db.aggregate_host_get_all(context, aggregate.id)
+ metadata = self.db.aggregate_metadata_get(context, aggregate['id'])
+ hosts = self.db.aggregate_host_get_all(context, aggregate['id'])
result = dict(aggregate.iteritems())
# metadetails was not originally included here. We need to pull it
# back out to maintain API stability.
@@ -2473,7 +2473,7 @@ class SecurityGroupAPI(base.Base):
return groups
def destroy(self, context, security_group):
- if self.db.security_group_in_use(context, security_group.id):
+ if self.db.security_group_in_use(context, security_group['id']):
msg = _("Security group is still in use")
self.raise_invalid_group(msg)
@@ -2485,12 +2485,12 @@ class SecurityGroupAPI(base.Base):
LOG.exception(_("Failed to update usages deallocating "
"security group"))
- LOG.audit(_("Delete security group %s"), security_group.name,
+ LOG.audit(_("Delete security group %s"), security_group['name'],
context=context)
- self.db.security_group_destroy(context, security_group.id)
+ self.db.security_group_destroy(context, security_group['id'])
self.sgh.trigger_security_group_destroy_refresh(context,
- security_group.id)
+ security_group['id'])
# Commit the reservations
if reservations:
@@ -2726,7 +2726,7 @@ class SecurityGroupAPI(base.Base):
"""Indicates whether the specified rule values are already
defined in the given security group.
"""
- for rule in security_group.rules:
+ for rule in security_group['rules']:
is_duplicate = True
keys = ('group_id', 'cidr', 'from_port', 'to_port', 'protocol')
for key in keys:
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py
index 6a3caa0e5..bed4ac25b 100644
--- a/nova/tests/api/ec2/test_cloud.py
+++ b/nova/tests/api/ec2/test_cloud.py
@@ -660,9 +660,9 @@ class CloudTestCase(test.TestCase):
self.project_id, 'testgrp1')
get_rules = db.security_group_rule_get_by_security_group
- self.assertTrue(get_rules(self.context, group1.id))
+ self.assertTrue(get_rules(self.context, group1['id']))
self.cloud.delete_security_group(self.context, 'testgrp2')
- self.assertFalse(get_rules(self.context, group1.id))
+ self.assertFalse(get_rules(self.context, group1['id']))
def test_delete_security_group_in_use_by_instance(self):
"""Ensure that a group can not be deleted if in use by an instance."""
@@ -680,7 +680,7 @@ class CloudTestCase(test.TestCase):
'description': 'Test group'}
group = db.security_group_create(self.context, args)
- db.instance_add_security_group(self.context, inst.uuid, group.id)
+ db.instance_add_security_group(self.context, inst['uuid'], group['id'])
self.assertRaises(exception.InvalidGroup,
self.cloud.delete_security_group,
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index 96d1f4250..c4be414da 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -297,7 +297,7 @@ class ComputeTestCase(BaseTestCase):
instances = db.instance_get_all(self.context)
instance = instances[0]
- self.assertTrue(instance.config_drive)
+ self.assertTrue(instance['config_drive'])
finally:
db.instance_destroy(self.context, instance['uuid'])
@@ -312,7 +312,7 @@ class ComputeTestCase(BaseTestCase):
instances = db.instance_get_all(self.context)
instance = instances[0]
- self.assertTrue(instance.config_drive)
+ self.assertTrue(instance['config_drive'])
finally:
db.instance_destroy(self.context, instance['uuid'])
@@ -532,8 +532,8 @@ class ComputeTestCase(BaseTestCase):
instances = db.instance_get_all(self.context)
instance = instances[0]
- self.assertEqual(instance.access_ip_v4, '192.168.1.100')
- self.assertEqual(instance.access_ip_v6, '2001:db8:0:1::1')
+ self.assertEqual(instance['access_ip_v4'], '192.168.1.100')
+ self.assertEqual(instance['access_ip_v6'], '2001:db8:0:1::1')
finally:
db.instance_destroy(self.context, instance['uuid'])
@@ -546,8 +546,8 @@ class ComputeTestCase(BaseTestCase):
instances = db.instance_get_all(self.context)
instance = instances[0]
- self.assertFalse(instance.access_ip_v4)
- self.assertFalse(instance.access_ip_v6)
+ self.assertFalse(instance['access_ip_v4'])
+ self.assertFalse(instance['access_ip_v6'])
finally:
db.instance_destroy(self.context, instance['uuid'])
@@ -1368,7 +1368,7 @@ class ComputeTestCase(BaseTestCase):
self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['image_name'], 'fake_name')
self.assertEquals(payload['user_id'], self.user_id)
- self.assertEquals(payload['instance_id'], inst_ref.uuid)
+ self.assertEquals(payload['instance_id'], inst_ref['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
@@ -2462,7 +2462,7 @@ class ComputeTestCase(BaseTestCase):
LOG.info(_("Running instances: %s"), instances)
self.assertEqual(len(instances), 1)
- instance_name = instances[0].name
+ instance_name = instances[0]['name']
self.compute.driver.test_remove_vm(instance_name)
# Force the compute manager to do its periodic poll
@@ -3048,7 +3048,7 @@ class ComputeAPITestCase(BaseTestCase):
self.assertEqual(len(db.security_group_get_by_instance(
self.context, ref[0]['id'])), 1)
group = db.security_group_get(self.context, group['id'])
- self.assert_(len(group.instances) == 1)
+ self.assert_(len(group['instances']) == 1)
finally:
db.security_group_destroy(self.context, group['id'])
db.instance_destroy(self.context, ref[0]['uuid'])
@@ -3152,7 +3152,7 @@ class ComputeAPITestCase(BaseTestCase):
try:
db.instance_destroy(self.context, ref[0]['uuid'])
group = db.security_group_get(self.context, group['id'])
- self.assert_(len(group.instances) == 0)
+ self.assert_(len(group['instances']) == 0)
finally:
db.security_group_destroy(self.context, group['id'])
@@ -3171,7 +3171,7 @@ class ComputeAPITestCase(BaseTestCase):
admin_deleted_context = context.get_admin_context(
read_deleted="only")
group = db.security_group_get(admin_deleted_context, group['id'])
- self.assert_(len(group.instances) == 0)
+ self.assert_(len(group['instances']) == 0)
finally:
db.instance_destroy(self.context, ref[0]['uuid'])
@@ -5294,7 +5294,7 @@ class ComputeAggrTestCase(BaseTestCase):
def test_add_aggregate_host_passes_slave_info_to_driver(self):
def driver_add_to_aggregate(context, aggregate, host, **kwargs):
self.assertEquals(self.context, context)
- self.assertEquals(aggregate['id'], self.aggr.id)
+ self.assertEquals(aggregate['id'], self.aggr['id'])
self.assertEquals(host, "the_host")
self.assertEquals("SLAVE_INFO", kwargs.get("slave_info"))
@@ -5308,7 +5308,7 @@ class ComputeAggrTestCase(BaseTestCase):
def test_remove_from_aggregate_passes_slave_info_to_driver(self):
def driver_remove_from_aggregate(context, aggregate, host, **kwargs):
self.assertEquals(self.context, context)
- self.assertEquals(aggregate['id'], self.aggr.id)
+ self.assertEquals(aggregate['id'], self.aggr['id'])
self.assertEquals(host, "the_host")
self.assertEquals("SLAVE_INFO", kwargs.get("slave_info"))
diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py
index 3c725e4d1..144ac9f00 100644
--- a/nova/tests/compute/test_compute_utils.py
+++ b/nova/tests/compute/test_compute_utils.py
@@ -270,7 +270,7 @@ class UsageInfoTestCase(test.TestCase):
payload = msg['payload']
self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
- self.assertEquals(payload['instance_id'], instance.uuid)
+ self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
@@ -306,7 +306,7 @@ class UsageInfoTestCase(test.TestCase):
payload = msg['payload']
self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
- self.assertEquals(payload['instance_id'], instance.uuid)
+ self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
@@ -333,7 +333,7 @@ class UsageInfoTestCase(test.TestCase):
payload = msg['payload']
self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
- self.assertEquals(payload['instance_id'], instance.uuid)
+ self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
@@ -366,7 +366,7 @@ class UsageInfoTestCase(test.TestCase):
payload = msg['payload']
self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
- self.assertEquals(payload['instance_id'], instance.uuid)
+ self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))