summaryrefslogtreecommitdiff
path: root/keystoneclient/v3
diff options
context:
space:
mode:
authorSamuel de Medeiros Queiroz <samueldmq@gmail.com>2017-01-05 23:37:39 -0300
committerSamuel de Medeiros Queiroz <samueldmq@gmail.com>2017-02-11 12:38:37 +0000
commit34d99f0c09a253b3f51f3855fa6ce7449ffc235e (patch)
tree84f8ffc84986f8b1b1a337bb35dc94f2234d8178 /keystoneclient/v3
parent004450040c38a0df05469b844ba30854b67aabd5 (diff)
downloadpython-keystoneclient-34d99f0c09a253b3f51f3855fa6ce7449ffc235e.tar.gz
Add support for endpoint group CRUD
The following API calls are made available: - POST /OS-EP-FILTER/endpoint_groups - GET /OS-EP-FILTER/endpoint_groups/{endpoint_group_id} - HEAD /OS-EP-FILTER/endpoint_groups/{endpoint_group_id} - PATCH /OS-EP-FILTER/endpoint_groups/{endpoint_group_id} - DELETE /OS-EP-FILTER/endpoint_groups/{endpoint_group_id} - GET /OS-EP-FILTER/endpoint_groups Partial-Bug: #1641674 Change-Id: I285eefe82152b178268f671e8800a0ff8c1511e4
Diffstat (limited to 'keystoneclient/v3')
-rw-r--r--keystoneclient/v3/client.py8
-rw-r--r--keystoneclient/v3/endpoint_groups.py136
2 files changed, 144 insertions, 0 deletions
diff --git a/keystoneclient/v3/client.py b/keystoneclient/v3/client.py
index 181af89..2ca180a 100644
--- a/keystoneclient/v3/client.py
+++ b/keystoneclient/v3/client.py
@@ -33,6 +33,7 @@ from keystoneclient.v3 import credentials
from keystoneclient.v3 import domain_configs
from keystoneclient.v3 import domains
from keystoneclient.v3 import ec2
+from keystoneclient.v3 import endpoint_groups
from keystoneclient.v3 import endpoints
from keystoneclient.v3 import groups
from keystoneclient.v3 import policies
@@ -130,6 +131,11 @@ class Client(httpclient.HTTPClient):
:py:class:`keystoneclient.v3.contrib.endpoint_filter.\
EndpointFilterManager`
+ .. py:attribute:: endpoint_groups
+
+ :py:class:`keystoneclient.v3.endpoint_groups.\
+ EndpointGroupManager`
+
.. py:attribute:: endpoint_policy
:py:class:`keystoneclient.v3.contrib.endpoint_policy.\
@@ -211,6 +217,8 @@ class Client(httpclient.HTTPClient):
self.ec2 = ec2.EC2Manager(self._adapter)
self.endpoint_filter = endpoint_filter.EndpointFilterManager(
self._adapter)
+ self.endpoint_groups = endpoint_groups.EndpointGroupManager(
+ self._adapter)
self.endpoint_policy = endpoint_policy.EndpointPolicyManager(
self._adapter)
self.endpoints = endpoints.EndpointManager(self._adapter)
diff --git a/keystoneclient/v3/endpoint_groups.py b/keystoneclient/v3/endpoint_groups.py
new file mode 100644
index 0000000..f8b47c4
--- /dev/null
+++ b/keystoneclient/v3/endpoint_groups.py
@@ -0,0 +1,136 @@
+# 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 EndpointGroup(base.Resource):
+ """Represents an identity endpoint group.
+
+ Attributes:
+ * id: a UUID that identifies the endpoint group
+ * name: the endpoint group name
+ * description: the endpoint group description
+ * filters: representation of filters in the format of JSON that define
+ what endpoint entities are part of the group
+
+ """
+
+ pass
+
+
+class EndpointGroupManager(base.CrudManager):
+ """Manager class for Endpoint Groups."""
+
+ resource_class = EndpointGroup
+ collection_key = 'endpoint_groups'
+ key = 'endpoint_group'
+ base_url = 'OS-EP-FILTER'
+
+ def create(self, name, filters, description=None, **kwargs):
+ """Create an endpoint group.
+
+ :param str name: the name of the endpoint group.
+ :param str filters: representation of filters in the format of JSON
+ that define what endpoint entities are part of the
+ group.
+ :param str description: a description of the endpoint group.
+ :param kwargs: any other attribute provided will be passed to the
+ server.
+
+ :returns: the created endpoint group returned from server.
+ :rtype: :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`
+
+ """
+ return super(EndpointGroupManager, self).create(
+ name=name,
+ filters=filters,
+ description=description,
+ **kwargs)
+
+ def get(self, endpoint_group):
+ """Retrieve an endpoint group.
+
+ :param endpoint_group: the endpoint group to be retrieved from the
+ server.
+ :type endpoint_group:
+ str or :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`
+
+ :returns: the specified endpoint group returned from server.
+ :rtype: :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`
+
+ """
+ return super(EndpointGroupManager, self).get(
+ endpoint_group_id=base.getid(endpoint_group))
+
+ def check(self, endpoint_group):
+ """Check if an endpoint group exists.
+
+ :param endpoint_group: the endpoint group to be checked against the
+ server.
+ :type endpoint_group:
+ str or :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`
+
+ :returns: none if the specified endpoint group exists.
+
+ """
+ return super(EndpointGroupManager, self).head(
+ endpoint_group_id=base.getid(endpoint_group))
+
+ def list(self, **kwargs):
+ """List endpoint groups.
+
+ Any parameter provided will be passed to the server.
+
+ :returns: a list of endpoint groups.
+ :rtype: list of
+ :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`.
+
+ """
+ return super(EndpointGroupManager, self).list(**kwargs)
+
+ def update(self, endpoint_group, name=None, filters=None,
+ description=None, **kwargs):
+ """Update an endpoint group.
+
+ :param str name: the new name of the endpoint group.
+ :param str filters: the new representation of filters in the format of
+ JSON that define what endpoint entities are part of
+ the group.
+ :param str description: the new description of the endpoint group.
+ :param kwargs: any other attribute provided will be passed to the
+ server.
+
+ :returns: the updated endpoint group returned from server.
+ :rtype: :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`
+
+ """
+ return super(EndpointGroupManager, self).update(
+ endpoint_group_id=base.getid(endpoint_group),
+ name=name,
+ filters=filters,
+ description=description,
+ **kwargs)
+
+ def delete(self, endpoint_group):
+ """Delete an endpoint group.
+
+ :param endpoint_group: the endpoint group to be deleted on the server.
+ :type endpoint_group:
+ str or :class:`keystoneclient.v3.endpoint_groups.EndpointGroup`
+
+ :returns: Response object with 204 status.
+ :rtype: :class:`requests.models.Response`
+
+ """
+ return super(EndpointGroupManager, self).delete(
+ endpoint_group_id=base.getid(endpoint_group))