Remove use of positional decorator

The positional decorator results in poorly maintainable code in
a misguided effort to emulate python3's key-word-arg only notation
and functionality. This patch removes keystoneclient's dependance
on the positional decorator.

Change-Id: I9e691cc8b0c04992f4a8dabd67e1b413d3220d23
This commit is contained in:
Morgan Fainberg 2017-08-07 13:13:31 -07:00
parent 5d0c29fc91
commit 4a43aa02b8
32 changed files with 2 additions and 116 deletions

@ -24,8 +24,6 @@ raw data specified in version discovery responses.
import logging import logging
import re import re
from positional import positional
from keystoneclient import exceptions from keystoneclient import exceptions
from keystoneclient.i18n import _ from keystoneclient.i18n import _
@ -33,7 +31,6 @@ from keystoneclient.i18n import _
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@positional()
def get_version_data(session, url, authenticated=None): def get_version_data(session, url, authenticated=None):
"""Retrieve raw version data from a url.""" """Retrieve raw version data from a url."""
headers = {'Accept': 'application/json'} headers = {'Accept': 'application/json'}
@ -141,7 +138,6 @@ class Discover(object):
DEPRECATED_STATUSES = ('deprecated',) DEPRECATED_STATUSES = ('deprecated',)
EXPERIMENTAL_STATUSES = ('experimental',) EXPERIMENTAL_STATUSES = ('experimental',)
@positional()
def __init__(self, session, url, authenticated=None): def __init__(self, session, url, authenticated=None):
self._data = get_version_data(session, url, self._data = get_version_data(session, url,
authenticated=authenticated) authenticated=authenticated)

@ -13,7 +13,6 @@
import warnings import warnings
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
from positional import positional
class Adapter(object): class Adapter(object):
@ -46,7 +45,6 @@ class Adapter(object):
:type logger: logging.Logger :type logger: logging.Logger
""" """
@positional()
def __init__(self, session, service_type=None, service_name=None, def __init__(self, session, service_type=None, service_name=None,
interface=None, region_name=None, endpoint_override=None, interface=None, region_name=None, endpoint_override=None,
version=None, auth=None, user_agent=None, version=None, auth=None, user_agent=None,

@ -14,7 +14,6 @@ import argparse
import os import os
from debtcollector import removals from debtcollector import removals
from positional import positional
from keystoneclient.auth import base from keystoneclient.auth import base
@ -24,7 +23,6 @@ from keystoneclient.auth import base
version='2.1.0', version='2.1.0',
removal_version='3.0.0' removal_version='3.0.0'
) )
@positional()
def register_argparse_arguments(parser, argv, default=None): def register_argparse_arguments(parser, argv, default=None):
"""Register CLI options needed to create a plugin. """Register CLI options needed to create a plugin.

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient.auth.identity import base from keystoneclient.auth.identity import base
@ -32,7 +30,6 @@ class AccessInfoPlugin(base.BaseIdentityPlugin):
if using the AUTH_INTERFACE with get_endpoint. (optional) if using the AUTH_INTERFACE with get_endpoint. (optional)
""" """
@positional()
def __init__(self, auth_ref, auth_url=None): def __init__(self, auth_ref, auth_url=None):
super(AccessInfoPlugin, self).__init__(auth_url=auth_url, super(AccessInfoPlugin, self).__init__(auth_url=auth_url,
reauthenticate=False) reauthenticate=False)

@ -16,7 +16,6 @@ import threading
import warnings import warnings
from oslo_config import cfg from oslo_config import cfg
from positional import positional
import six import six
from keystoneclient import _discover from keystoneclient import _discover
@ -366,7 +365,6 @@ class BaseIdentityPlugin(base.BaseAuthPlugin):
def get_project_id(self, session, **kwargs): def get_project_id(self, session, **kwargs):
return self.get_access(session).project_id return self.get_access(session).project_id
@positional()
def get_discovery(self, session, url, authenticated=None): def get_discovery(self, session, url, authenticated=None):
"""Return the discovery object for a URL. """Return the discovery object for a URL.

