summaryrefslogtreecommitdiff
path: root/openstackclient/tests/common
diff options
context:
space:
mode:
authorRichard Theis <rtheis@us.ibm.com>2016-01-14 08:22:09 -0600
committerRichard Theis <rtheis@us.ibm.com>2016-01-14 15:47:19 -0600
commita8ec2ac49475c60c8e72a0fc3db6df778918bb49 (patch)
treee5442a3e59f28f7672b1253813aba64fc55163a5 /openstackclient/tests/common
parent84174440fc9fd4679f3a72d24ed50f0b1927b91d (diff)
downloadpython-openstackclient-a8ec2ac49475c60c8e72a0fc3db6df778918bb49.tar.gz
Support listing volume availability zones
Update the "os availability zone list" command to support listing volume availability zones along with the currently listed compute availability zones. This adds a --compute and --volume option to the command in order to select the availability zones to list. By default, all availability zones are listed. If the Block Storage API does not support listing availability zones then an warning message will be issued. Change-Id: I8159509a41bd1fb1b4e77fdbb512cf64a5ac11a9 Closes-Bug: #1532945
Diffstat (limited to 'openstackclient/tests/common')
-rw-r--r--openstackclient/tests/common/test_availability_zone.py99
1 files changed, 89 insertions, 10 deletions
diff --git a/openstackclient/tests/common/test_availability_zone.py b/openstackclient/tests/common/test_availability_zone.py
index 35089d06..232b56c9 100644
--- a/openstackclient/tests/common/test_availability_zone.py
+++ b/openstackclient/tests/common/test_availability_zone.py
@@ -17,6 +17,7 @@ from openstackclient.common import availability_zone
from openstackclient.tests.compute.v2 import fakes as compute_fakes
from openstackclient.tests import fakes
from openstackclient.tests import utils
+from openstackclient.tests.volume.v2 import fakes as volume_fakes
def _build_compute_az_datalist(compute_az, long_datalist=False):
@@ -39,6 +40,22 @@ def _build_compute_az_datalist(compute_az, long_datalist=False):
return (datalist,)
+def _build_volume_az_datalist(volume_az, long_datalist=False):
+ datalist = ()
+ if not long_datalist:
+ datalist = (
+ volume_az.zoneName,
+ 'available',
+ )
+ else:
+ datalist = (
+ volume_az.zoneName,
+ 'available',
+ '', '', '',
+ )
+ return (datalist,)
+
+
class TestAvailabilityZone(utils.TestCommand):
def setUp(self):
@@ -53,16 +70,37 @@ class TestAvailabilityZone(utils.TestCommand):
self.compute_azs_mock = compute_client.availability_zones
self.compute_azs_mock.reset_mock()
+ volume_client = volume_fakes.FakeVolumeClient(
+ endpoint=fakes.AUTH_URL,
+ token=fakes.AUTH_TOKEN,
+ )
+ self.app.client_manager.volume = volume_client
+
+ self.volume_azs_mock = volume_client.availability_zones
+ self.volume_azs_mock.reset_mock()
+
class TestAvailabilityZoneList(TestAvailabilityZone):
compute_azs = \
compute_fakes.FakeAvailabilityZone.create_availability_zones()
+ volume_azs = \
+ volume_fakes.FakeAvailabilityZone.create_availability_zones(count=1)
+
+ short_columnslist = ('Zone Name', 'Zone Status')
+ long_columnslist = (
+ 'Zone Name',
+ 'Zone Status',
+ 'Host Name',
+ 'Service Name',
+ 'Service Status',
+ )
def setUp(self):
super(TestAvailabilityZoneList, self).setUp()
self.compute_azs_mock.list.return_value = self.compute_azs
+ self.volume_azs_mock.list.return_value = self.volume_azs
# Get the command object to test
self.cmd = availability_zone.ListAvailabilityZone(self.app, None)
@@ -76,12 +114,14 @@ class TestAvailabilityZoneList(TestAvailabilityZone):
columns, data = self.cmd.take_action(parsed_args)
self.compute_azs_mock.list.assert_called_with()
+ self.volume_azs_mock.list.assert_called_with()
- columnslist = ('Zone Name', 'Zone Status')
- self.assertEqual(columnslist, columns)
+ self.assertEqual(self.short_columnslist, columns)
datalist = ()
for compute_az in self.compute_azs:
datalist += _build_compute_az_datalist(compute_az)
+ for volume_az in self.volume_azs:
+ datalist += _build_volume_az_datalist(volume_az)
self.assertEqual(datalist, tuple(data))
def test_availability_zone_list_long(self):
@@ -97,17 +137,56 @@ class TestAvailabilityZoneList(TestAvailabilityZone):
columns, data = self.cmd.take_action(parsed_args)
self.compute_azs_mock.list.assert_called_with()
+ self.volume_azs_mock.list.assert_called_with()
- columnslist = (
- 'Zone Name',
- 'Zone Status',
- 'Host Name',
- 'Service Name',
- 'Service Status',
- )
- self.assertEqual(columnslist, columns)
+ self.assertEqual(self.long_columnslist, columns)
datalist = ()
for compute_az in self.compute_azs:
datalist += _build_compute_az_datalist(compute_az,
long_datalist=True)
+ for volume_az in self.volume_azs:
+ datalist += _build_volume_az_datalist(volume_az,
+ long_datalist=True)
+ self.assertEqual(datalist, tuple(data))
+
+ def test_availability_zone_list_compute(self):
+ arglist = [
+ '--compute',
+ ]
+ verifylist = [
+ ('compute', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.compute_azs_mock.list.assert_called_with()
+ self.volume_azs_mock.list.assert_not_called()
+
+ self.assertEqual(self.short_columnslist, columns)
+ datalist = ()
+ for compute_az in self.compute_azs:
+ datalist += _build_compute_az_datalist(compute_az)
+ self.assertEqual(datalist, tuple(data))
+
+ def test_availability_zone_list_volume(self):
+ arglist = [
+ '--volume',
+ ]
+ verifylist = [
+ ('volume', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.compute_azs_mock.list.assert_not_called()
+ self.volume_azs_mock.list.assert_called_with()
+
+ self.assertEqual(self.short_columnslist, columns)
+ datalist = ()
+ for volume_az in self.volume_azs:
+ datalist += _build_volume_az_datalist(volume_az)
self.assertEqual(datalist, tuple(data))