Add functional tests for "volume" commands v2
The tests for v2 "volume" commands are quite similar to v1. This patch also map 'metadata' to 'properties', 'volume_type' to 'type' to align to the v1 output. Change-Id: Icf2c5463b186fc78c890ccd96453090c4a2c2eb6 Partial-bug: #1519503
This commit is contained in:
parent
5a978b9ec1
commit
acc0297fa6
0
functional/tests/volume/v2/__init__.py
Normal file
0
functional/tests/volume/v2/__init__.py
Normal file
80
functional/tests/volume/v2/test_volume.py
Normal file
80
functional/tests/volume/v2/test_volume.py
Normal file
@ -0,0 +1,80 @@
|
||||
# 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.
|
||||
|
||||
import os
|
||||
import uuid
|
||||
|
||||
from functional.common import test
|
||||
|
||||
|
||||
class VolumeTests(test.TestCase):
|
||||
"""Functional tests for volume. """
|
||||
|
||||
NAME = uuid.uuid4().hex
|
||||
OTHER_NAME = uuid.uuid4().hex
|
||||
HEADERS = ['"Display Name"']
|
||||
FIELDS = ['name']
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
os.environ['OS_VOLUME_API_VERSION'] = '2'
|
||||
opts = cls.get_show_opts(cls.FIELDS)
|
||||
raw_output = cls.openstack('volume create --size 1 ' + cls.NAME + opts)
|
||||
expected = cls.NAME + '\n'
|
||||
cls.assertOutput(expected, raw_output)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
# Rename test
|
||||
raw_output = cls.openstack(
|
||||
'volume set --name ' + cls.OTHER_NAME + ' ' + cls.NAME)
|
||||
cls.assertOutput('', raw_output)
|
||||
# Delete test
|
||||
raw_output = cls.openstack('volume delete ' + cls.OTHER_NAME)
|
||||
cls.assertOutput('', raw_output)
|
||||
|
||||
def test_volume_list(self):
|
||||
opts = self.get_list_opts(self.HEADERS)
|
||||
raw_output = self.openstack('volume list' + opts)
|
||||
self.assertIn(self.NAME, raw_output)
|
||||
|
||||
def test_volume_show(self):
|
||||
opts = self.get_show_opts(self.FIELDS)
|
||||
raw_output = self.openstack('volume show ' + self.NAME + opts)
|
||||
self.assertEqual(self.NAME + "\n", raw_output)
|
||||
|
||||
def test_volume_properties(self):
|
||||
raw_output = self.openstack(
|
||||
'volume set --property a=b --property c=d ' + self.NAME)
|
||||
self.assertEqual("", raw_output)
|
||||
opts = self.get_show_opts(["properties"])
|
||||
raw_output = self.openstack('volume show ' + self.NAME + opts)
|
||||
self.assertEqual("a='b', c='d'\n", raw_output)
|
||||
|
||||
raw_output = self.openstack('volume unset --property a ' + self.NAME)
|
||||
self.assertEqual("", raw_output)
|
||||
raw_output = self.openstack('volume show ' + self.NAME + opts)
|
||||
self.assertEqual("c='d'\n", raw_output)
|
||||
|
||||
def test_volume_set(self):
|
||||
discription = uuid.uuid4().hex
|
||||
self.openstack('volume set --description ' + discription + ' ' +
|
||||
self.NAME)
|
||||
opts = self.get_show_opts(["description", "name"])
|
||||
raw_output = self.openstack('volume show ' + self.NAME + opts)
|
||||
self.assertEqual(discription + "\n" + self.NAME + "\n", raw_output)
|
||||
|
||||
def test_volume_set_size(self):
|
||||
self.openstack('volume set --size 2 ' + self.NAME)
|
||||
opts = self.get_show_opts(["name", "size"])
|
||||
raw_output = self.openstack('volume show ' + self.NAME + opts)
|
||||
self.assertEqual(self.NAME + "\n2\n", raw_output)
|
@ -17,6 +17,7 @@ import mock
|
||||
import random
|
||||
import uuid
|
||||
|
||||
from openstackclient.common import utils as common_utils
|
||||
from openstackclient.tests import fakes
|
||||
from openstackclient.tests.identity.v3 import fakes as identity_fakes
|
||||
from openstackclient.tests.image.v2 import fakes as image_fakes
|
||||
@ -56,8 +57,31 @@ VOLUME = {
|
||||
"attachments": volume_attachments
|
||||
}
|
||||
|
||||
VOLUME_columns = tuple(sorted(VOLUME))
|
||||
VOLUME_data = tuple((VOLUME[x] for x in sorted(VOLUME)))
|
||||
VOLUME_columns = (
|
||||
"attachments",
|
||||
"availability_zone",
|
||||
"description",
|
||||
"id",
|
||||
"name",
|
||||
"properties",
|
||||
"size",
|
||||
"snapshot_id",
|
||||
"status",
|
||||
"type"
|
||||
)
|
||||
|
||||
VOLUME_data = (
|
||||
volume_attachments,
|
||||
volume_availability_zone,
|
||||
volume_description,
|
||||
volume_id,
|
||||
volume_name,
|
||||
common_utils.format_dict(volume_metadata),
|
||||
volume_size,
|
||||
volume_snapshot_id,
|
||||
volume_status,
|
||||
volume_type
|
||||
)
|
||||
|
||||
|
||||
snapshot_id = "cb2d364e-4d1c-451a-8c68-b5bbcb340fb2"
|
||||
|
@ -394,6 +394,16 @@ class ShowVolume(command.ShowOne):
|
||||
volume_client = self.app.client_manager.volume
|
||||
volume = utils.find_resource(volume_client.volumes, parsed_args.volume)
|
||||
|
||||
# Special mapping for columns to make the output easier to read:
|
||||
# 'metadata' --> 'properties'
|
||||
# 'volume_type' --> 'type'
|
||||
volume._info.update(
|
||||
{
|
||||
'properties': utils.format_dict(volume._info.pop('metadata')),
|
||||
'type': volume._info.pop('volume_type'),
|
||||
},
|
||||
)
|
||||
|
||||
# Remove key links from being displayed
|
||||
volume._info.pop("links", None)
|
||||
return zip(*sorted(six.iteritems(volume._info)))
|
||||
|
Loading…
Reference in New Issue
Block a user