summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorTrey Morris <trey.morris@rackspace.com>2011-02-07 13:43:23 -0600
committerTrey Morris <trey.morris@rackspace.com>2011-02-07 13:43:23 -0600
commitb6022c1f7d7dc9294f6b1b613c7e99bd9437a72e (patch)
tree1ed5cffa8246804fcbee44e7d11ea5d00af6ec44 /nova
parent0e6b1c02b3ae82526f3cf83ce70213e7a107701d (diff)
downloadnova-b6022c1f7d7dc9294f6b1b613c7e99bd9437a72e.tar.gz
nova-b6022c1f7d7dc9294f6b1b613c7e99bd9437a72e.tar.xz
nova-b6022c1f7d7dc9294f6b1b613c7e99bd9437a72e.zip
added network_get_all_by_instance(), call to reset_network in vmops
Diffstat (limited to 'nova')
-rw-r--r--nova/db/sqlalchemy/api.py19
-rw-r--r--nova/virt/xenapi/vmops.py11
2 files changed, 20 insertions, 10 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 31865d553..26b685e43 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -1055,12 +1055,6 @@ def network_get(context, network_id, session=None):
return result
-@require_context
-def network_get_all(context):
- session = get_session()
- return session.query(models.Network).all()
-
-
# NOTE(vish): pylint complains because of the long method name, but
# it fits with the names of the rest of the methods
# pylint: disable-msg=C0103
@@ -1105,6 +1099,19 @@ def network_get_by_instance(_context, instance_id):
@require_admin_context
+def network_get_all_by_instance(_context, instance_id):
+ session = get_session()
+ rv = session.query(models.Network).\
+ filter_by(deleted=False).\
+ join(models.Network.fixed_ips).\
+ filter_by(instance_id=instance_id).\
+ filter_by(deleted=False)
+ if not rv:
+ raise exception.NotFound(_('No network for instance %s') % instance_id)
+ return rv
+
+
+@require_admin_context
def network_set_host(context, network_id, host_id):
session = get_session()
with session.begin():
diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py
index 6edeae5c0..4056e99bc 100644
--- a/nova/virt/xenapi/vmops.py
+++ b/nova/virt/xenapi/vmops.py
@@ -96,9 +96,11 @@ class VMOps(object):
# write network info
admin_context = context.get_admin_context()
- network = db.network_get_by_instance(admin_context,
- instance['id'])
- for network in db.network_get_all(admin_context):
+ #network = db.network_get_by_instance(admin_context,
+ # instance['id'])
+
+ for network in db.network_get_all_by_instance(admin_context,
+ instance['id']):
mac_id = instance.mac_address.replace(':', '')
location = 'vm-data/networking/%s' % mac_id
mapping = {'label': network['label'],
@@ -119,6 +121,7 @@ class VMOps(object):
network_ref, instance.mac_address)
# call reset networking
+ self.reset_network(vm_ref)
LOG.debug(_('Starting VM %s...'), vm_ref)
self._session.call_xenapi('VM.start', vm_ref, False, False)
@@ -389,7 +392,7 @@ class VMOps(object):
# TODO: implement this!
return 'http://fakeajaxconsole/fake_url'
- def reset_networking(self, instance):
+ def reset_network(self, instance):
vm = self._get_vm_opaque_ref(instance)
args = {'id': str(uuid.uuid4())}
resp = self._make_agent_call('resetnetwork', vm, '', args)