@ -11,7 +11,6 @@
# under the License. # under the License.
from oslo_config import cfg from oslo_config import cfg
from positional import positional
from keystoneclient.auth.identity.generic import password from keystoneclient.auth.identity.generic import password
from keystoneclient import exceptions as exc from keystoneclient import exceptions as exc
@ -25,7 +24,6 @@ class DefaultCLI(password.Password):
as well as allowing users to override with a custom token and endpoint. as well as allowing users to override with a custom token and endpoint.
""" """
@positional()
def __init__(self, endpoint=None, token=None, **kwargs): def __init__(self, endpoint=None, token=None, **kwargs):
super(DefaultCLI, self).__init__(**kwargs) super(DefaultCLI, self).__init__(**kwargs)

@ -11,7 +11,6 @@
# under the License. # under the License.
from oslo_config import cfg from oslo_config import cfg
from positional import positional
from keystoneclient import _discover from keystoneclient import _discover
from keystoneclient.auth.identity.generic import base from keystoneclient.auth.identity.generic import base
@ -42,7 +41,6 @@ class Password(base.BaseGenericPlugin):
""" """
@positional()
def __init__(self, auth_url, username=None, user_id=None, password=None, def __init__(self, auth_url, username=None, user_id=None, password=None,
user_domain_id=None, user_domain_name=None, **kwargs): user_domain_id=None, user_domain_name=None, **kwargs):
super(Password, self).__init__(auth_url=auth_url, **kwargs) super(Password, self).__init__(auth_url=auth_url, **kwargs)

