summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorSoren Hansen <soren@linux2go.dk>2011-01-25 20:49:29 +0100
committerSoren Hansen <soren@linux2go.dk>2011-01-25 20:49:29 +0100
commitf51526b596f3d89cda2ec4501e19baf085c534e0 (patch)
treef529768512dcedb2a2b9e0ba7e44524c8fb15df9 /nova/db
parent3b06788ba2e8184e17f875f41ced0bbc0254beac (diff)
Add a host argument to virt driver's init_host method. It will be set to the name of host it's running on.
Make libvirt's init_host method go and look at what virtual machines are running when the compute worker starts up. This ensures firewalls are set up correctly for existing VM's. It also enables easier rolling upgrades.
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py5
-rw-r--r--nova/db/sqlalchemy/api.py11
2 files changed, 16 insertions, 0 deletions
diff --git a/nova/db/api.py b/nova/db/api.py
index f9d561587..da1e3d1f2 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -351,6 +351,11 @@ def instance_get_all_by_project(context, project_id):
return IMPL.instance_get_all_by_project(context, project_id)
+def instance_get_all_by_host(context, host):
+ """Get all instance belonging to a host."""
+ return IMPL.instance_get_all_by_host(context, host)
+
+
def instance_get_all_by_reservation(context, reservation_id):
"""Get all instance belonging to a reservation."""
return IMPL.instance_get_all_by_reservation(context, reservation_id)
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 7b965f672..5404ac77e 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -723,6 +723,17 @@ def instance_get_all_by_user(context, user_id):
all()
+@require_admin_context
+def instance_get_all_by_host(context, host):
+ session = get_session()
+ return session.query(models.Instance).\
+ options(joinedload_all('fixed_ip.floating_ips')).\
+ options(joinedload('security_groups')).\
+ filter_by(host=host).\
+ filter_by(deleted=can_read_deleted(context)).\
+ all()
+
+
@require_context
def instance_get_all_by_project(context, project_id):
authorize_project_context(context, project_id)