From 28b4d3e37ccf1adffa0d3327736964d03dc6c472 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Sun, 16 Sep 2012 12:40:02 -0700 Subject: [PATCH] Remove unnecesssary nova constructor calls in each manager API call path auth.authenticate() creates a nova client object. This nova client object is never reused introducing a 40msec penalty for each API call. The heat-api-cfn module authenticates incoming requests. In a properly secured environment (one where RPC is secured), the auth.authenticate() calls serve no purpose. Change-Id: I847af259f521a32a7bf3fda0ce3f72735f762a0c Signed-off-by: Steven Dake --- heat/engine/auth.py | 6 ++++-- heat/engine/manager.py | 26 -------------------------- heat/tests/test_engine_manager.py | 3 --- 3 files changed, 4 insertions(+), 31 deletions(-) diff --git a/heat/engine/auth.py b/heat/engine/auth.py index 3712d11c..2a4814e6 100644 --- a/heat/engine/auth.py +++ b/heat/engine/auth.py @@ -70,8 +70,10 @@ def authenticate(con, service_type='orchestration', service_name='heat'): """ if con.password is not None: - nova = client.Client(con.username, con.password, - con.tenant, con.auth_url, + nova = client.Client(username=con.username, + api_key=con.password, + project_id=con.tenant, + auth_url=con.auth_url, service_type=service_type, service_name=service_name) nova.authenticate() diff --git a/heat/engine/manager.py b/heat/engine/manager.py index 73c0e544..f7da9d9f 100644 --- a/heat/engine/manager.py +++ b/heat/engine/manager.py @@ -69,8 +69,6 @@ class EngineManager(manager.Manager): arg1 -> RPC context. arg2 -> Name of the stack to look up. """ - auth.authenticate(context) - s = db_api.stack_get_by_name(context, stack_name) if s: stack = parser.Stack.load(context, s.id) @@ -101,8 +99,6 @@ class EngineManager(manager.Manager): arg2 -> Name of the stack you want to see, or None to see all arg3 -> Dict of http request parameters passed in from API side. """ - auth.authenticate(context) - if stack_identity is not None: stacks = [self._get_stack(context, stack_identity)] else: @@ -128,8 +124,6 @@ class EngineManager(manager.Manager): """ logger.info('template is %s' % template) - auth.authenticate(context) - if db_api.stack_get_by_name(None, stack_name): raise AttributeError('Stack already exists with that name') @@ -165,8 +159,6 @@ class EngineManager(manager.Manager): """ logger.info('template is %s' % template) - auth.authenticate(context) - # Get the database representation of the existing stack db_stack = self._get_stack(context, stack_identity) @@ -199,8 +191,6 @@ class EngineManager(manager.Manager): arg3 -> Template of stack you want to create. arg4 -> Params passed from API. """ - auth.authenticate(context) - logger.info('validate_template') if template is None: msg = _("No Template provided.") @@ -238,7 +228,6 @@ class EngineManager(manager.Manager): arg2 -> Name of the stack you want to see. arg3 -> Dict of http request parameters passed in from API side. """ - auth.authenticate(context) s = self._get_stack(context, stack_identity) if s: return s.raw_template.template @@ -251,9 +240,6 @@ class EngineManager(manager.Manager): arg2 -> Name of the stack you want to delete. arg3 -> Params passed from API. """ - - auth.authenticate(context) - st = self._get_stack(context, stack_identity) logger.info('deleting stack %s' % st.name) @@ -269,9 +255,6 @@ class EngineManager(manager.Manager): arg2 -> Name of the stack you want to get events for. arg3 -> Params passed from API. """ - - auth.authenticate(context) - if stack_identity is not None: st = self._get_stack(context, stack_identity) @@ -282,9 +265,6 @@ class EngineManager(manager.Manager): return {'events': [api.format_event(context, e) for e in events]} def event_create(self, context, event): - - auth.authenticate(context) - stack_name = event['stack'] resource_name = event['resource'] stack = db_api.stack_get_by_name(context, stack_name) @@ -312,8 +292,6 @@ class EngineManager(manager.Manager): return [msg, None] def describe_stack_resource(self, context, stack_identity, resource_name): - auth.authenticate(context) - s = self._get_stack(context, stack_identity) stack = parser.Stack.load(context, s.id) @@ -328,8 +306,6 @@ class EngineManager(manager.Manager): def describe_stack_resources(self, context, stack_identity, physical_resource_id, logical_resource_id): - auth.authenticate(context) - if stack_identity is not None: s = self._get_stack(context, stack_identity) else: @@ -355,8 +331,6 @@ class EngineManager(manager.Manager): name_match(resource)] def list_stack_resources(self, context, stack_identity): - auth.authenticate(context) - s = self._get_stack(context, stack_identity) stack = parser.Stack.load(context, s.id) diff --git a/heat/tests/test_engine_manager.py b/heat/tests/test_engine_manager.py index 75564ab0..66d50acc 100644 --- a/heat/tests/test_engine_manager.py +++ b/heat/tests/test_engine_manager.py @@ -48,7 +48,6 @@ def create_context(mocks, user='stacks_test_user', mocks.StubOutWithMock(ctx, 'tenant') ctx.username = user ctx.tenant = tenant - mocks.StubOutWithMock(auth, 'authenticate') return ctx @@ -133,7 +132,6 @@ class stackManagerCreateUpdateDeleteTest(unittest.TestCase): self.username = 'stack_manager_create_test_user' self.tenant = 'stack_manager_create_test_tenant' self.ctx = create_context(self.m, self.username, self.tenant) - auth.authenticate(self.ctx).AndReturn(True) self.man = manager.EngineManager() @@ -360,7 +358,6 @@ class stackManagerTest(unittest.TestCase): def setUp(self): self.m = mox.Mox() self.ctx = create_context(self.m, self.username, self.tenant) - auth.authenticate(self.ctx).AndReturn(True) setup_mocks(self.m, self.stack) self.m.ReplayAll() -- 2.45.2