@ -14,7 +14,6 @@ import abc
import logging import logging
from oslo_config import cfg from oslo_config import cfg
from positional import positional
import six import six
from keystoneclient import access from keystoneclient import access
@ -49,7 +48,6 @@ class Auth(base.BaseIdentityPlugin):
return options return options
@positional()
def __init__(self, auth_url, def __init__(self, auth_url,
trust_id=None, trust_id=None,
tenant_id=None, tenant_id=None,
@ -128,7 +126,6 @@ class Password(Auth):
:raises TypeError: if a user_id or username is not provided. :raises TypeError: if a user_id or username is not provided.
""" """
@positional(4)
def __init__(self, auth_url, username=_NOT_PASSED, password=None, def __init__(self, auth_url, username=_NOT_PASSED, password=None,
user_id=_NOT_PASSED, **kwargs): user_id=_NOT_PASSED, **kwargs):
super(Password, self).__init__(auth_url, **kwargs) super(Password, self).__init__(auth_url, **kwargs)

@ -15,7 +15,6 @@ import json
import logging import logging
from oslo_config import cfg from oslo_config import cfg
from positional import positional
import six import six
from keystoneclient import access from keystoneclient import access
@ -47,7 +46,6 @@ class BaseAuth(base.BaseIdentityPlugin):
token. (optional) default True. token. (optional) default True.
""" """
@positional()
def __init__(self, auth_url, def __init__(self, auth_url,
trust_id=None, trust_id=None,
domain_id=None, domain_id=None,

@ -11,7 +11,6 @@
# under the License. # under the License.
from oslo_config import cfg from oslo_config import cfg
from positional import positional
from keystoneclient import access from keystoneclient import access
from keystoneclient.auth.identity.v3 import federated from keystoneclient.auth.identity.v3 import federated
@ -42,7 +41,6 @@ class OidcPassword(federated.FederatedBaseAuth):
]) ])
return options return options
@positional(4)
def __init__(self, auth_url, identity_provider, protocol, def __init__(self, auth_url, identity_provider, protocol,
username, password, client_id, client_secret, username, password, client_id, client_secret,
access_token_endpoint, scope='profile', access_token_endpoint, scope='profile',

@ -14,7 +14,6 @@ import warnings
from debtcollector import removals from debtcollector import removals
from keystoneauth1 import plugin from keystoneauth1 import plugin
from positional import positional
from keystoneclient import _discover from keystoneclient import _discover
from keystoneclient import exceptions from keystoneclient import exceptions
@ -146,7 +145,6 @@ class Discover(_discover.Discover):
""" """
@positional(2)
def __init__(self, session=None, authenticated=None, **kwargs): def __init__(self, session=None, authenticated=None, **kwargs):
if not session: if not session:
warnings.warn( warnings.warn(

@ -25,7 +25,6 @@ from debtcollector import renames
from keystoneauth1 import adapter from keystoneauth1 import adapter
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
import pkg_resources import pkg_resources
from positional import positional
import requests import requests
try: try:
@ -241,7 +240,6 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
removal_version='2.0.0') removal_version='2.0.0')
@renames.renamed_kwarg('tenant_id', 'project_id', version='1.7.0', @renames.renamed_kwarg('tenant_id', 'project_id', version='1.7.0',
removal_version='2.0.0') removal_version='2.0.0')
@positional(enforcement=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,
token=None, auth_ref=None, use_keyring=False, token=None, auth_ref=None, use_keyring=False,
@ -483,7 +481,6 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
return self.project_name return self.project_name
@positional(enforcement=positional.WARN)
def authenticate(self, username=None, password=None, tenant_name=None, def authenticate(self, username=None, password=None, tenant_name=None,
tenant_id=None, auth_url=None, token=None, tenant_id=None, auth_url=None, token=None,
user_id=None, domain_name=None, domain_id=None, user_id=None, domain_name=None, domain_id=None,
@ -693,7 +690,6 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
# permanently setting _endpoint would better match that behaviour. # permanently setting _endpoint would better match that behaviour.
self._endpoint = value self._endpoint = value
@positional(enforcement=positional.WARN)
def get_raw_token_from_identity_service(self, auth_url, username=None, def get_raw_token_from_identity_service(self, auth_url, username=None,
password=None, tenant_name=None, password=None, tenant_name=None,
tenant_id=None, token=None, tenant_id=None, token=None,

@ -19,7 +19,6 @@
import abc import abc
import warnings import warnings
from positional import positional
import six import six
from keystoneclient import exceptions from keystoneclient import exceptions
@ -209,7 +208,6 @@ class ServiceCatalog(object):
return endpoints return endpoints
@abc.abstractmethod @abc.abstractmethod
@positional(enforcement=positional.WARN)
def get_urls(self, attr=None, filter_value=None, def get_urls(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='publicURL', service_type='identity', endpoint_type='publicURL',
region_name=None, service_name=None): region_name=None, service_name=None):
@ -233,7 +231,6 @@ class ServiceCatalog(object):
""" """
raise NotImplementedError() # pragma: no cover raise NotImplementedError() # pragma: no cover
@positional(3, enforcement=positional.WARN)
def url_for(self, attr=None, filter_value=None, def url_for(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='publicURL', service_type='identity', endpoint_type='publicURL',
region_name=None, service_name=None): region_name=None, service_name=None):
@ -348,7 +345,6 @@ class ServiceCatalogV2(ServiceCatalog):
pass pass
return token return token
@positional(enforcement=positional.WARN)
def get_urls(self, attr=None, filter_value=None, def get_urls(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='publicURL', service_type='identity', endpoint_type='publicURL',
region_name=None, service_name=None): region_name=None, service_name=None):
@ -415,7 +411,6 @@ class ServiceCatalogV3(ServiceCatalog):
pass pass
return token return token
@positional(enforcement=positional.WARN)
def get_urls(self, attr=None, filter_value=None, def get_urls(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='public', service_type='identity', endpoint_type='public',
region_name=None, service_name=None): region_name=None, service_name=None):

@ -25,7 +25,6 @@ from oslo_serialization import jsonutils
from oslo_utils import encodeutils from oslo_utils import encodeutils
from oslo_utils import importutils from oslo_utils import importutils
from oslo_utils import strutils from oslo_utils import strutils
from positional import positional
import requests import requests
import six import six
from six.moves import urllib from six.moves import urllib
@ -134,7 +133,6 @@ class Session(object):
"""This property is deprecated as of the 1.7.0 release and may be removed """This property is deprecated as of the 1.7.0 release and may be removed
in the 2.0.0 release.""" in the 2.0.0 release."""
@positional(2, enforcement=positional.WARN)
def __init__(self, auth=None, session=None, original_ip=None, verify=True, def __init__(self, auth=None, session=None, original_ip=None, verify=True,
cert=None, timeout=None, user_agent=None, cert=None, timeout=None, user_agent=None,
redirect=_DEFAULT_REDIRECT_LIMIT): redirect=_DEFAULT_REDIRECT_LIMIT):
@ -177,7 +175,6 @@ class Session(object):
return (header[0], '{SHA1}%s' % token_hash) return (header[0], '{SHA1}%s' % token_hash)
return header return header
@positional()
def _http_log_request(self, url, method=None, data=None, def _http_log_request(self, url, method=None, data=None,
headers=None, logger=_logger): headers=None, logger=_logger):
if not logger.isEnabledFor(logging.DEBUG): if not logger.isEnabledFor(logging.DEBUG):
@ -256,7 +253,6 @@ class Session(object):
logger.debug(' '.join(string_parts)) logger.debug(' '.join(string_parts))
# NOTE(artmr): parameter 'original_ip' value is never used # NOTE(artmr): parameter 'original_ip' value is never used
@positional(enforcement=positional.WARN)
def request(self, url, method, json=None, original_ip=None, def request(self, url, method, json=None, original_ip=None,
user_agent=None, redirect=None, authenticated=None, user_agent=None, redirect=None, authenticated=None,
endpoint_filter=None, auth=None, requests_auth=None, endpoint_filter=None, auth=None, requests_auth=None,
@ -806,7 +802,7 @@ class Session(object):
auth = self._auth_required(auth, msg) auth = self._auth_required(auth, msg)
return auth.get_project_id(self) return auth.get_project_id(self)
@positional.classmethod() @classmethod
def get_conf_options(cls, deprecated_opts=None): def get_conf_options(cls, deprecated_opts=None):
"""Get oslo_config options that are needed for a :py:class:`.Session`. """Get oslo_config options that are needed for a :py:class:`.Session`.
@ -855,7 +851,7 @@ class Session(object):
help='Timeout value for http requests'), help='Timeout value for http requests'),
] ]
@positional.classmethod() @classmethod
def register_conf_options(cls, conf, group, deprecated_opts=None): def register_conf_options(cls, conf, group, deprecated_opts=None):
"""Register the oslo_config options that are needed for a session. """Register the oslo_config options that are needed for a session.

@ -64,11 +64,6 @@ class TokenTests(utils.ClientTestCase, testresources.ResourcedTestCase):
self.assertQueryStringIs('audit_id_only') self.assertQueryStringIs('audit_id_only')
self.assertEqual(sample_revoked_response, resp) self.assertEqual(sample_revoked_response, resp)
def test_get_revoked_audit_id_only_positional_exc(self):
# When get_revoked(True) an exception is raised because this must be
# called with named parameter.
self.assertRaises(TypeError, self.client.tokens.get_revoked, True)
def test_validate_token_with_token_id(self): def test_validate_token_with_token_id(self):
# Can validate a token passing a string token ID. # Can validate a token passing a string token ID.
token_id = uuid.uuid4().hex token_id = uuid.uuid4().hex

@ -16,9 +16,6 @@ import sys
from keystoneauth1 import exceptions as ksa_exceptions from keystoneauth1 import exceptions as ksa_exceptions
from oslo_utils import timeutils from oslo_utils import timeutils
# NOTE(stevemar): do not remove positional. We need this to stay for a while
# since versions of auth_token require it here.
from positional import positional # noqa
import six import six
from keystoneclient import exceptions as ksc_exceptions from keystoneclient import exceptions as ksc_exceptions

@ -12,7 +12,6 @@
from keystoneauth1 import exceptions from keystoneauth1 import exceptions
from keystoneauth1 import plugin from keystoneauth1 import plugin
from positional import positional
from keystoneclient import access from keystoneclient import access
from keystoneclient import base from keystoneclient import base
@ -40,7 +39,6 @@ class Token(base.Resource):
class TokenManager(base.Manager): class TokenManager(base.Manager):
resource_class = Token resource_class = Token
@positional(enforcement=positional.WARN)
def authenticate(self, username=None, tenant_id=None, tenant_name=None, def authenticate(self, username=None, tenant_id=None, tenant_name=None,
password=None, token=None, return_raw=False): password=None, token=None, return_raw=False):
if token: if token:

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -40,7 +38,6 @@ class IdentityProviderManager(base.CrudManager):
return self._update(url, body=body, response_key=self.key, return self._update(url, body=body, response_key=self.key,
method='PUT') method='PUT')
@positional.method(0)
def create(self, id, **kwargs): def create(self, id, **kwargs):
"""Create Identity Provider object. """Create Identity Provider object.

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -41,7 +39,6 @@ class MappingManager(base.CrudManager):
response_key=self.key, response_key=self.key,
method='PUT') method='PUT')
@positional.method(0)
def create(self, mapping_id, **kwargs): def create(self, mapping_id, **kwargs):
"""Create federation mapping. """Create federation mapping.

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -57,7 +55,6 @@ class ProtocolManager(base.CrudManager):
response_key=self.key, response_key=self.key,
method='PUT') method='PUT')
@positional.method(3)
def create(self, protocol_id, identity_provider, mapping, **kwargs): def create(self, protocol_id, identity_provider, mapping, **kwargs):
"""Create federation protocol object and tie to the Identity Provider. """Create federation protocol object and tie to the Identity Provider.

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -42,7 +40,6 @@ class ServiceProviderManager(base.CrudManager):
return self._update(url, body=body, response_key=self.key, return self._update(url, body=body, response_key=self.key,
method='PUT') method='PUT')
@positional.method(0)
def create(self, id, **kwargs): def create(self, id, **kwargs):
"""Create Service Provider object. """Create Service Provider object.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -41,7 +39,6 @@ class CredentialManager(base.CrudManager):
collection_key = 'credentials' collection_key = 'credentials'
key = 'credential' key = 'credential'
@positional(1, enforcement=positional.WARN)
def create(self, user, type, blob, project=None, **kwargs): def create(self, user, type, blob, project=None, **kwargs):
"""Create a credential. """Create a credential.
@ -95,7 +92,6 @@ class CredentialManager(base.CrudManager):
""" """
return super(CredentialManager, self).list(**kwargs) return super(CredentialManager, self).list(**kwargs)
@positional(2, enforcement=positional.WARN)
def update(self, credential, user, type=None, blob=None, project=None, def update(self, credential, user, type=None, blob=None, project=None,
**kwargs): **kwargs):
"""Update a credential. """Update a credential.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -40,7 +38,6 @@ class DomainManager(base.CrudManager):
collection_key = 'domains' collection_key = 'domains'
key = 'domain' key = 'domain'
@positional(1, enforcement=positional.WARN)
def create(self, name, description=None, enabled=True, **kwargs): def create(self, name, description=None, enabled=True, **kwargs):
"""Create a domain. """Create a domain.
@ -89,7 +86,6 @@ class DomainManager(base.CrudManager):
kwargs['enabled'] = 0 kwargs['enabled'] = 0
return super(DomainManager, self).list(**kwargs) return super(DomainManager, self).list(**kwargs)
@positional(enforcement=positional.WARN)
def update(self, domain, name=None, def update(self, domain, name=None,
description=None, enabled=None, **kwargs): description=None, enabled=None, **kwargs):
"""Update a domain. """Update a domain.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
from keystoneclient import exceptions from keystoneclient import exceptions
from keystoneclient.i18n import _ from keystoneclient.i18n import _
@ -54,7 +52,6 @@ class EndpointManager(base.CrudManager):
msg %= ', '.join(VALID_INTERFACES) msg %= ', '.join(VALID_INTERFACES)
raise exceptions.ValidationError(msg) raise exceptions.ValidationError(msg)
@positional(1, enforcement=positional.WARN)
def create(self, service, url, interface=None, region=None, enabled=True, def create(self, service, url, interface=None, region=None, enabled=True,
**kwargs): **kwargs):
"""Create an endpoint. """Create an endpoint.
@ -97,7 +94,6 @@ class EndpointManager(base.CrudManager):
return super(EndpointManager, self).get( return super(EndpointManager, self).get(
endpoint_id=base.getid(endpoint)) endpoint_id=base.getid(endpoint))
@positional(enforcement=positional.WARN)
def list(self, service=None, interface=None, region=None, enabled=None, def list(self, service=None, interface=None, region=None, enabled=None,
region_id=None, **kwargs): region_id=None, **kwargs):
"""List endpoints. """List endpoints.
@ -128,7 +124,6 @@ class EndpointManager(base.CrudManager):
enabled=enabled, enabled=enabled,
**kwargs) **kwargs)
@positional(enforcement=positional.WARN)
def update(self, endpoint, service=None, url=None, interface=None, def update(self, endpoint, service=None, url=None, interface=None,
region=None, enabled=None, **kwargs): region=None, enabled=None, **kwargs):
"""Update an endpoint. """Update an endpoint.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -29,7 +27,6 @@ class Group(base.Resource):
""" """
@positional(enforcement=positional.WARN)
def update(self, name=None, description=None): def update(self, name=None, description=None):
kwargs = { kwargs = {
'name': name if name is not None else self.name, 'name': name if name is not None else self.name,
@ -54,7 +51,6 @@ class GroupManager(base.CrudManager):
collection_key = 'groups' collection_key = 'groups'
key = 'group' key = 'group'
@positional(1, enforcement=positional.WARN)
def create(self, name, domain=None, description=None, **kwargs): def create(self, name, domain=None, description=None, **kwargs):
"""Create a group. """Create a group.
@ -75,7 +71,6 @@ class GroupManager(base.CrudManager):
description=description, description=description,
**kwargs) **kwargs)
@positional(enforcement=positional.WARN)
def list(self, user=None, domain=None, **kwargs): def list(self, user=None, domain=None, **kwargs):
"""List groups. """List groups.
@ -111,7 +106,6 @@ class GroupManager(base.CrudManager):
return super(GroupManager, self).get( return super(GroupManager, self).get(
group_id=base.getid(group)) group_id=base.getid(group))
@positional(enforcement=positional.WARN)
def update(self, group, name=None, description=None, **kwargs): def update(self, group, name=None, description=None, **kwargs):
"""Update a group. """Update a group.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -29,7 +27,6 @@ class Policy(base.Resource):
""" """
@positional(enforcement=positional.WARN)
def update(self, blob=None, type=None): def update(self, blob=None, type=None):
kwargs = { kwargs = {
'blob': blob if blob is not None else self.blob, 'blob': blob if blob is not None else self.blob,
@ -52,7 +49,6 @@ class PolicyManager(base.CrudManager):
collection_key = 'policies' collection_key = 'policies'
key = 'policy' key = 'policy'
@positional(1, enforcement=positional.WARN)
def create(self, blob, type='application/json', **kwargs): def create(self, blob, type='application/json', **kwargs):
"""Create a policy. """Create a policy.
@ -95,7 +91,6 @@ class PolicyManager(base.CrudManager):
""" """
return super(PolicyManager, self).list(**kwargs) return super(PolicyManager, self).list(**kwargs)
@positional(enforcement=positional.WARN)
def update(self, policy, blob=None, type=None, **kwargs): def update(self, policy, blob=None, type=None, **kwargs):
"""Update a policy. """Update a policy.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
from keystoneclient import exceptions from keystoneclient import exceptions
from keystoneclient.i18n import _ from keystoneclient.i18n import _
@ -37,7 +35,6 @@ class Project(base.Resource):
""" """
@positional(enforcement=positional.WARN)
def update(self, name=None, description=None, enabled=None): def update(self, name=None, description=None, enabled=None):
kwargs = { kwargs = {
'name': name if name is not None else self.name, 'name': name if name is not None else self.name,
@ -63,7 +60,6 @@ class ProjectManager(base.CrudManager):
collection_key = 'projects' collection_key = 'projects'
key = 'project' key = 'project'
@positional(3, enforcement=positional.WARN)
def create(self, name, domain, description=None, def create(self, name, domain, description=None,
enabled=True, parent=None, **kwargs): enabled=True, parent=None, **kwargs):
"""Create a project. """Create a project.
@ -96,7 +92,6 @@ class ProjectManager(base.CrudManager):
enabled=enabled, enabled=enabled,
**kwargs) **kwargs)
@positional(enforcement=positional.WARN)
def list(self, domain=None, user=None, **kwargs): def list(self, domain=None, user=None, **kwargs):
"""List projects. """List projects.
@ -132,7 +127,6 @@ class ProjectManager(base.CrudManager):
'parameters, not both') 'parameters, not both')
raise exceptions.ValidationError(msg) raise exceptions.ValidationError(msg)
@positional()
def get(self, project, subtree_as_list=False, parents_as_list=False, def get(self, project, subtree_as_list=False, parents_as_list=False,
subtree_as_ids=False, parents_as_ids=False): subtree_as_ids=False, parents_as_ids=False):
"""Retrieve a project. """Retrieve a project.
@ -182,7 +176,6 @@ class ProjectManager(base.CrudManager):
url = self.build_url(dict_args_in_out=dict_args) url = self.build_url(dict_args_in_out=dict_args)
return self._get(url + query, self.key) return self._get(url + query, self.key)
@positional(enforcement=positional.WARN)
def update(self, project, name=None, domain=None, description=None, def update(self, project, name=None, domain=None, description=None,
enabled=None, **kwargs): enabled=None, **kwargs):
"""Update a project. """Update a project.

