From b10621f5f85cccde3d159afddb78398544d4c32e Mon Sep 17 00:00:00 2001 From: Eldar Nugaev Date: Thu, 16 Jun 2011 17:30:36 +0400 Subject: First implementation of FloatingIpController --- nova/db/api.py | 3 +++ nova/db/sqlalchemy/api.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) (limited to 'nova/db') diff --git a/nova/db/api.py b/nova/db/api.py index 4e0aa60a2..8348d90ae 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -223,6 +223,9 @@ def certificate_update(context, certificate_id, values): ################### +def floating_ip_get(context, floating_ip_id): + return IMPL.floating_ip_get(context, floating_ip_id) + def floating_ip_allocate_address(context, host, project_id): """Allocate free floating ip and return the address. diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 73870d2f3..c3b517492 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -428,6 +428,29 @@ def certificate_update(context, certificate_id, values): ################### +@require_context +def floating_ip_get(context, ip_id): + session = get_session() + result = None + if is_admin_context(context): + result = session.query(models.FloatingIp).\ + options(joinedload('fixed_ip')).\ + options(joinedload_all('fixed_ip.instance')).\ + filter_by(id=ip_id).\ + filter_by(deleted=can_read_deleted(context)).\ + first() + elif is_user_context(context): + result = session.query(models.FloatingIp).\ + options(joinedload('fixed_ip')).\ + options(joinedload_all('fixed_ip.instance')).\ + filter_by(project_id=context.project_id).\ + filter_by(id=ip_id).\ + filter_by(deleted=False).\ + first() + if not result: + raise exception.FloatingIpNotFound() + + return result @require_context -- cgit From 5e4d90b33ddb993294232eea168a768486ba0bf4 Mon Sep 17 00:00:00 2001 From: Eldar Nugaev Date: Sat, 25 Jun 2011 03:05:09 +0400 Subject: added disassociate method to tests --- nova/db/api.py | 2 ++ nova/db/sqlalchemy/api.py | 2 ++ 2 files changed, 4 insertions(+) (limited to 'nova/db') diff --git a/nova/db/api.py b/nova/db/api.py index 8d4b7c8b7..c6ba24478 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -291,10 +291,12 @@ def floating_ip_get_by_address(context, address): """Get a floating ip by address or raise if it doesn't exist.""" return IMPL.floating_ip_get_by_address(context, address) + def floating_ip_get_by_ip(context, ip): """Get a floating ip by floating address.""" return IMPL.floating_ip_get_by_ip(context, ip) + def floating_ip_update(context, address, values): """Update a floating ip by address or raise if it doesn't exist.""" return IMPL.floating_ip_update(context, address, values) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 7735ec8c2..87f112588 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -609,6 +609,7 @@ def floating_ip_get_by_address(context, address, session=None): return result + @require_context def floating_ip_get_by_ip(context, ip, session=None): if not session: @@ -624,6 +625,7 @@ def floating_ip_get_by_ip(context, ip, session=None): return result + @require_context def floating_ip_update(context, address, values): session = get_session() -- cgit From ef1f4d33fa5763ea602c2fc1098a4b230b86e82b Mon Sep 17 00:00:00 2001 From: Ilya Alekseyev Date: Mon, 27 Jun 2011 16:33:01 +0400 Subject: review issues fixed --- nova/db/sqlalchemy/api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 426ea5127..55badb9e0 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -448,7 +448,7 @@ def floating_ip_get(context, ip_id): filter_by(deleted=False).\ first() if not result: - raise exception.FloatingIpNotFound() + raise exception.FloatingIpNotFoundForFixedAddress() return result @@ -605,7 +605,7 @@ def floating_ip_get_by_address(context, address, session=None): filter_by(deleted=can_read_deleted(context)).\ first() if not result: - raise exception.FloatingIpNotFound(fixed_ip=address) + raise exception.FloatingIpNotFoundForFixedAddress(fixed_ip=address) return result @@ -621,7 +621,7 @@ def floating_ip_get_by_ip(context, ip, session=None): first() if not result: - raise exception.FloatingIpNotDefined(floating_ip=ip) + raise exception.FloatingIpNotFound(floating_ip=ip) return result @@ -761,7 +761,7 @@ def fixed_ip_get_by_address(context, address, session=None): options(joinedload('instance')).\ first() if not result: - raise exception.FloatingIpNotFound(fixed_ip=address) + raise exception.FloatingIpNotFoundForFixedAddress(fixed_ip=address) if is_user_context(context): authorize_project_context(context, result.instance.project_id) -- cgit From 75dd73b1246904fd11bf9b566bf2319d3e6bada5 Mon Sep 17 00:00:00 2001 From: Eldar Nugaev Date: Mon, 27 Jun 2011 17:05:35 +0400 Subject: fixed pep style --- nova/db/sqlalchemy/api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 55badb9e0..d20e27617 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -429,14 +429,14 @@ def certificate_update(context, certificate_id, values): ################### @require_context -def floating_ip_get(context, ip_id): +def floating_ip_get(context, id): session = get_session() result = None if is_admin_context(context): result = session.query(models.FloatingIp).\ options(joinedload('fixed_ip')).\ options(joinedload_all('fixed_ip.instance')).\ - filter_by(id=ip_id).\ + filter_by(id=id).\ filter_by(deleted=can_read_deleted(context)).\ first() elif is_user_context(context): @@ -444,7 +444,7 @@ def floating_ip_get(context, ip_id): options(joinedload('fixed_ip')).\ options(joinedload_all('fixed_ip.instance')).\ filter_by(project_id=context.project_id).\ - filter_by(id=ip_id).\ + filter_by(id=id).\ filter_by(deleted=False).\ first() if not result: -- cgit