Proper deprecation for HTTPClient tenant_id, tenant_name parameters
HTTPClient() tenant_id and tenant_name parameters weren't properly deprecated since they were only mentioned in the docstring. Proper deprecation requires use of warnings/debtcollector and documentation. Also fixed a bunch of places in the tests where tenant_id and tenant_name were still being used despite being deprecated. bp deprecations Change-Id: I9c4f596b8ff10aede6c417886638a942cb18044c
This commit is contained in:
@@ -22,6 +22,7 @@ OpenStack Client interface. Handles the REST calls and responses.
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from debtcollector import removals
|
from debtcollector import removals
|
||||||
|
from debtcollector import renames
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
import requests
|
import requests
|
||||||
@@ -190,10 +191,13 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
|
|||||||
keyring is about to expire. default: 30
|
keyring is about to expire. default: 30
|
||||||
(optional)
|
(optional)
|
||||||
:param string tenant_name: Tenant name. (optional) The tenant_name keyword
|
:param string tenant_name: Tenant name. (optional) The tenant_name keyword
|
||||||
argument is deprecated, use project_name
|
argument is deprecated as of the 1.7.0 release
|
||||||
instead.
|
in favor of project_name and may be removed in
|
||||||
|
the 2.0.0 release.
|
||||||
:param string tenant_id: Tenant id. (optional) The tenant_id keyword
|
:param string tenant_id: Tenant id. (optional) The tenant_id keyword
|
||||||
argument is deprecated, use project_id instead.
|
argument is deprecated as of the 1.7.0 release in
|
||||||
|
favor of project_id and may be removed in the
|
||||||
|
2.0.0 release.
|
||||||
:param string trust_id: Trust ID for trust scoping. (optional)
|
:param string trust_id: Trust ID for trust scoping. (optional)
|
||||||
:param object session: A Session object to be used for
|
:param object session: A Session object to be used for
|
||||||
communicating with the identity service.
|
communicating with the identity service.
|
||||||
@@ -216,6 +220,10 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
|
|||||||
|
|
||||||
version = None
|
version = None
|
||||||
|
|
||||||
|
@renames.renamed_kwarg('tenant_name', 'project_name', version='1.7.0',
|
||||||
|
removal_version='2.0.0')
|
||||||
|
@renames.renamed_kwarg('tenant_id', 'project_id', version='1.7.0',
|
||||||
|
removal_version='2.0.0')
|
||||||
@utils.positional(enforcement=utils.positional.WARN)
|
@utils.positional(enforcement=utils.positional.WARN)
|
||||||
def __init__(self, username=None, tenant_id=None, tenant_name=None,
|
def __init__(self, username=None, tenant_id=None, tenant_name=None,
|
||||||
password=None, auth_url=None, region_name=None, endpoint=None,
|
password=None, auth_url=None, region_name=None, endpoint=None,
|
||||||
|
@@ -28,7 +28,7 @@ RESPONSE_BODY = '{"hi": "there"}'
|
|||||||
|
|
||||||
def get_client():
|
def get_client():
|
||||||
cl = httpclient.HTTPClient(username="username", password="password",
|
cl = httpclient.HTTPClient(username="username", password="password",
|
||||||
tenant_id="tenant", auth_url="auth_test")
|
project_id="tenant", auth_url="auth_test")
|
||||||
return cl
|
return cl
|
||||||
|
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ class ClientTest(utils.TestCase):
|
|||||||
def test_forwarded_for(self):
|
def test_forwarded_for(self):
|
||||||
ORIGINAL_IP = "10.100.100.1"
|
ORIGINAL_IP = "10.100.100.1"
|
||||||
cl = httpclient.HTTPClient(username="username", password="password",
|
cl = httpclient.HTTPClient(username="username", password="password",
|
||||||
tenant_id="tenant", auth_url="auth_test",
|
project_id="tenant", auth_url="auth_test",
|
||||||
original_ip=ORIGINAL_IP)
|
original_ip=ORIGINAL_IP)
|
||||||
|
|
||||||
self.stub_url('GET')
|
self.stub_url('GET')
|
||||||
|
@@ -28,7 +28,7 @@ RESPONSE_BODY = '{"hi": "there"}'
|
|||||||
|
|
||||||
def get_client():
|
def get_client():
|
||||||
cl = httpclient.HTTPClient(username="username", password="password",
|
cl = httpclient.HTTPClient(username="username", password="password",
|
||||||
tenant_id="tenant", auth_url="auth_test",
|
project_id="tenant", auth_url="auth_test",
|
||||||
cacert="ca.pem", key="key.pem", cert="cert.pem")
|
cacert="ca.pem", key="key.pem", cert="cert.pem")
|
||||||
return cl
|
return cl
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ class ClientTest(utils.TestCase):
|
|||||||
def test_post_auth(self, MOCK_REQUEST):
|
def test_post_auth(self, MOCK_REQUEST):
|
||||||
MOCK_REQUEST.return_value = FAKE_RESPONSE
|
MOCK_REQUEST.return_value = FAKE_RESPONSE
|
||||||
cl = httpclient.HTTPClient(
|
cl = httpclient.HTTPClient(
|
||||||
username="username", password="password", tenant_id="tenant",
|
username="username", password="password", project_id="tenant",
|
||||||
auth_url="auth_test", cacert="ca.pem", key="key.pem",
|
auth_url="auth_test", cacert="ca.pem", key="key.pem",
|
||||||
cert="cert.pem")
|
cert="cert.pem")
|
||||||
cl.management_url = "https://127.0.0.1:5000"
|
cl.management_url = "https://127.0.0.1:5000"
|
||||||
|
@@ -88,7 +88,7 @@ class KeyringTest(utils.TestCase):
|
|||||||
the keyring is never accessed.
|
the keyring is never accessed.
|
||||||
"""
|
"""
|
||||||
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
||||||
tenant_id=TENANT_ID, auth_url=AUTH_URL)
|
project_id=TENANT_ID, auth_url=AUTH_URL)
|
||||||
|
|
||||||
# stub and check that a new token is received
|
# stub and check that a new token is received
|
||||||
method = 'get_raw_token_from_identity_service'
|
method = 'get_raw_token_from_identity_service'
|
||||||
@@ -105,7 +105,7 @@ class KeyringTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_build_keyring_key(self):
|
def test_build_keyring_key(self):
|
||||||
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
||||||
tenant_id=TENANT_ID, auth_url=AUTH_URL)
|
project_id=TENANT_ID, auth_url=AUTH_URL)
|
||||||
|
|
||||||
keyring_key = cl._build_keyring_key(auth_url=AUTH_URL,
|
keyring_key = cl._build_keyring_key(auth_url=AUTH_URL,
|
||||||
username=USERNAME,
|
username=USERNAME,
|
||||||
@@ -119,7 +119,7 @@ class KeyringTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_set_and_get_keyring_expired(self):
|
def test_set_and_get_keyring_expired(self):
|
||||||
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
||||||
tenant_id=TENANT_ID, auth_url=AUTH_URL,
|
project_id=TENANT_ID, auth_url=AUTH_URL,
|
||||||
use_keyring=True)
|
use_keyring=True)
|
||||||
|
|
||||||
# set an expired token into the keyring
|
# set an expired token into the keyring
|
||||||
@@ -147,7 +147,7 @@ class KeyringTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_get_keyring(self):
|
def test_get_keyring(self):
|
||||||
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
||||||
tenant_id=TENANT_ID, auth_url=AUTH_URL,
|
project_id=TENANT_ID, auth_url=AUTH_URL,
|
||||||
use_keyring=True)
|
use_keyring=True)
|
||||||
|
|
||||||
# set an token into the keyring
|
# set an token into the keyring
|
||||||
@@ -163,7 +163,7 @@ class KeyringTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_set_keyring(self):
|
def test_set_keyring(self):
|
||||||
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
cl = httpclient.HTTPClient(username=USERNAME, password=PASSWORD,
|
||||||
tenant_id=TENANT_ID, auth_url=AUTH_URL,
|
project_id=TENANT_ID, auth_url=AUTH_URL,
|
||||||
use_keyring=True)
|
use_keyring=True)
|
||||||
|
|
||||||
# stub and check that a new token is received
|
# stub and check that a new token is received
|
||||||
|
@@ -67,7 +67,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
self.stub_auth(response_list=[{'json': resp_a, 'headers': headers},
|
self.stub_auth(response_list=[{'json': resp_a, 'headers': headers},
|
||||||
{'json': resp_b, 'headers': headers}])
|
{'json': resp_b, 'headers': headers}])
|
||||||
|
|
||||||
cs = client.Client(tenant_id=self.TEST_TENANT_ID,
|
cs = client.Client(project_id=self.TEST_TENANT_ID,
|
||||||
auth_url=self.TEST_URL,
|
auth_url=self.TEST_URL,
|
||||||
username=self.TEST_USER,
|
username=self.TEST_USER,
|
||||||
password=self.TEST_TOKEN)
|
password=self.TEST_TOKEN)
|
||||||
@@ -95,7 +95,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
def client_create_wrapper():
|
def client_create_wrapper():
|
||||||
client.Client(username=self.TEST_USER,
|
client.Client(username=self.TEST_USER,
|
||||||
password="bad_key",
|
password="bad_key",
|
||||||
tenant_id=self.TEST_TENANT_ID,
|
project_id=self.TEST_TENANT_ID,
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
|
|
||||||
self.assertRaises(exceptions.Unauthorized, client_create_wrapper)
|
self.assertRaises(exceptions.Unauthorized, client_create_wrapper)
|
||||||
@@ -110,7 +110,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
|
|
||||||
cs = client.Client(username=self.TEST_USER,
|
cs = client.Client(username=self.TEST_USER,
|
||||||
password=self.TEST_TOKEN,
|
password=self.TEST_TOKEN,
|
||||||
tenant_id=self.TEST_TENANT_ID,
|
project_id=self.TEST_TENANT_ID,
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
|
|
||||||
self.assertEqual(cs.management_url,
|
self.assertEqual(cs.management_url,
|
||||||
@@ -125,7 +125,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
|
|
||||||
cs = client.Client(username=self.TEST_USER,
|
cs = client.Client(username=self.TEST_USER,
|
||||||
password=self.TEST_TOKEN,
|
password=self.TEST_TOKEN,
|
||||||
tenant_id=self.TEST_TENANT_ID,
|
project_id=self.TEST_TENANT_ID,
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
self.assertEqual(cs.management_url,
|
self.assertEqual(cs.management_url,
|
||||||
self.TEST_RESPONSE_DICT["access"]["serviceCatalog"][3]
|
self.TEST_RESPONSE_DICT["access"]["serviceCatalog"][3]
|
||||||
@@ -174,7 +174,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
self.stub_auth(json=self.TEST_RESPONSE_DICT)
|
self.stub_auth(json=self.TEST_RESPONSE_DICT)
|
||||||
|
|
||||||
cs = client.Client(token=self.TEST_TOKEN,
|
cs = client.Client(token=self.TEST_TOKEN,
|
||||||
tenant_id=self.TEST_TENANT_ID,
|
project_id=self.TEST_TENANT_ID,
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
self.assertEqual(cs.management_url,
|
self.assertEqual(cs.management_url,
|
||||||
self.TEST_RESPONSE_DICT["access"]["serviceCatalog"][3]
|
self.TEST_RESPONSE_DICT["access"]["serviceCatalog"][3]
|
||||||
@@ -193,7 +193,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
self.stub_auth(json=response)
|
self.stub_auth(json=response)
|
||||||
|
|
||||||
cs = client.Client(token=self.TEST_TOKEN,
|
cs = client.Client(token=self.TEST_TOKEN,
|
||||||
tenant_id=self.TEST_TENANT_ID,
|
project_id=self.TEST_TENANT_ID,
|
||||||
trust_id=self.TEST_TRUST_ID,
|
trust_id=self.TEST_TRUST_ID,
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
self.assertTrue(cs.auth_ref.trust_scoped)
|
self.assertTrue(cs.auth_ref.trust_scoped)
|
||||||
@@ -227,7 +227,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
|
|
||||||
self.assertEqual(cl.auth_token, self.TEST_TOKEN)
|
self.assertEqual(cl.auth_token, self.TEST_TOKEN)
|
||||||
|
@@ -49,7 +49,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
c = client.Client(username='exampleuser',
|
c = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
self.assertIsNotNone(c.auth_ref)
|
self.assertIsNotNone(c.auth_ref)
|
||||||
with self.deprecations.expect_deprecations_here():
|
with self.deprecations.expect_deprecations_here():
|
||||||
@@ -67,7 +67,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
cache = json.dumps(cl.auth_ref)
|
cache = json.dumps(cl.auth_ref)
|
||||||
new_client = client.Client(auth_ref=json.loads(cache))
|
new_client = client.Client(auth_ref=json.loads(cache))
|
||||||
@@ -88,7 +88,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
cache = json.dumps(cl.auth_ref)
|
cache = json.dumps(cl.auth_ref)
|
||||||
new_auth_url = "http://new-public:5000/v2.0"
|
new_auth_url = "http://new-public:5000/v2.0"
|
||||||
@@ -133,7 +133,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
self.assertEqual(cl.management_url, admin_url)
|
self.assertEqual(cl.management_url, admin_url)
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL,
|
auth_url=self.TEST_URL,
|
||||||
region_name='North')
|
region_name='North')
|
||||||
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
||||||
@@ -155,7 +155,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL,
|
auth_url=self.TEST_URL,
|
||||||
region_name='South')
|
region_name='South')
|
||||||
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
||||||
@@ -164,7 +164,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
def test_client_without_auth_params(self):
|
def test_client_without_auth_params(self):
|
||||||
self.assertRaises(exceptions.AuthorizationFailure,
|
self.assertRaises(exceptions.AuthorizationFailure,
|
||||||
client.Client,
|
client.Client,
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
|
|
||||||
def test_client_params(self):
|
def test_client_params(self):
|
||||||
|
@@ -321,7 +321,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL)
|
auth_url=self.TEST_URL)
|
||||||
|
|
||||||
self.assertEqual(cl.auth_token, self.TEST_TOKEN)
|
self.assertEqual(cl.auth_token, self.TEST_TOKEN)
|
||||||
|
@@ -190,7 +190,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL,
|
auth_url=self.TEST_URL,
|
||||||
region_name='North')
|
region_name='North')
|
||||||
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
||||||
@@ -198,7 +198,7 @@ class KeystoneClientTest(utils.TestCase):
|
|||||||
|
|
||||||
cl = client.Client(username='exampleuser',
|
cl = client.Client(username='exampleuser',
|
||||||
password='password',
|
password='password',
|
||||||
tenant_name='exampleproject',
|
project_name='exampleproject',
|
||||||
auth_url=self.TEST_URL,
|
auth_url=self.TEST_URL,
|
||||||
region_name='South')
|
region_name='South')
|
||||||
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
self.assertEqual(cl.service_catalog.url_for(service_type='image'),
|
||||||
|
@@ -66,11 +66,13 @@ class Client(httpclient.HTTPClient):
|
|||||||
:param string project_domain_name: Project's domain name for project
|
:param string project_domain_name: Project's domain name for project
|
||||||
scoping. (optional)
|
scoping. (optional)
|
||||||
:param string tenant_name: Tenant name. (optional)
|
:param string tenant_name: Tenant name. (optional)
|
||||||
The tenant_name keyword argument is deprecated,
|
The tenant_name keyword argument is deprecated
|
||||||
use project_name instead.
|
as of the 1.7.0 release in favor of project_name
|
||||||
|
and may be removed in the 2.0.0 release.
|
||||||
:param string tenant_id: Tenant id. (optional)
|
:param string tenant_id: Tenant id. (optional)
|
||||||
The tenant_id keyword argument is deprecated,
|
The tenant_id keyword argument is deprecated as of
|
||||||
use project_id instead.
|
the 1.7.0 release in favor of project_id and may
|
||||||
|
be removed in the 2.0.0 release.
|
||||||
:param string auth_url: Identity service endpoint for authorization.
|
:param string auth_url: Identity service endpoint for authorization.
|
||||||
:param string region_name: Name of a region to select when choosing an
|
:param string region_name: Name of a region to select when choosing an
|
||||||
endpoint from the service catalog.
|
endpoint from the service catalog.
|
||||||
|
Reference in New Issue
Block a user