From 34d14b06d91b3d2e90d6531972bc25b8a8de53ab Mon Sep 17 00:00:00 2001 From: Davide Guerri Date: Fri, 22 May 2015 11:22:23 +0100 Subject: [PATCH] Move all_tenants and edit_managed attributes to designate Client Initializing designate client with a pre-existing keystone session won't work as designate expects keystone session to have the 'all_tenants' and 'edit_managed' attributes: Example code: keystone_session = ksc_session.Session( auth=keystone_auth, verify=True, cert=my_cert ) than later: self._designate_client = designate_client( session=keystone_session, region_name=region_name ) with that code, wrap_api_call() will raise an exception: AttributeError: 'Session' object has no attribute 'all_tenants' Same goes for 'edit_managed'. This patch moves both attributes from Keystone session to designate Client. Closes-Bug: 1457821 Change-Id: I13d6c9ed46406fefc8cfa5de46811e4be009f1af --- designateclient/cli/base.py | 4 +++- designateclient/shell.py | 4 +--- designateclient/utils.py | 4 +--- designateclient/v1/__init__.py | 11 ++++++----- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/designateclient/cli/base.py b/designateclient/cli/base.py index b01ae0d..557a698 100644 --- a/designateclient/cli/base.py +++ b/designateclient/cli/base.py @@ -31,7 +31,9 @@ class Command(CliffCommand): self.client = Client( region_name=self.app.options.os_region_name, service_type=self.app.options.os_service_type, - session=self.app.session) + session=self.app.session, + all_tenants=self.app.options.all_tenants, + edit_managed=self.app.options.edit_managed) try: return super(Command, self).run(parsed_args) diff --git a/designateclient/shell.py b/designateclient/shell.py index bd1de9a..4e2649c 100644 --- a/designateclient/shell.py +++ b/designateclient/shell.py @@ -234,9 +234,7 @@ class DesignateShell(App): user_domain_name=self.options.os_user_domain_name, token=self.options.os_token, insecure=self.options.insecure, - cacert=self.options.os_cacert, - all_tenants=self.options.all_tenants, - edit_managed=self.options.edit_managed + cacert=self.options.os_cacert ) def run(self, argv): diff --git a/designateclient/utils.py b/designateclient/utils.py index 8703173..ae53295 100644 --- a/designateclient/utils.py +++ b/designateclient/utils.py @@ -101,7 +101,7 @@ def get_columns(data): def get_session(auth_url, endpoint, domain_id, domain_name, project_id, project_name, project_domain_name, project_domain_id, username, user_id, password, user_domain_id, user_domain_name, token, - insecure, cacert, all_tenants, edit_managed): + insecure, cacert): session = ks_session.Session() # Build + Attach Authentication Plugin @@ -139,8 +139,6 @@ def get_session(auth_url, endpoint, domain_id, domain_name, project_id, session.verify = False else: session.verify = cacert - session.all_tenants = all_tenants - session.edit_managed = edit_managed return session diff --git a/designateclient/v1/__init__.py b/designateclient/v1/__init__.py index 3d389d8..854bccc 100644 --- a/designateclient/v1/__init__.py +++ b/designateclient/v1/__init__.py @@ -62,11 +62,12 @@ class Client(object): user_domain_name=user_domain_name, token=token, insecure=insecure, - cacert=cacert, - all_tenants=all_tenants, - edit_managed=edit_managed, + cacert=cacert ) + self.all_tenants = all_tenants + self.edit_managed = edit_managed + # Since we have to behave nicely like a legacy client/bindings we use # an adapter around the session to not modify it's state. interface = endpoint_type.rstrip('URL') @@ -99,9 +100,9 @@ class Client(object): kw['raise_exc'] = False kw.setdefault('headers', {}) kw['headers'].setdefault('Content-Type', 'application/json') - if self.session.session.all_tenants: + if self.all_tenants: kw['headers'].update({'X-Auth-All-Projects': 'true'}) - if self.session.session.edit_managed: + if self.edit_managed: kw['headers'].update({'X-Designate-Edit-Managed-Records': 'true'}) # Trigger the request