diff options
author | scottda <scott.dangelo@hpe.com> | 2016-03-31 09:20:29 -0600 |
---|---|---|
committer | scottda <scott.dangelo@hpe.com> | 2016-04-18 10:49:51 -0600 |
commit | 27e6f6f7f85ef0e5fcc37b96e67c870b84880760 (patch) | |
tree | 1e433f8e2ec54e208441eca98eaf2dde0c97561b /cinderclient/v3/pools.py | |
parent | 6e0b5f451c045484001696494ca5d9e89dbf6a40 (diff) | |
download | python-cinderclient-27e6f6f7f85ef0e5fcc37b96e67c870b84880760.tar.gz |
Add /v3 endpoint support for cinderclient
Add support for Cinder API /v3 endpoint.
A couple of unit tests for /v3 endpoint were added to v3/test_shell.py
to ensure that the v3 shell works, and to also test that modules work
with:
from cinderclient.v2.availability_zones import *
syntax.
Change-Id: I6ae0ada221bebb4ab1850d9c99b10fcbb585201f
Implements: https://blueprints.launchpad.net/python-cinderclient/+spec/add-v3-endpoint-support
Diffstat (limited to 'cinderclient/v3/pools.py')
-rw-r--r-- | cinderclient/v3/pools.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cinderclient/v3/pools.py b/cinderclient/v3/pools.py new file mode 100644 index 0000000..2f72605 --- /dev/null +++ b/cinderclient/v3/pools.py @@ -0,0 +1,62 @@ +# Copyright (C) 2015 Hewlett-Packard Development Company, L.P. +# 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. + +"""Pools interface (v3 extension)""" + +import six + +from cinderclient import base + + +class Pool(base.Resource): + NAME_ATTR = 'name' + + def __repr__(self): + return "<Pool: %s>" % self.name + + +class PoolManager(base.Manager): + """Manage :class:`Pool` resources.""" + resource_class = Pool + + def list(self, detailed=False): + """Lists all + + :rtype: list of :class:`Pool` + """ + if detailed is True: + pools = self._list("/scheduler-stats/get_pools?detail=True", + "pools") + # Other than the name, all of the pool data is buried below in + # a 'capabilities' dictionary. In order to be consistent with the + # get-pools command line, these elements are moved up a level to + # be attributes of the pool itself. + for pool in pools: + if hasattr(pool, 'capabilities'): + for k, v in six.iteritems(pool.capabilities): + setattr(pool, k, v) + + # Remove the capabilities dictionary since all of its + # elements have been copied up to the containing pool + del pool.capabilities + return pools + else: + pools = self._list("/scheduler-stats/get_pools", "pools") + + # avoid cluttering the basic pool list with capabilities dict + for pool in pools: + if hasattr(pool, 'capabilities'): + del pool.capabilities + return pools |