From b57328dc8f7346152464e18b0210dd1d44abc6f3 Mon Sep 17 00:00:00 2001
From: Kiall Mac Innes <kiall@macinnes.ie>
Date: Fri, 19 Jun 2015 10:02:34 +0100
Subject: [PATCH] Add backwards compat for edit_managed/all_tenants

edit_managed/all_tenants were moved from get_session
to the Client constructor, we should support both
for a period of time.

Change-Id: I2e3d74168976868ea1e4dd6c797f6340faa50d0f
---
 designateclient/utils.py       | 14 ++++++++++++--
 designateclient/v1/__init__.py | 18 +++++++++++++++---
 requirements.txt               |  1 +
 3 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/designateclient/utils.py b/designateclient/utils.py
index ae53295..119b35e 100644
--- a/designateclient/utils.py
+++ b/designateclient/utils.py
@@ -18,7 +18,7 @@ import json
 import os
 import uuid
 
-
+from debtcollector import removals
 from keystoneclient.auth.identity import generic
 from keystoneclient.auth import token_endpoint
 from keystoneclient import session as ks_session
@@ -98,10 +98,15 @@ def get_columns(data):
     return list(columns)
 
 
+@removals.removed_kwarg('all_tenants', removal_version='1.3.0')
+@removals.removed_kwarg('edit_managed', removal_version='1.3.0')
 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):
+                insecure, cacert, all_tenants=None, edit_managed=None):
+    # NOTE: all_tenants and edit_managed are here for backwards compat
+    #       reasons, do not add additional modifiers here.
+
     session = ks_session.Session()
 
     # Build + Attach Authentication Plugin
@@ -140,6 +145,11 @@ def get_session(auth_url, endpoint, domain_id, domain_name, project_id,
     else:
         session.verify = cacert
 
+    # NOTE: all_tenants and edit_managed are here for backwards compat
+    #       reasons, do not add additional modifiers here.
+    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 854bccc..73fef35 100644
--- a/designateclient/v1/__init__.py
+++ b/designateclient/v1/__init__.py
@@ -32,7 +32,7 @@ class Client(object):
                  project_domain_id=None, auth_url=None, token=None,
                  endpoint_type='publicURL', region_name=None,
                  service_type='dns', insecure=False, session=None,
-                 cacert=None, all_tenants=False, edit_managed=False):
+                 cacert=None, all_tenants=None, edit_managed=None):
         """
         :param endpoint: Endpoint URL
         :param token: A token instead of username / password
@@ -65,8 +65,20 @@ class Client(object):
                 cacert=cacert
             )
 
-        self.all_tenants = all_tenants
-        self.edit_managed = edit_managed
+        # NOTE: all_tenants and edit_managed are pulled from the session for
+        #       backwards compat reasons, do not pull additional modifiers from
+        #       here. Once removed, the kwargs above should default to False.
+        if all_tenants is None:
+            self.all_tenants = getattr(self.session.session, 'all_tenants',
+                                       False)
+        else:
+            self.all_tenants = all_tenants
+
+        if edit_managed is None:
+            self.edit_managed = getattr(self.session.session, 'edit_managed',
+                                        False)
+        else:
+            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.
diff --git a/requirements.txt b/requirements.txt
index e941bb4..733bee9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -9,3 +9,4 @@ python-keystoneclient>=1.6.0
 requests>=2.5.2
 six>=1.9.0
 stevedore>=1.5.0  # Apache-2.0
+debtcollector>=0.3.0  # Apache-2.0