
Current "volume list --name" command use "display_name" as search_opts to send to cinder API, and show the result table with "Display Name" column title in osc, cinder list API support "name" as search opts too, and there is "name" attribute in volume response body, so we can replace all "Display Name" by "Name" in order to keep "volume list" command consistent with other commands, like: server list, network list and so on, only use "Name" attribute for all objects. Support a mapping for volume list -c "Display Name" (Volume v1 and v2) and volume create/show -c "display_name" (Volume v1) for minimal backward compatibility until R release. Change-Id: I120be0118e7bb30093b4237c5eeb69a9eedef077 Closes-Bug: #1657956 Depends-On: I1fb62219b092346ea380099811cbd082cae5bafe
88 lines
3.2 KiB
Python
88 lines
3.2 KiB
Python
# 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 json
|
|
import uuid
|
|
|
|
from openstackclient.tests.functional.volume.v1 import common
|
|
|
|
|
|
class TransferRequestTests(common.BaseVolumeTests):
|
|
"""Functional tests for transfer request. """
|
|
|
|
NAME = uuid.uuid4().hex
|
|
VOLUME_NAME = uuid.uuid4().hex
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TransferRequestTests, cls).setUpClass()
|
|
cmd_output = json.loads(cls.openstack(
|
|
'volume create -f json --size 1 ' + cls.VOLUME_NAME))
|
|
cls.assertOutput(cls.VOLUME_NAME, cmd_output['name'])
|
|
|
|
cmd_output = json.loads(cls.openstack(
|
|
'volume transfer request create -f json ' +
|
|
cls.VOLUME_NAME +
|
|
' --name ' + cls.NAME))
|
|
cls.assertOutput(cls.NAME, cmd_output['name'])
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
raw_output_transfer = cls.openstack(
|
|
'volume transfer request delete ' + cls.NAME)
|
|
raw_output_volume = cls.openstack(
|
|
'volume delete ' + cls.VOLUME_NAME)
|
|
cls.assertOutput('', raw_output_transfer)
|
|
cls.assertOutput('', raw_output_volume)
|
|
|
|
def test_volume_transfer_request_accept(self):
|
|
volume_name = uuid.uuid4().hex
|
|
name = uuid.uuid4().hex
|
|
|
|
# create a volume
|
|
cmd_output = json.loads(self.openstack(
|
|
'volume create -f json --size 1 ' + volume_name))
|
|
self.assertEqual(volume_name, cmd_output['name'])
|
|
|
|
# create volume transfer request for the volume
|
|
# and get the auth_key of the new transfer request
|
|
cmd_output = json.loads(self.openstack(
|
|
'volume transfer request create -f json ' +
|
|
volume_name +
|
|
' --name ' + name))
|
|
auth_key = cmd_output['auth_key']
|
|
self.assertTrue(auth_key)
|
|
|
|
# accept the volume transfer request
|
|
json_output = json.loads(self.openstack(
|
|
'volume transfer request accept -f json ' +
|
|
name + ' ' +
|
|
'--auth-key ' + auth_key
|
|
))
|
|
self.assertEqual(name, json_output.get('name'))
|
|
|
|
# the volume transfer will be removed by default after accepted
|
|
# so just need to delete the volume here
|
|
raw_output = self.openstack(
|
|
'volume delete ' + volume_name)
|
|
self.assertEqual('', raw_output)
|
|
|
|
def test_volume_transfer_request_list(self):
|
|
cmd_output = json.loads(self.openstack(
|
|
'volume transfer request list -f json'))
|
|
self.assertIn(self.NAME, [req['Name'] for req in cmd_output])
|
|
|
|
def test_volume_transfer_request_show(self):
|
|
cmd_output = json.loads(self.openstack(
|
|
'volume transfer request show -f json ' + self.NAME))
|
|
self.assertEqual(self.NAME, cmd_output['name'])
|