Merge "Regions Management"

This commit is contained in:
Jenkins
2014-05-08 02:54:10 +00:00
committed by Gerrit Code Review
3 changed files with 125 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
# 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.
import uuid
from keystoneclient.tests.v3 import utils
from keystoneclient.v3 import regions
class RegionTests(utils.TestCase, utils.CrudTests):
def setUp(self):
super(RegionTests, self).setUp()
self.key = 'region'
self.collection_key = 'regions'
self.model = regions.Region
self.manager = self.client.regions
def new_ref(self, **kwargs):
kwargs = super(RegionTests, self).new_ref(**kwargs)
kwargs.setdefault('enabled', True)
kwargs.setdefault('id', uuid.uuid4().hex)
return kwargs

View File

@@ -29,6 +29,7 @@ from keystoneclient.v3 import endpoints
from keystoneclient.v3 import groups
from keystoneclient.v3 import policies
from keystoneclient.v3 import projects
from keystoneclient.v3 import regions
from keystoneclient.v3 import roles
from keystoneclient.v3 import services
from keystoneclient.v3 import users
@@ -103,6 +104,7 @@ class Client(httpclient.HTTPClient):
self.oauth1 = oauth1.create_oauth_manager(self)
self.policies = policies.PolicyManager(self)
self.projects = projects.ProjectManager(self)
self.regions = regions.RegionManager(self)
self.roles = roles.RoleManager(self)
self.services = services.ServiceManager(self)
self.users = users.UserManager(self)

View File

@@ -0,0 +1,90 @@
# 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 Region(base.Resource):
"""Represents a Catalog region.
Attributes:
* id: a string that identifies the region.
* description: a string that describes the region. Optional.
* parent_region_id: string that is the id field for an pre-existing
region in the backend. Allows for hierarchical region
organization
* enabled: determines whether the endpoint appears in the catalog.
Defaults to True
"""
pass
class RegionManager(base.CrudManager):
"""Manager class for manipulating Identity endpoints."""
resource_class = Region
collection_key = 'regions'
key = 'region'
def create(self, id=None, description=None, enabled=True,
parent_region=None, **kwargs):
"""Create a Catalog region.
:param id: a string that identifies the region. If not specified
a unique identifier will be assigned to the region.
:param description: a string that describes the region.
:param parent_region: string that is the id field for a
pre-existing region in the backend. Allows for hierarchical
region organization.
:param enabled: determines whether the endpoint appears in the
catalog.
"""
return super(RegionManager, self).create(
id=id, description=description, enabled=enabled,
parent_region_id=base.getid(parent_region), **kwargs)
def get(self, region):
return super(RegionManager, self).get(
region_id=base.getid(region))
def list(self, **kwargs):
"""List regions.
If ``**kwargs`` are provided, then filter regions with
attributes matching ``**kwargs``.
"""
return super(RegionManager, self).list(
**kwargs)
def update(self, region, description=None, enabled=True,
parent_region=None, **kwargs):
"""Update a Catalog region.
:param region: a string that identifies the region.
:param description: a string that describes the region.
:param parent_region: string that is the id field for a
pre-existing region in the backend. Allows for hierarchical
region organization.
:param enabled: determines whether the endpoint appears in the
catalog. Defaults to True
"""
return super(RegionManager, self).update(
region_id=base.getid(region),
description=description,
enabled=enabled,
parent_region_id=base.getid(parent_region),
**kwargs)
def delete(self, region):
return super(RegionManager, self).delete(
region_id=base.getid(region))