summaryrefslogtreecommitdiff
path: root/keystoneclient/v3/regions.py
blob: 0538a66562aafd05107318f7f57969103b15fc55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# 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 debtcollector import removals
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.
        * parent_region_id: a pre-existing region in the backend or its ID
                            field. Allows for hierarchical region organization.
        * enabled: determines whether the endpoint appears in the catalog.
    """

    pass


class RegionManager(base.CrudManager):
    """Manager class for manipulating Identity regions."""

    resource_class = Region
    collection_key = 'regions'
    key = 'region'

    @removals.removed_kwarg(
        'enabled',
        message='The enabled parameter is deprecated.',
        version='3.18.0',
        removal_version='4.0.0')
    def create(self, id=None, description=None, enabled=True,
               parent_region=None, **kwargs):
        """Create a region.

        :param str id: the unique identifier of the region. If not specified an
                       ID will be created by the server.
        :param str description: the description of the region.
        :param bool enabled: whether the region is enabled or not, determining
                             if it appears in the catalog.
        :param parent_region: the parent of the region in the hierarchy.
        :type parent_region: str or :class:`keystoneclient.v3.regions.Region`
        :param kwargs: any other attribute provided will be passed to the
                       server.

        :returns: the created region returned from server.
        :rtype: :class:`keystoneclient.v3.regions.Region`

        """
        return super(RegionManager, self).create(
            id=id, description=description, enabled=enabled,
            parent_region_id=base.getid(parent_region), **kwargs)

    def get(self, region):
        """Retrieve a region.

        :param region: the region to be retrieved from the server.
        :type region: str or :class:`keystoneclient.v3.regions.Region`

        :returns: the specified region returned from server.
        :rtype: :class:`keystoneclient.v3.regions.Region`

        """
        return super(RegionManager, self).get(
            region_id=base.getid(region))

    def list(self, **kwargs):
        """List regions.

        :param kwargs: any attributes provided will filter regions on.

        :returns: a list of regions.
        :rtype: list of :class:`keystoneclient.v3.regions.Region`.

        """
        return super(RegionManager, self).list(
            **kwargs)

    @removals.removed_kwarg(
        'enabled',
        message='The enabled parameter is deprecated.',
        version='3.18.0',
        removal_version='4.0.0')
    def update(self, region, description=None, enabled=None,
               parent_region=None, **kwargs):
        """Update a region.

        :param region: the region to be updated on the server.
        :type region: str or :class:`keystoneclient.v3.regions.Region`
        :param str description: the new description of the region.
        :param bool enabled: determining if the region appears in the catalog
                             by enabling or disabling it.
        :param parent_region: the new parent of the region in the hierarchy.
        :type parent_region: str or :class:`keystoneclient.v3.regions.Region`
        :param kwargs: any other attribute provided will be passed to server.

        :returns: the updated region returned from server.
        :rtype: :class:`keystoneclient.v3.regions.Region`

        """
        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):
        """Delete a region.

        :param region: the region to be deleted on the server.
        :type region: str or :class:`keystoneclient.v3.regions.Region`

        :returns: Response object with 204 status.
        :rtype: :class:`requests.models.Response`

        """
        return super(RegionManager, self).delete(
            region_id=base.getid(region))