Start using positional decorator

Apply the positional decorator to functions. It has been added as I
think best practice would dictate, though in some places it has been
added in a way that doesn't break existing tests.

Closes-Bug: #1295881
Change-Id: I4f7ddbede4cba4ab79d144ad1f9dc83ea76f204a
This commit is contained in:
Jamie Lennox
2014-02-28 13:31:00 +10:00
parent 67e99991d5
commit 0788f53fa1
15 changed files with 56 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import six
from keystoneclient import access
from keystoneclient.auth.identity import base
from keystoneclient import exceptions
from keystoneclient import utils
@six.add_metaclass(abc.ABCMeta)
@@ -51,6 +52,7 @@ class Auth(base.BaseIdentityPlugin):
msg = 'A username and password or token is required.'
raise exceptions.NoMatchingPlugin(msg)
@utils.positional()
def __init__(self, auth_url,
trust_id=None,
tenant_id=None,

View File

@@ -20,12 +20,14 @@ import six
from keystoneclient import access
from keystoneclient.auth.identity import base
from keystoneclient import exceptions
from keystoneclient import utils
_logger = logging.getLogger(__name__)
class Auth(base.BaseIdentityPlugin):
@utils.positional()
def __init__(self, auth_url, auth_methods,
trust_id=None,
domain_id=None,

View File

@@ -42,6 +42,7 @@ from keystoneclient import baseclient
from keystoneclient import exceptions
from keystoneclient.openstack.common import jsonutils
from keystoneclient import session as client_session
from keystoneclient import utils
_logger = logging.getLogger(__name__)
@@ -54,6 +55,7 @@ request = client_session.request
class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
@utils.positional(enforcement=utils.positional.WARN)
def __init__(self, username=None, tenant_id=None, tenant_name=None,
password=None, auth_url=None, region_name=None, endpoint=None,
token=None, debug=False, auth_ref=None, use_keyring=False,
@@ -287,6 +289,7 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
"""
return self.project_name
@utils.positional(enforcement=utils.positional.WARN)
def authenticate(self, username=None, password=None, tenant_name=None,
tenant_id=None, auth_url=None, token=None,
user_id=None, domain_name=None, domain_id=None,
@@ -496,6 +499,7 @@ class HTTPClient(baseclient.Client, base.BaseAuthPlugin):
# permanently setting _endpoint would better match that behaviour.
self._endpoint = value
@utils.positional(enforcement=utils.positional.WARN)
def get_raw_token_from_identity_service(self, auth_url, username=None,
password=None, tenant_name=None,
tenant_id=None, token=None,

View File

@@ -21,6 +21,7 @@ import abc
import six
from keystoneclient import exceptions
from keystoneclient import utils
@six.add_metaclass(abc.ABCMeta)
@@ -140,6 +141,7 @@ class ServiceCatalog(object):
return endpoints
@abc.abstractmethod
@utils.positional(enforcement=utils.positional.WARN)
def get_urls(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='publicURL',
region_name=None):
@@ -162,6 +164,7 @@ class ServiceCatalog(object):
"""
raise NotImplementedError()
@utils.positional(3, enforcement=utils.positional.WARN)
def url_for(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='publicURL',
region_name=None):
@@ -248,6 +251,7 @@ class ServiceCatalogV2(ServiceCatalog):
pass
return token
@utils.positional(enforcement=utils.positional.WARN)
def get_urls(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='publicURL',
region_name=None):
@@ -312,6 +316,7 @@ class ServiceCatalogV3(ServiceCatalog):
pass
return token
@utils.positional(enforcement=utils.positional.WARN)
def get_urls(self, attr=None, filter_value=None,
service_type='identity', endpoint_type='public',
region_name=None):

View File

@@ -17,6 +17,7 @@ import six
from keystoneclient import exceptions
from keystoneclient.openstack.common import jsonutils
from keystoneclient import utils
USER_AGENT = 'python-keystoneclient'
@@ -51,6 +52,7 @@ class Session(object):
REDIRECT_STATUSES = (301, 302, 303, 305, 307)
DEFAULT_REDIRECT_LIMIT = 30
@utils.positional(2, enforcement=utils.positional.WARN)
def __init__(self, auth=None, session=None, original_ip=None, verify=True,
cert=None, timeout=None, user_agent=None,
redirect=DEFAULT_REDIRECT_LIMIT):
@@ -108,6 +110,7 @@ class Session(object):
if user_agent is not None:
self.user_agent = user_agent
@utils.positional(enforcement=utils.positional.WARN)
def request(self, url, method, json=None, original_ip=None,
user_agent=None, redirect=None, authenticated=None,
**kwargs):

View File

@@ -11,6 +11,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Token(base.Resource):
@@ -33,6 +34,7 @@ class Token(base.Resource):
class TokenManager(base.Manager):
resource_class = Token
@utils.positional(enforcement=utils.positional.WARN)
def authenticate(self, username=None, tenant_id=None, tenant_name=None,
password=None, token=None, return_raw=False):
if token:

View File

@@ -15,6 +15,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Credential(base.Resource):
@@ -47,6 +48,7 @@ class CredentialManager(base.CrudManager):
raise ValueError(
"Credential requires blob to be specified")
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, user, type, blob=None, data=None, project=None, **kwargs):
return super(CredentialManager, self).create(
user_id=base.getid(user),
@@ -67,6 +69,7 @@ class CredentialManager(base.CrudManager):
"""
return super(CredentialManager, self).list(**kwargs)
@utils.positional(2, enforcement=utils.positional.WARN)
def update(self, credential, user, type=None, blob=None, data=None,
project=None, **kwargs):
return super(CredentialManager, self).update(

View File

@@ -15,6 +15,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Domain(base.Resource):
@@ -33,6 +34,7 @@ class DomainManager(base.CrudManager):
collection_key = 'domains'
key = 'domain'
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, name, description=None, enabled=True, **kwargs):
return super(DomainManager, self).create(
name=name,
@@ -56,6 +58,7 @@ class DomainManager(base.CrudManager):
kwargs['enabled'] = 0
return super(DomainManager, self).list(**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def update(self, domain, name=None,
description=None, enabled=True, **kwargs):
return super(DomainManager, self).update(

View File

@@ -16,6 +16,7 @@
from keystoneclient import base
from keystoneclient import exceptions
from keystoneclient import utils
VALID_INTERFACES = ['public', 'admin', 'internal']
@@ -48,6 +49,7 @@ class EndpointManager(base.CrudManager):
msg = msg % ', '.join(VALID_INTERFACES)
raise exceptions.ValidationError(msg)
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, service, url, interface=None, region=None, enabled=True,
**kwargs):
self._validate_interface(interface)
@@ -63,6 +65,7 @@ class EndpointManager(base.CrudManager):
return super(EndpointManager, self).get(
endpoint_id=base.getid(endpoint))
@utils.positional(enforcement=utils.positional.WARN)
def list(self, service=None, interface=None, region=None, enabled=None,
**kwargs):
"""List endpoints.
@@ -78,6 +81,7 @@ class EndpointManager(base.CrudManager):
enabled=enabled,
**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def update(self, endpoint, service=None, url=None, interface=None,
region=None, enabled=None, **kwargs):
self._validate_interface(interface)

View File

@@ -15,6 +15,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Group(base.Resource):
@@ -26,6 +27,7 @@ class Group(base.Resource):
* description: group description
"""
@utils.positional(enforcement=utils.positional.WARN)
def update(self, name=None, description=None):
kwargs = {
'name': name if name is not None else self.name,
@@ -49,6 +51,7 @@ class GroupManager(base.CrudManager):
collection_key = 'groups'
key = 'group'
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, name, domain=None, description=None, **kwargs):
return super(GroupManager, self).create(
name=name,
@@ -56,6 +59,7 @@ class GroupManager(base.CrudManager):
description=description,
**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def list(self, user=None, domain=None, **kwargs):
"""List groups.
@@ -78,6 +82,7 @@ class GroupManager(base.CrudManager):
return super(GroupManager, self).get(
group_id=base.getid(group))
@utils.positional(enforcement=utils.positional.WARN)
def update(self, group, name=None, description=None, **kwargs):
return super(GroupManager, self).update(
group_id=base.getid(group),

View File

@@ -15,6 +15,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Policy(base.Resource):
@@ -26,6 +27,7 @@ class Policy(base.Resource):
* type: the mime type of the policy blob
"""
@utils.positional(enforcement=utils.positional.WARN)
def update(self, blob=None, type=None):
kwargs = {
'blob': blob if blob is not None else self.blob,
@@ -47,6 +49,7 @@ class PolicyManager(base.CrudManager):
collection_key = 'policies'
key = 'policy'
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, blob, type='application/json', **kwargs):
return super(PolicyManager, self).create(
blob=blob,
@@ -65,6 +68,7 @@ class PolicyManager(base.CrudManager):
"""
return super(PolicyManager, self).list(**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def update(self, entity, blob=None, type=None, **kwargs):
return super(PolicyManager, self).update(
policy_id=base.getid(entity),

View File

@@ -15,6 +15,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Project(base.Resource):
@@ -27,6 +28,7 @@ class Project(base.Resource):
* enabled: boolean to indicate if project is enabled
"""
@utils.positional(enforcement=utils.positional.WARN)
def update(self, name=None, description=None, enabled=None):
kwargs = {
'name': name if name is not None else self.name,
@@ -51,6 +53,7 @@ class ProjectManager(base.CrudManager):
collection_key = 'projects'
key = 'project'
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, name, domain, description=None, enabled=True, **kwargs):
return super(ProjectManager, self).create(
domain_id=base.getid(domain),
@@ -59,6 +62,7 @@ class ProjectManager(base.CrudManager):
enabled=enabled,
**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def list(self, domain=None, user=None, **kwargs):
"""List projects.
@@ -78,6 +82,7 @@ class ProjectManager(base.CrudManager):
return super(ProjectManager, self).get(
project_id=base.getid(project))
@utils.positional(enforcement=utils.positional.WARN)
def update(self, project, name=None, domain=None, description=None,
enabled=None, **kwargs):
return super(ProjectManager, self).update(

View File

@@ -16,6 +16,7 @@
from keystoneclient import base
from keystoneclient import exceptions
from keystoneclient import utils
class Role(base.Resource):
@@ -72,6 +73,7 @@ class RoleManager(base.CrudManager):
msg = 'Must specify either a user or group'
raise exceptions.ValidationError(msg)
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, name, **kwargs):
return super(RoleManager, self).create(
name=name,
@@ -81,6 +83,7 @@ class RoleManager(base.CrudManager):
return super(RoleManager, self).get(
role_id=base.getid(role))
@utils.positional(enforcement=utils.positional.WARN)
def list(self, user=None, group=None, domain=None, project=None, **kwargs):
"""Lists roles and role grants.
@@ -104,6 +107,7 @@ class RoleManager(base.CrudManager):
return super(RoleManager, self).list(**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def update(self, role, name=None, **kwargs):
return super(RoleManager, self).update(
role_id=base.getid(role),
@@ -114,6 +118,7 @@ class RoleManager(base.CrudManager):
return super(RoleManager, self).delete(
role_id=base.getid(role))
@utils.positional(enforcement=utils.positional.WARN)
def grant(self, role, user=None, group=None, domain=None, project=None):
"""Grants a role to a user or group on a domain or project."""
self._require_domain_xor_project(domain, project)
@@ -123,6 +128,7 @@ class RoleManager(base.CrudManager):
base_url=self._role_grants_base_url(user, group, domain, project),
role_id=base.getid(role))
@utils.positional(enforcement=utils.positional.WARN)
def check(self, role, user=None, group=None, domain=None, project=None):
"""Checks if a user or group has a role on a domain or project."""
self._require_domain_xor_project(domain, project)
@@ -132,6 +138,7 @@ class RoleManager(base.CrudManager):
base_url=self._role_grants_base_url(user, group, domain, project),
role_id=base.getid(role))
@utils.positional(enforcement=utils.positional.WARN)
def revoke(self, role, user=None, group=None, domain=None, project=None):
"""Revokes a role from a user or group on a domain or project."""
self._require_domain_xor_project(domain, project)

View File

@@ -15,6 +15,7 @@
# under the License.
from keystoneclient import base
from keystoneclient import utils
class Service(base.Resource):
@@ -36,6 +37,7 @@ class ServiceManager(base.CrudManager):
collection_key = 'services'
key = 'service'
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, name, type, enabled=True, **kwargs):
return super(ServiceManager, self).create(
name=name,
@@ -47,6 +49,7 @@ class ServiceManager(base.CrudManager):
return super(ServiceManager, self).get(
service_id=base.getid(service))
@utils.positional(enforcement=utils.positional.WARN)
def update(self, service, name=None, type=None, enabled=None, **kwargs):
return super(ServiceManager, self).update(
service_id=base.getid(service),

View File

@@ -18,7 +18,7 @@ import logging
from keystoneclient import base
from keystoneclient import exceptions
from keystoneclient import utils
LOG = logging.getLogger(__name__)
@@ -44,6 +44,7 @@ class UserManager(base.CrudManager):
msg = 'Specify both a user and a group'
raise exceptions.ValidationError(msg)
@utils.positional(1, enforcement=utils.positional.WARN)
def create(self, name, domain=None, project=None, password=None,
email=None, description=None, enabled=True,
default_project=None, **kwargs):
@@ -70,6 +71,7 @@ class UserManager(base.CrudManager):
enabled=enabled,
**kwargs)
@utils.positional(enforcement=utils.positional.WARN)
def list(self, project=None, domain=None, group=None, default_project=None,
**kwargs):
"""List users.
@@ -106,6 +108,7 @@ class UserManager(base.CrudManager):
return super(UserManager, self).get(
user_id=base.getid(user))
@utils.positional(enforcement=utils.positional.WARN)
def update(self, user, name=None, domain=None, project=None, password=None,
email=None, description=None, enabled=None,
default_project=None, **kwargs):