diff --git a/nova/db/api.py b/nova/db/api.py
index 7ad02cdd4..e0aa5541c 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -372,6 +372,11 @@ def fixed_ip_disassociate_all_by_timeout(context, host, time):
     return IMPL.fixed_ip_disassociate_all_by_timeout(context, host, time)
 
 
+def fixed_ip_get(context, id):
+    """Get fixed ip by id or raise if it does not exist."""
+    return IMPL.fixed_ip_get(context, id)
+
+
 def fixed_ip_get_all(context):
     """Get all defined fixed ips."""
     return IMPL.fixed_ip_get_all(context)
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 1dcd6d95c..aac288767 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -796,6 +796,25 @@ def fixed_ip_disassociate_all_by_timeout(_context, host, time):
     return result
 
 
+@require_context
+def fixed_ip_get(context, id, session=None):
+    if not session:
+        session = get_session()
+    result = session.query(models.FixedIp).\
+                     filter_by(id=id).\
+                     filter_by(deleted=can_read_deleted(context)).\
+                     options(joinedload('floating_ips')).\
+                     options(joinedload('network')).\
+                     first()
+    if not result:
+        raise exception.FixedIpNotFound(id=id)
+
+    if is_user_context(context):
+        authorize_project_context(context, result.instance.project_id)
+
+    return result
+
+
 @require_admin_context
 def fixed_ip_get_all(context, session=None):
     if not session:
diff --git a/nova/test.py b/nova/test.py
index d759aef60..b753f2314 100644
--- a/nova/test.py
+++ b/nova/test.py
@@ -56,6 +56,7 @@ LOG = log.getLogger('nova.tests')
 
 class skip_test(object):
     """Decorator that skips a test."""
+    # TODO(tr3buchet): remember forever what comstud did here
     def __init__(self, msg):
         self.message = msg