From 6c84d7bf8567bfa3024cd38f80c01ed84768a89c Mon Sep 17 00:00:00 2001 From: Dolph Mathews <dolph.mathews@gmail.com> Date: Tue, 11 Sep 2012 15:42:38 -0500 Subject: [PATCH] v3 Credential CRUD Change-Id: I646ff7db3ccf827f912ebdb78fdf8d765d52c26c --- keystoneclient/v3/client.py | 2 ++ keystoneclient/v3/credentials.py | 57 ++++++++++++++++++++++++++++++++ tests/v3/test_credentials.py | 22 ++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 keystoneclient/v3/credentials.py create mode 100644 tests/v3/test_credentials.py diff --git a/keystoneclient/v3/client.py b/keystoneclient/v3/client.py index 75b32630a..51672a738 100644 --- a/keystoneclient/v3/client.py +++ b/keystoneclient/v3/client.py @@ -16,6 +16,7 @@ import json import logging from keystoneclient.v2_0 import client +from keystoneclient.v3 import credentials from keystoneclient.v3 import endpoints from keystoneclient.v3 import domains from keystoneclient.v3 import policies @@ -64,6 +65,7 @@ class Client(client.Client): """ Initialize a new client for the Keystone v2.0 API. """ super(Client, self).__init__(endpoint=endpoint, **kwargs) + self.credentials = credentials.CredentialManager(self) self.endpoints = endpoints.EndpointManager(self) self.domains = domains.DomainManager(self) self.policies = policies.PolicyManager(self) diff --git a/keystoneclient/v3/credentials.py b/keystoneclient/v3/credentials.py new file mode 100644 index 000000000..264c367e7 --- /dev/null +++ b/keystoneclient/v3/credentials.py @@ -0,0 +1,57 @@ +# Copyright 2011 OpenStack LLC. +# Copyright 2011 Nebula, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from keystoneclient import base + + +class Credential(base.Resource): + """Represents an Identity credential. + + Attributes: + * id: a uuid that identifies the credential + + """ + pass + + +class CredentialManager(base.CrudManager): + """Manager class for manipulating Identity credentials.""" + resource_class = Credential + collection_key = 'credentials' + key = 'credential' + + def create(self, user, type, data, project=None): + return super(CredentialManager, self).create( + user_id=base.getid(user), + type=type, + data=data, + project_id=base.getid(project)) + + def get(self, credential): + return super(CredentialManager, self).get( + credential_id=base.getid(credential)) + + def update(self, credential, user, type=None, data=None, project=None): + return super(CredentialManager, self).update( + credential_id=base.getid(credential), + user_id=base.getid(user), + type=type, + data=data, + project_id=base.getid(project)) + + def delete(self, credential): + return super(CredentialManager, self).delete( + credential_id=base.getid(credential)) diff --git a/tests/v3/test_credentials.py b/tests/v3/test_credentials.py new file mode 100644 index 000000000..180f680dd --- /dev/null +++ b/tests/v3/test_credentials.py @@ -0,0 +1,22 @@ +import uuid + +from keystoneclient.v3 import credentials +from tests.v3 import utils + + +class CredentialTests(utils.TestCase, utils.CrudTests): + def setUp(self): + super(CredentialTests, self).setUp() + self.additionalSetUp() + self.key = 'credential' + self.collection_key = 'credentials' + self.model = credentials.Credential + self.manager = self.client.credentials + + def new_ref(self, **kwargs): + kwargs = super(CredentialTests, self).new_ref(**kwargs) + kwargs.setdefault('data', uuid.uuid4().hex) + kwargs.setdefault('project_id', uuid.uuid4().hex) + kwargs.setdefault('type', uuid.uuid4().hex) + kwargs.setdefault('user_id', uuid.uuid4().hex) + return kwargs