@ -15,7 +15,6 @@
# under the License. # under the License.
from debtcollector import removals from debtcollector import removals
from positional import positional
from keystoneclient import base from keystoneclient import base
from keystoneclient import exceptions from keystoneclient import exceptions
@ -96,7 +95,6 @@ class RoleManager(base.CrudManager):
msg = _('Must specify either a user or group') msg = _('Must specify either a user or group')
raise exceptions.ValidationError(msg) raise exceptions.ValidationError(msg)
@positional(1, enforcement=positional.WARN)
def create(self, name, domain=None, **kwargs): def create(self, name, domain=None, **kwargs):
"""Create a role. """Create a role.
@ -132,7 +130,6 @@ class RoleManager(base.CrudManager):
""" """
return super(RoleManager, self).get(role_id=base.getid(role)) return super(RoleManager, self).get(role_id=base.getid(role))
@positional(enforcement=positional.WARN)
def list(self, user=None, group=None, domain=None, def list(self, user=None, group=None, domain=None,
project=None, os_inherit_extension_inherited=False, **kwargs): project=None, os_inherit_extension_inherited=False, **kwargs):
"""List roles and role grants. """List roles and role grants.
@ -178,7 +175,6 @@ class RoleManager(base.CrudManager):
return super(RoleManager, self).list(**kwargs) return super(RoleManager, self).list(**kwargs)
@positional(enforcement=positional.WARN)
def update(self, role, name=None, **kwargs): def update(self, role, name=None, **kwargs):
"""Update a role. """Update a role.
@ -212,7 +208,6 @@ class RoleManager(base.CrudManager):
return super(RoleManager, self).delete( return super(RoleManager, self).delete(
role_id=base.getid(role)) role_id=base.getid(role))
@positional(enforcement=positional.WARN)
def grant(self, role, user=None, group=None, domain=None, project=None, def grant(self, role, user=None, group=None, domain=None, project=None,
os_inherit_extension_inherited=False, **kwargs): os_inherit_extension_inherited=False, **kwargs):
"""Grant a role to a user or group on a domain or project. """Grant a role to a user or group on a domain or project.
@ -259,7 +254,6 @@ class RoleManager(base.CrudManager):
role_id=base.getid(role), role_id=base.getid(role),
**kwargs) **kwargs)
@positional(enforcement=positional.WARN)
def check(self, role, user=None, group=None, domain=None, project=None, def check(self, role, user=None, group=None, domain=None, project=None,
os_inherit_extension_inherited=False, **kwargs): os_inherit_extension_inherited=False, **kwargs):
"""Check if a user or group has a role on a domain or project. """Check if a user or group has a role on a domain or project.
@ -310,7 +304,6 @@ class RoleManager(base.CrudManager):
os_inherit_extension_inherited=os_inherit_extension_inherited, os_inherit_extension_inherited=os_inherit_extension_inherited,
**kwargs) **kwargs)
@positional(enforcement=positional.WARN)
def revoke(self, role, user=None, group=None, domain=None, project=None, def revoke(self, role, user=None, group=None, domain=None, project=None,
os_inherit_extension_inherited=False, **kwargs): os_inherit_extension_inherited=False, **kwargs):
"""Revoke a role from a user or group on a domain or project. """Revoke a role from a user or group on a domain or project.

