diff --git a/openstackclient/tests/functional/image/v2/test_image.py b/openstackclient/tests/functional/image/v2/test_image.py index 6faff94a32..b6baf570f8 100644 --- a/openstackclient/tests/functional/image/v2/test_image.py +++ b/openstackclient/tests/functional/image/v2/test_image.py @@ -84,7 +84,7 @@ class ImageTests(base.TestCase): self.openstack( 'image set --accept ' + self.NAME) shared_img_list = self.parse_listing( - self.openstack('image list --shared', self.get_opts(['name'])) + self.openstack('image list --shared') ) self.assertIn(self.NAME, [img['Name'] for img in shared_img_list]) diff --git a/openstackclient/tests/functional/network/v2/test_port.py b/openstackclient/tests/functional/network/v2/test_port.py index e100bd8296..818076d675 100644 --- a/openstackclient/tests/functional/network/v2/test_port.py +++ b/openstackclient/tests/functional/network/v2/test_port.py @@ -10,7 +10,7 @@ # License for the specific language governing permissions and limitations # under the License. -import re +import json import uuid from openstackclient.tests.functional import base @@ -20,21 +20,11 @@ class PortTests(base.TestCase): """Functional tests for port. """ NAME = uuid.uuid4().hex NETWORK_NAME = uuid.uuid4().hex - HEADERS = ['Name'] - FIELDS = ['name'] @classmethod def setUpClass(cls): - # Set up some regex for matching below - cls.re_id = re.compile("\s+id\s+\|\s+(\S+)") - cls.re_name = re.compile("\s+name\s+\|\s+([^|]+?)\s+\|") - cls.re_description = re.compile("\s+description\s+\|\s+([^|]+?)\s+\|") - cls.re_mac_address = re.compile("\s+mac_address\s+\|\s+([^|]+?)\s+\|") - cls.re_state = re.compile("\s+admin_state_up\s+\|\s+([^|]+?)\s+\|") - # Create a network for the port - raw_output = cls.openstack('network create ' + cls.NETWORK_NAME) - cls.network_id = re.search(cls.re_id, raw_output).group(1) + cls.openstack('network create ' + cls.NETWORK_NAME) @classmethod def tearDownClass(cls): @@ -43,33 +33,23 @@ class PortTests(base.TestCase): def test_port_delete(self): """Test create, delete multiple""" - raw_output = self.openstack( - 'port create --network ' + self.NETWORK_NAME + ' ' + self.NAME - ) - re_id1 = re.search(self.re_id, raw_output) - self.assertIsNotNone(re_id1) - id1 = re_id1.group(1) - self.assertIsNotNone( - re.search(self.re_mac_address, raw_output).group(1), - ) - self.assertEqual( - self.NAME, - re.search(self.re_name, raw_output).group(1), - ) + json_output = json.loads(self.openstack( + 'port create -f json --network ' + + self.NETWORK_NAME + ' ' + self.NAME + )) + id1 = json_output.get('id') + self.assertIsNotNone(id1) + self.assertIsNotNone(json_output.get('mac_address')) + self.assertEqual(self.NAME, json_output.get('name')) - raw_output = self.openstack( - 'port create ' + - '--network ' + self.NETWORK_NAME + ' ' + + json_output = json.loads(self.openstack( + 'port create -f json --network ' + self.NETWORK_NAME + ' ' + self.NAME + 'x' - ) - id2 = re.search(self.re_id, raw_output).group(1) - self.assertIsNotNone( - re.search(self.re_mac_address, raw_output).group(1), - ) - self.assertEqual( - self.NAME + 'x', - re.search(self.re_name, raw_output).group(1), - ) + )) + id2 = json_output.get('id') + self.assertIsNotNone(id2) + self.assertIsNotNone(json_output.get('mac_address')) + self.assertEqual(self.NAME + 'x', json_output.get('name')) # Clean up after ourselves raw_output = self.openstack('port delete ' + id1 + ' ' + id2) @@ -77,100 +57,80 @@ class PortTests(base.TestCase): def test_port_list(self): """Test create defaults, list, delete""" - raw_output = self.openstack( - 'port create --network ' + self.NETWORK_NAME + ' ' + self.NAME - ) - re_id1 = re.search(self.re_id, raw_output) - self.assertIsNotNone(re_id1) - id1 = re_id1.group(1) - mac1 = re.search(self.re_mac_address, raw_output).group(1) + json_output = json.loads(self.openstack( + 'port create -f json --network ' + self.NETWORK_NAME + ' ' + + self.NAME + )) + id1 = json_output.get('id') + self.assertIsNotNone(id1) + mac1 = json_output.get('mac_address') + self.assertIsNotNone(mac1) self.addCleanup(self.openstack, 'port delete ' + id1) - self.assertEqual( - self.NAME, - re.search(self.re_name, raw_output).group(1), - ) + self.assertEqual(self.NAME, json_output.get('name')) - raw_output = self.openstack( - 'port create ' + - '--network ' + self.NETWORK_NAME + ' ' + + json_output = json.loads(self.openstack( + 'port create -f json --network ' + self.NETWORK_NAME + ' ' + self.NAME + 'x' - ) - id2 = re.search(self.re_id, raw_output).group(1) - mac2 = re.search(self.re_mac_address, raw_output).group(1) + )) + id2 = json_output.get('id') + self.assertIsNotNone(id2) + mac2 = json_output.get('mac_address') + self.assertIsNotNone(mac2) self.addCleanup(self.openstack, 'port delete ' + id2) - self.assertEqual( - self.NAME + 'x', - re.search(self.re_name, raw_output).group(1), - ) + self.assertEqual(self.NAME + 'x', json_output.get('name')) # Test list - raw_output = self.openstack('port list') - self.assertIsNotNone(re.search("\|\s+" + id1 + "\s+\|", raw_output)) - self.assertIsNotNone(re.search("\|\s+" + id2 + "\s+\|", raw_output)) - self.assertIsNotNone(re.search("\|\s+" + mac1 + "\s+\|", raw_output)) - self.assertIsNotNone(re.search("\|\s+" + mac2 + "\s+\|", raw_output)) + json_output = json.loads(self.openstack( + 'port list -f json' + )) + item_map = {item.get('ID'): item.get('MAC Address') for item in + json_output} + self.assertIn(id1, item_map.keys()) + self.assertIn(id2, item_map.keys()) + self.assertIn(mac1, item_map.values()) + self.assertIn(mac2, item_map.values()) # Test list --long - raw_output = self.openstack('port list --long') - self.assertIsNotNone(re.search("\|\s+" + id1 + "\s+\|", raw_output)) - self.assertIsNotNone(re.search("\|\s+" + id2 + "\s+\|", raw_output)) + json_output = json.loads(self.openstack( + 'port list --long -f json' + )) + id_list = [item.get('ID') for item in json_output] + self.assertIn(id1, id_list) + self.assertIn(id2, id_list) # Test list --mac-address - raw_output = self.openstack('port list --mac-address ' + mac2) - self.assertIsNone(re.search("\|\s+" + id1 + "\s+\|", raw_output)) - self.assertIsNotNone(re.search("\|\s+" + id2 + "\s+\|", raw_output)) - self.assertIsNone(re.search("\|\s+" + mac1 + "\s+\|", raw_output)) - self.assertIsNotNone(re.search("\|\s+" + mac2 + "\s+\|", raw_output)) + json_output = json.loads(self.openstack( + 'port list -f json --mac-address ' + mac2 + )) + item_map = {item.get('ID'): item.get('MAC Address') for item in + json_output} + self.assertNotIn(id1, item_map.keys()) + self.assertIn(id2, item_map.keys()) + self.assertNotIn(mac1, item_map.values()) + self.assertIn(mac2, item_map.values()) def test_port_set(self): """Test create, set, show, delete""" - raw_output = self.openstack( - 'port create ' + + json_output = json.loads(self.openstack( + 'port create -f json ' + '--network ' + self.NETWORK_NAME + ' ' + '--description xyzpdq ' '--disable ' + self.NAME - ) - re_id = re.search(self.re_id, raw_output) - self.assertIsNotNone(re_id) - id = re_id.group(1) - self.addCleanup(self.openstack, 'port delete ' + id) - self.assertEqual( - self.NAME, - re.search(self.re_name, raw_output).group(1), - ) - self.assertEqual( - 'xyzpdq', - re.search(self.re_description, raw_output).group(1), - ) - self.assertEqual( - 'DOWN', - re.search(self.re_state, raw_output).group(1), - ) + )) + id1 = json_output.get('id') + self.addCleanup(self.openstack, 'port delete ' + id1) + self.assertEqual(self.NAME, json_output.get('name')) + self.assertEqual('xyzpdq', json_output.get('description')) + self.assertEqual('DOWN', json_output.get('admin_state_up')) - raw_output = self.openstack( - 'port set ' + - '--enable ' + - self.NAME - ) + raw_output = self.openstack('port set ' + '--enable ' + self.NAME) self.assertOutput('', raw_output) - raw_output = self.openstack( - 'port show ' + - self.NAME - ) - self.assertEqual( - self.NAME, - re.search(self.re_name, raw_output).group(1), - ) - self.assertEqual( - 'xyzpdq', - re.search(self.re_description, raw_output).group(1), - ) - self.assertEqual( - 'UP', - re.search(self.re_state, raw_output).group(1), - ) - self.assertIsNotNone( - re.search(self.re_mac_address, raw_output).group(1), - ) + json_output = json.loads(self.openstack( + 'port show -f json ' + self.NAME + )) + self.assertEqual(self.NAME, json_output.get('name')) + self.assertEqual('xyzpdq', json_output.get('description')) + self.assertEqual('UP', json_output.get('admin_state_up')) + self.assertIsNotNone(json_output.get('mac_address'))