summaryrefslogtreecommitdiff
path: root/keystoneclient/v3
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2014-04-11 16:39:16 -0400
committerAdam Young <ayoung@redhat.com>2014-05-07 14:48:25 -0400
commit51ed045a284daa581bd364e2ecfc3f689e4582fb (patch)
tree93832e4597edc41cb602de1a6086b2089d82e206 /keystoneclient/v3
parent0781c3ca27557f2e699e4578bd898bb32efa8155 (diff)
downloadpython-keystoneclient-51ed045a284daa581bd364e2ecfc3f689e4582fb.tar.gz
Regions Management
Client code for v3 API regions implementation. Change-Id: I5c1526457395ba3fb06977bea775ff572ec840ba Closes-Bug: 1289519
Diffstat (limited to 'keystoneclient/v3')
-rw-r--r--keystoneclient/v3/client.py2
-rw-r--r--keystoneclient/v3/regions.py90
2 files changed, 92 insertions, 0 deletions
diff --git a/keystoneclient/v3/client.py b/keystoneclient/v3/client.py
index 417fdb2..397c417 100644
--- a/keystoneclient/v3/client.py
+++ b/keystoneclient/v3/client.py
@@ -28,6 +28,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
@@ -101,6 +102,7 @@ class Client(httpclient.HTTPClient):
self.groups = groups.GroupManager(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)
diff --git a/keystoneclient/v3/regions.py b/keystoneclient/v3/regions.py
new file mode 100644
index 0000000..de925e3
--- /dev/null
+++ b/keystoneclient/v3/regions.py
@@ -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))