@ -14,8 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import base from keystoneclient import base
@ -41,7 +39,6 @@ class ServiceManager(base.CrudManager):
collection_key = 'services' collection_key = 'services'
key = 'service' key = 'service'
@positional(1, enforcement=positional.WARN)
def create(self, name, type=None, def create(self, name, type=None,
enabled=True, description=None, **kwargs): enabled=True, description=None, **kwargs):
"""Create a service. """Create a service.
@ -78,7 +75,6 @@ class ServiceManager(base.CrudManager):
return super(ServiceManager, self).get( return super(ServiceManager, self).get(
service_id=base.getid(service)) service_id=base.getid(service))
@positional(enforcement=positional.WARN)
def list(self, name=None, type=None, **kwargs): def list(self, name=None, type=None, **kwargs):
"""List services. """List services.
@ -96,7 +92,6 @@ class ServiceManager(base.CrudManager):
type=type_arg, type=type_arg,
**kwargs) **kwargs)
@positional(enforcement=positional.WARN)
def update(self, service, name=None, type=None, enabled=None, def update(self, service, name=None, type=None, enabled=None,
description=None, **kwargs): description=None, **kwargs):
"""Update a service. """Update a service.

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from positional import positional
from keystoneclient import access from keystoneclient import access
from keystoneclient import base from keystoneclient import base
@ -40,7 +38,6 @@ class TokenManager(object):
headers = {'X-Subject-Token': token_id} headers = {'X-Subject-Token': token_id}
return self._client.delete('/auth/tokens', headers=headers) return self._client.delete('/auth/tokens', headers=headers)
@positional.method(0)
def get_revoked(self, audit_id_only=False): def get_revoked(self, audit_id_only=False):
"""Get revoked tokens list. """Get revoked tokens list.
@ -60,7 +57,6 @@ class TokenManager(object):
resp, body = self._client.get(path) resp, body = self._client.get(path)
return body return body
@positional.method(1)
def get_token_data(self, token, include_catalog=True, allow_expired=False): def get_token_data(self, token, include_catalog=True, allow_expired=False):
"""Fetch the data about a token from the identity server. """Fetch the data about a token from the identity server.
@ -89,7 +85,6 @@ class TokenManager(object):
resp, body = self._client.get(url, headers=headers) resp, body = self._client.get(url, headers=headers)
return body return body
@positional.method(1)
def validate(self, token, include_catalog=True, allow_expired=False): def validate(self, token, include_catalog=True, allow_expired=False):
"""Validate a token. """Validate a token.

