[OSC] Add OSC Functional Tests Replica Export Location

Adds osc functional tests for share replica export location
list and show

Partially-implements: bp openstack-client-support
Change-Id: I4a97333d955bf4ea7eac18c60c476f0f3a8e233e
This commit is contained in:
Ashley Rodriguez 2022-05-19 20:49:06 +00:00
parent 48a1b0ac66
commit f3eea6bbea
2 changed files with 85 additions and 0 deletions

View File

@ -298,6 +298,7 @@ class OSCClientTestBase(base.ClientTestBase):
self.addCleanup(
self.openstack,
f'share snapshot delete {snapshot_object["id"]} --wait')
return snapshot_object
def create_share_network(self, neutron_net_id=None,
@ -322,3 +323,28 @@ class OSCClientTestBase(base.ClientTestBase):
f'share network delete {share_network_obj["id"]}'
)
return share_network_obj
def create_share_replica(self, share, availability_zone=None,
wait=None, add_cleanup=True):
cmd = (f'replica create {share}')
if availability_zone:
cmd = cmd + f' --availability-zone {availability_zone}'
if wait:
cmd = cmd + ' --wait'
replica_object = self.dict_result('share', cmd)
self._wait_for_object_status(
'share replica', replica_object['id'], 'available')
if add_cleanup:
self.addCleanup(
self.openstack,
f'share replica delete {replica_object["id"]} --wait'
)
return replica_object
def get_share_replica_export_locations(self, replica):
cmd = (f'replica export location list {replica}')
export_locations = self.listing_result('share', cmd)
return export_locations

View File

@ -0,0 +1,59 @@
# 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
from manilaclient.tests.functional.osc import base
from tempest.lib.common.utils import data_utils
class ShareReplicaExportLocationsCLITest(base.OSCClientTestBase):
def test_openstack_share_replica_export_location_list(self):
slug = 'replica-supported'
share_type = self.create_share_type(
data_utils.rand_name(slug), 'False', extra_specs={
'replication_type': 'readable'})
share = self.create_share(share_type=share_type['name'])
replica = self.create_share_replica(share['id'], wait=True)
rep_exp_loc_list = self.listing_result(
'share replica export location', f'list {replica["id"]}')
self.assertTableStruct(rep_exp_loc_list, [
'ID',
'Availability Zone',
'Replica State',
'Preferred',
'Path'
])
exp_loc_list = self.openstack(
f'share replica show {replica["id"]} -f json')
exp_loc_list = json.loads(exp_loc_list)
self.assertIn(exp_loc_list.get('export_locations')[0]['id'],
[item['ID'] for item in rep_exp_loc_list])
def test_openstack_share_replica_export_location_show(self):
slug = 'replica-supported'
share_type = self.create_share_type(
data_utils.rand_name(slug), 'False', extra_specs={
'replication_type': 'readable'})
share = self.create_share(share_type=share_type['name'])
replica = self.create_share_replica(share['id'], wait=True)
rep_exp_loc_obj = self.get_share_replica_export_locations(
replica['id'])[0]
exp_loc_list = self.openstack(
f'share replica show {replica["id"]} -f json')
exp_loc_list = json.loads(exp_loc_list)
result = self.dict_result(
'share replica export location',
f'show {replica["id"]} {rep_exp_loc_obj["ID"]}')
export_location = exp_loc_list['export_locations'][0]
self.assertEqual(result['id'], export_location['id'])