]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Identify stacks using tenant UUIDs
authorZane Bitter <zbitter@redhat.com>
Fri, 19 Oct 2012 14:15:13 +0000 (16:15 +0200)
committerZane Bitter <zbitter@redhat.com>
Fri, 19 Oct 2012 14:15:36 +0000 (16:15 +0200)
Tenant names may come and go, but UUIDs are universally unique. Therefore,
ownership of the stack should be keyed on the tenant_id, not the tenant
name.

Change-Id: I7ec410aeaeceb6319299935b5f34d7c4e9c63d67
Signed-off-by: Zane Bitter <zbitter@redhat.com>
heat/api/openstack/v1/stacks.py
heat/db/sqlalchemy/api.py
heat/engine/manager.py
heat/engine/parser.py
heat/tests/test_api_cfn_v1.py
heat/tests/test_api_openstack_v1.py
heat/tests/test_engine_manager.py

index fe493394fdfa2c5a625041d3511f05ee4731000f..3e29dbd89da8045253d0bb979ad7011a6c9dda66 100644 (file)
@@ -142,7 +142,7 @@ class InstantiationData(object):
 def tenant_local(handler):
     @wraps(handler)
     def handle_stack_method(controller, req, tenant_id, **kwargs):
-        req.context.tenant = tenant_id
+        req.context.tenant_id = tenant_id
         return handler(controller, req, **kwargs)
 
     return handle_stack_method
@@ -152,7 +152,7 @@ def identified_stack(handler):
     @tenant_local
     @wraps(handler)
     def handle_stack_method(controller, req, stack_name, stack_id, **kwargs):
-        stack_identity = identifier.HeatIdentifier(req.context.tenant,
+        stack_identity = identifier.HeatIdentifier(req.context.tenant_id,
                                                    stack_name,
                                                    stack_id)
         return handler(controller, req, dict(stack_identity), **kwargs)
index ee6a9356494844b0fa94e9425e6c34aaf2488ee5..2e654673173d88358f0a35b9f8491b5586a4f260 100644 (file)
@@ -80,7 +80,7 @@ def resource_get_by_physical_resource_id(context, physical_resource_id):
               .filter_by(nova_instance=physical_resource_id)
               .first())
     if (result is not None and context is not None and
-        result.stack.tenant != context.tenant):
+        result.stack.tenant != context.tenant_id):
         return None
     return result
 
@@ -120,7 +120,7 @@ def stack_get_by_name(context, stack_name, owner_id=None):
         result = model_query(context, models.Stack).\
                             filter_by(name=stack_name).first()
     if (result is not None and context is not None and
-        result.tenant != context.tenant):
+        result.tenant != context.tenant_id):
         return None
     return result
 
@@ -129,7 +129,7 @@ def stack_get(context, stack_id):
     result = model_query(context, models.Stack).get(stack_id)
 
     if (result is not None and context is not None and
-        result.tenant != context.tenant):
+        result.tenant != context.tenant_id):
         return None
 
     return result
@@ -144,7 +144,7 @@ def stack_get_all(context):
 def stack_get_by_tenant(context):
     results = model_query(context, models.Stack).\
                          filter_by(owner_id=None).\
-                         filter_by(tenant=context.tenant).all()
+                         filter_by(tenant=context.tenant_id).all()
     return results
 
 
@@ -235,7 +235,7 @@ def event_get_all(context):
 
 def event_get_all_by_tenant(context):
     stacks = model_query(context, models.Stack).\
-                          filter_by(tenant=context.tenant).all()
+                          filter_by(tenant=context.tenant_id).all()
     results = []
     for stack in stacks:
         results.extend(model_query(context, models.Event).
index c525606c38acb1a08563f1a30eabc604995bfe23..4145813c6b7386e0daca97959bcc53134341cb15 100644 (file)
@@ -78,7 +78,7 @@ class EngineManager(manager.Manager):
     def _get_stack(self, context, stack_identity):
         identity = identifier.HeatIdentifier(**stack_identity)
 
-        if identity.tenant != context.tenant:
+        if identity.tenant != context.tenant_id:
             raise AttributeError('Invalid tenant')
 
         s = db_api.stack_get(context, identity.stack_id)
index e61922308a3f2ce1dbe72f968b48040d3baca4e4..9f804cd0d61f597e929fed6de26149a1f3b4fb7c 100644 (file)
@@ -309,7 +309,7 @@ class Stack(object):
             'owner_id': owner and owner.id,
             'user_creds_id': new_creds.id,
             'username': self.context.username,
-            'tenant': self.context.tenant,
+            'tenant': self.context.tenant_id,
             'status': self.state,
             'status_reason': self.state_description,
             'timeout': self.timeout_mins,
@@ -326,7 +326,7 @@ class Stack(object):
         '''
         Return an identifier for this stack.
         '''
-        return identifier.HeatIdentifier(self.context.tenant,
+        return identifier.HeatIdentifier(self.context.tenant_id,
                                          self.name, self.id)
 
     def __iter__(self):
index 263e5c7893b2794b730edb6c3ab1031fd66f75d1..0e25b45c33b8a0764242e3401874c8eef841e9f1 100644 (file)
@@ -49,6 +49,8 @@ class StackControllerTest(unittest.TestCase):
         ctx = context.get_admin_context()
         self.m.StubOutWithMock(ctx, 'username')
         ctx.username = user
+        self.m.StubOutWithMock(ctx, 'tenant_id')
+        ctx.tenant_id = 't'
         self.m.StubOutWithMock(auth, 'authenticate')
         return ctx
 
index 23115185232ec7c26a199dd9f329ef651e9436e0..b5a52075ff51f1ad4d249a7dbce038ba9604b654 100644 (file)
@@ -161,6 +161,8 @@ class StackControllerTest(unittest.TestCase):
         ctx = context.get_admin_context()
         self.m.StubOutWithMock(ctx, 'username')
         ctx.username = user
+        self.m.StubOutWithMock(ctx, 'tenant_id')
+        ctx.tenant_id = self.tenant
         self.m.StubOutWithMock(auth, 'authenticate')
         return ctx
 
index 60a738693e8bb7fa2ca18236dfcf727d01f0ee23..f6dde6a4f3eb722f3d9b44156b0f0b78a258fdce 100644 (file)
@@ -45,9 +45,9 @@ def create_context(mocks, user='stacks_test_user',
                    tenant='test_admin', ctx=None):
     ctx = ctx or context.get_admin_context()
     mocks.StubOutWithMock(ctx, 'username')
-    mocks.StubOutWithMock(ctx, 'tenant')
+    mocks.StubOutWithMock(ctx, 'tenant_id')
     ctx.username = user
-    ctx.tenant = tenant
+    ctx.tenant_id = tenant
     return ctx