@ -15,7 +15,6 @@
# under the License. # under the License.
from debtcollector import renames from debtcollector import renames
from positional import positional
from keystoneclient import base from keystoneclient import base
from keystoneclient import exceptions from keystoneclient import exceptions
@ -47,7 +46,6 @@ class UserManager(base.CrudManager):
@renames.renamed_kwarg('project', 'default_project', version='1.7.0', @renames.renamed_kwarg('project', 'default_project', version='1.7.0',
removal_version='2.0.0') removal_version='2.0.0')
@positional(1, enforcement=positional.WARN)
def create(self, name, domain=None, project=None, password=None, def create(self, name, domain=None, project=None, password=None,
email=None, description=None, enabled=True, email=None, description=None, enabled=True,
default_project=None, **kwargs): default_project=None, **kwargs):
@ -96,7 +94,6 @@ class UserManager(base.CrudManager):
@renames.renamed_kwarg('project', 'default_project', version='1.7.0', @renames.renamed_kwarg('project', 'default_project', version='1.7.0',
removal_version='2.0.0') removal_version='2.0.0')
@positional(enforcement=positional.WARN)
def list(self, project=None, domain=None, group=None, default_project=None, def list(self, project=None, domain=None, group=None, default_project=None,
**kwargs): **kwargs):
"""List users. """List users.
@ -153,7 +150,6 @@ class UserManager(base.CrudManager):
@renames.renamed_kwarg('project', 'default_project', version='1.7.0', @renames.renamed_kwarg('project', 'default_project', version='1.7.0',
removal_version='2.0.0') removal_version='2.0.0')
@positional(enforcement=positional.WARN)
def update(self, user, name=None, domain=None, project=None, password=None, def update(self, user, name=None, domain=None, project=None, password=None,
email=None, description=None, enabled=None, email=None, description=None, enabled=None,
default_project=None, **kwargs): default_project=None, **kwargs):

@ -10,7 +10,6 @@ oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0
oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0 oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0
oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0 oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0
oslo.utils>=3.20.0 # Apache-2.0 oslo.utils>=3.20.0 # Apache-2.0
positional>=1.1.1 # Apache-2.0
requests>=2.14.2 # Apache-2.0 requests>=2.14.2 # Apache-2.0
six>=1.9.0 # MIT six>=1.9.0 # MIT
stevedore>=1.20.0 # Apache-2.0 stevedore>=1.20.0 # Apache-2.0