summaryrefslogtreecommitdiff
path: root/openstackclient/tests/functional
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests/functional')
-rw-r--r--openstackclient/tests/functional/common/test_quota.py21
-rw-r--r--openstackclient/tests/functional/network/v2/test_network.py43
-rw-r--r--openstackclient/tests/functional/network/v2/test_network_agent.py52
-rw-r--r--openstackclient/tests/functional/network/v2/test_network_flavor_profile.py151
-rw-r--r--openstackclient/tests/functional/network/v2/test_network_meter.py116
-rw-r--r--openstackclient/tests/functional/network/v2/test_network_meter_rule.py83
-rw-r--r--openstackclient/tests/functional/network/v2/test_port.py19
7 files changed, 421 insertions, 64 deletions
diff --git a/openstackclient/tests/functional/common/test_quota.py b/openstackclient/tests/functional/common/test_quota.py
index c1de9aa9..8092b3ce 100644
--- a/openstackclient/tests/functional/common/test_quota.py
+++ b/openstackclient/tests/functional/common/test_quota.py
@@ -25,6 +25,27 @@ class QuotaTests(base.TestCase):
cls.PROJECT_NAME =\
cls.get_openstack_configuration_value('auth.project_name')
+ def test_quota_list_network_option(self):
+ self.openstack('quota set --networks 40 ' +
+ self.PROJECT_NAME)
+ raw_output = self.openstack('quota list --network')
+ self.assertIsNotNone(raw_output)
+ self.assertIn("40", raw_output)
+
+ def test_quota_list_compute_option(self):
+ self.openstack('quota set --instances 40 ' +
+ self.PROJECT_NAME)
+ raw_output = self.openstack('quota list --compute')
+ self.assertIsNotNone(raw_output)
+ self.assertIn("40", raw_output)
+
+ def test_quota_list_volume_option(self):
+ self.openstack('quota set --backups 40 ' +
+ self.PROJECT_NAME)
+ raw_output = self.openstack('quota list --volume')
+ self.assertIsNotNone(raw_output)
+ self.assertIn("40", raw_output)
+
def test_quota_set(self):
self.openstack('quota set --instances 11 --volumes 11 --networks 11 ' +
self.PROJECT_NAME)
diff --git a/openstackclient/tests/functional/network/v2/test_network.py b/openstackclient/tests/functional/network/v2/test_network.py
index 12636558..0e10bfce 100644
--- a/openstackclient/tests/functional/network/v2/test_network.py
+++ b/openstackclient/tests/functional/network/v2/test_network.py
@@ -238,6 +238,49 @@ class NetworkTests(base.TestCase):
self.assertIn(name1, col_name)
self.assertNotIn(name2, col_name)
+ def test_network_dhcp_agent(self):
+ name1 = uuid.uuid4().hex
+ cmd_output1 = json.loads(self.openstack(
+ 'network create -f json ' +
+ '--description aaaa ' +
+ name1
+ ))
+
+ self.addCleanup(self.openstack, 'network delete ' + name1)
+
+ # Get network ID
+ network_id = cmd_output1['id']
+
+ # Get DHCP Agent ID
+ cmd_output2 = json.loads(self.openstack(
+ 'network agent list -f json --agent-type dhcp'
+ ))
+ agent_id = cmd_output2[0]['ID']
+
+ # Add Agent to Network
+ self.openstack(
+ 'network agent add network --dhcp '
+ + agent_id + ' ' + network_id
+ )
+
+ # Test network list --agent
+ cmd_output3 = json.loads(self.openstack(
+ 'network list -f json --agent ' + agent_id
+ ))
+
+ # Cleanup
+ # Remove Agent from Network
+ self.openstack(
+ 'network agent remove network --dhcp '
+ + agent_id + ' ' + network_id
+ )
+
+ # Assert
+ col_name = [x["ID"] for x in cmd_output3]
+ self.assertIn(
+ network_id, col_name
+ )
+
def test_network_set(self):
"""Tests create options, set, show, delete"""
name = uuid.uuid4().hex
diff --git a/openstackclient/tests/functional/network/v2/test_network_agent.py b/openstackclient/tests/functional/network/v2/test_network_agent.py
index dd6112e7..6da721d1 100644
--- a/openstackclient/tests/functional/network/v2/test_network_agent.py
+++ b/openstackclient/tests/functional/network/v2/test_network_agent.py
@@ -10,6 +10,9 @@
# License for the specific language governing permissions and limitations
# under the License.
+import json
+import uuid
+
from openstackclient.tests.functional import base
@@ -39,3 +42,52 @@ class NetworkAgentTests(base.TestCase):
self.openstack('network agent set --enable ' + self.IDs[0])
raw_output = self.openstack('network agent show ' + self.IDs[0] + opts)
self.assertEqual("UP\n", raw_output)
+
+
+class NetworkAgentListTests(base.TestCase):
+ """Functional test for network agent list --network. """
+
+ def test_network_dhcp_agent_list(self):
+ """Test network agent list"""
+
+ name1 = uuid.uuid4().hex
+ cmd_output1 = json.loads(self.openstack(
+ 'network create -f json ' +
+ '--description aaaa ' +
+ name1
+ ))
+
+ self.addCleanup(self.openstack, 'network delete ' + name1)
+
+ # Get network ID
+ network_id = cmd_output1['id']
+
+ # Get DHCP Agent ID
+ cmd_output2 = json.loads(self.openstack(
+ 'network agent list -f json --agent-type dhcp'
+ ))
+ agent_id = cmd_output2[0]['ID']
+
+ # Add Agent to Network
+ self.openstack(
+ 'network agent add network --dhcp '
+ + agent_id + ' ' + network_id
+ )
+
+ # Test network agent list --network
+ cmd_output3 = json.loads(self.openstack(
+ 'network agent list -f json --network ' + network_id
+ ))
+
+ # Cleanup
+ # Remove Agent from Network
+ self.openstack(
+ 'network agent remove network --dhcp '
+ + agent_id + ' ' + network_id
+ )
+
+ # Assert
+ col_name = [x["ID"] for x in cmd_output3]
+ self.assertIn(
+ agent_id, col_name
+ )
diff --git a/openstackclient/tests/functional/network/v2/test_network_flavor_profile.py b/openstackclient/tests/functional/network/v2/test_network_flavor_profile.py
new file mode 100644
index 00000000..1a82c82b
--- /dev/null
+++ b/openstackclient/tests/functional/network/v2/test_network_flavor_profile.py
@@ -0,0 +1,151 @@
+# 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 openstackclient.tests.functional import base
+
+
+class NetworkFlavorProfileTests(base.TestCase):
+ """Functional tests for network flavor-profile."""
+
+ DESCRIPTION = 'fakedescription'
+ METAINFO = 'Extrainfo'
+
+ def test_network_flavor_profile_create(self):
+ json_output = json.loads(self.openstack(
+ ' network flavor profile create -f json --description '
+ + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO))
+ ID = json_output.get('id')
+ self.assertIsNotNone(ID)
+ self.assertEqual(
+ True,
+ json_output.get('enabled'))
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description'))
+ self.assertEqual(
+ 'Extrainfo',
+ json_output.get('meta_info')
+ )
+
+ # Clean up
+ raw_output = self.openstack('network flavor profile delete ' + ID)
+ self.assertOutput('', raw_output)
+
+ def test_network_flavor_profile_list(self):
+ json_output = json.loads(self.openstack(
+ ' network flavor profile create -f json --description '
+ + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO))
+ ID1 = json_output.get('id')
+ self.assertIsNotNone(ID1)
+ self.assertEqual(
+ True,
+ json_output.get('enabled'))
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description'))
+ self.assertEqual(
+ 'Extrainfo',
+ json_output.get('meta_info')
+ )
+
+ json_output = json.loads(self.openstack(
+ ' network flavor profile create -f json --description '
+ + self.DESCRIPTION + ' --disable --metainfo ' + self.METAINFO))
+ ID2 = json_output.get('id')
+ self.assertIsNotNone(ID2)
+ self.assertEqual(
+ False,
+ json_output.get('enabled'))
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description'))
+ self.assertEqual(
+ 'Extrainfo',
+ json_output.get('meta_info')
+ )
+
+ # Test list
+ json_output = json.loads(self.openstack(
+ 'network flavor profile list -f json'))
+ self.assertIsNotNone(json_output)
+
+ id_list = [item.get('ID') for item in json_output]
+ self.assertIn(ID1, id_list)
+ self.assertIn(ID2, id_list)
+
+ # Clean up
+ raw_output = self.openstack(
+ 'network flavor profile delete ' + ID1 + " " + ID2)
+ self.assertOutput('', raw_output)
+
+ def test_network_flavor_profile_set(self):
+ json_output_1 = json.loads(self.openstack(
+ ' network flavor profile create -f json --description '
+ + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO))
+ ID = json_output_1.get('id')
+ self.assertIsNotNone(ID)
+ self.assertEqual(
+ True,
+ json_output_1.get('enabled'))
+ self.assertEqual(
+ 'fakedescription',
+ json_output_1.get('description'))
+ self.assertEqual(
+ 'Extrainfo',
+ json_output_1.get('meta_info')
+ )
+
+ self.openstack('network flavor profile set --disable ' + ID)
+
+ json_output = json.loads(self.openstack('network flavor profile show '
+ '-f json ' + ID))
+ self.assertEqual(
+ False,
+ json_output.get('enabled'))
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description'))
+ self.assertEqual(
+ 'Extrainfo',
+ json_output.get('meta_info')
+ )
+
+ # Clean up
+ raw_output = self.openstack('network flavor profile delete ' + ID)
+ self.assertOutput('', raw_output)
+
+ def test_network_flavor_profile_show(self):
+ json_output_1 = json.loads(self.openstack(
+ ' network flavor profile create -f json --description '
+ + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO))
+ ID = json_output_1.get('id')
+ self.assertIsNotNone(ID)
+ json_output = json.loads(self.openstack('network flavor profile show '
+ '-f json ' + ID))
+ self.assertEqual(
+ ID,
+ json_output["id"])
+ self.assertEqual(
+ True,
+ json_output["enabled"])
+ self.assertEqual(
+ 'fakedescription',
+ json_output["description"])
+ self.assertEqual(
+ 'Extrainfo',
+ json_output["meta_info"])
+
+ # Clean up
+ raw_output = self.openstack('network flavor profile delete ' + ID)
+ self.assertOutput('', raw_output)
diff --git a/openstackclient/tests/functional/network/v2/test_network_meter.py b/openstackclient/tests/functional/network/v2/test_network_meter.py
index 7dce34e7..f73f4812 100644
--- a/openstackclient/tests/functional/network/v2/test_network_meter.py
+++ b/openstackclient/tests/functional/network/v2/test_network_meter.py
@@ -13,7 +13,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
@@ -27,37 +27,45 @@ class TestMeter(base.TestCase):
# has its own needs and there are collisions when running
# tests in parallel.
- @classmethod
- def setUpClass(cls):
- # Set up some regex for matching below
- cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|")
- cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
- cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|")
-
def test_meter_delete(self):
"""Test create, delete multiple"""
name1 = uuid.uuid4().hex
name2 = uuid.uuid4().hex
-
- raw_output = self.openstack(
- 'network meter create ' + name1,
+ description = 'fakedescription'
+ json_output = json.loads(self.openstack(
+ 'network meter create -f json ' + name1 + ' --description '
+ + description)
)
self.assertEqual(
name1,
- re.search(self.re_name, raw_output).group(1),
+ json_output.get('name'),
)
# Check if default shared values
self.assertEqual(
- 'False',
- re.search(self.re_shared, raw_output).group(1)
+ False,
+ json_output.get('shared')
+ )
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description')
)
- raw_output = self.openstack(
- 'network meter create ' + name2,
+ json_output_2 = json.loads(self.openstack(
+ 'network meter create -f json ' + name2 + ' --description '
+ + description)
)
self.assertEqual(
name2,
- re.search(self.re_name, raw_output).group(1),
+ json_output_2.get('name'),
+ )
+ # Check if default shared values
+ self.assertEqual(
+ False,
+ json_output_2.get('shared')
+ )
+ self.assertEqual(
+ 'fakedescription',
+ json_output_2.get('description')
)
raw_output = self.openstack(
@@ -68,35 +76,83 @@ class TestMeter(base.TestCase):
def test_meter_list(self):
"""Test create, list filters, delete"""
name1 = uuid.uuid4().hex
- raw_output = self.openstack(
- 'network meter create --description Test1 --share ' + name1,
+ json_output = json.loads(self.openstack(
+ 'network meter create -f json --description Test1 --share '
+ + name1)
)
self.addCleanup(self.openstack, 'network meter delete ' + name1)
self.assertEqual(
'Test1',
- re.search(self.re_description, raw_output).group(1),
+ json_output.get('description'),
)
self.assertEqual(
- 'True',
- re.search(self.re_shared, raw_output).group(1),
+ True,
+ json_output.get('shared'),
)
name2 = uuid.uuid4().hex
- raw_output = self.openstack(
- 'network meter create --description Test2 --no-share ' + name2,
+ json_output_2 = json.loads(self.openstack(
+ 'network meter create -f json --description Test2 --no-share '
+ + name2)
)
self.addCleanup(self.openstack, 'network meter delete ' + name2)
self.assertEqual(
'Test2',
- re.search(self.re_description, raw_output).group(1),
+ json_output_2.get('description')
+ )
+ self.assertEqual(
+ False,
+ json_output_2.get('shared')
+ )
+
+ raw_output = json.loads(self.openstack('network meter list -f json'))
+ name_list = [item.get('Name') for item in raw_output]
+ self.assertIn(name1, name_list)
+ self.assertIn(name2, name_list)
+
+ def test_meter_show(self):
+ """Test create, show, delete"""
+ name1 = uuid.uuid4().hex
+ description = 'fakedescription'
+ json_output = json.loads(self.openstack(
+ 'network meter create -f json ' + name1 + ' --description '
+ + description)
+ )
+ meter_id = json_output.get('id')
+ self.addCleanup(self.openstack, 'network meter delete ' + name1)
+
+ # Test show with ID
+ json_output = json.loads(self.openstack(
+ 'network meter show -f json ' + meter_id)
)
self.assertEqual(
- 'False',
- re.search(self.re_shared, raw_output).group(1),
+ False,
+ json_output.get('shared')
+ )
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description')
+ )
+ self.assertEqual(
+ name1,
+ json_output.get('name')
)
- raw_output = self.openstack('network meter list')
- self.assertIsNotNone(re.search(name1 + "\s+\|\s+Test1", raw_output))
- self.assertIsNotNone(re.search(name2 + "\s+\|\s+Test2", raw_output))
+ # Test show with name
+ json_output = json.loads(self.openstack(
+ 'network meter show -f json ' + name1)
+ )
+ self.assertEqual(
+ meter_id,
+ json_output.get('id')
+ )
+ self.assertEqual(
+ False,
+ json_output.get('shared')
+ )
+ self.assertEqual(
+ 'fakedescription',
+ json_output.get('description')
+ )
diff --git a/openstackclient/tests/functional/network/v2/test_network_meter_rule.py b/openstackclient/tests/functional/network/v2/test_network_meter_rule.py
index 4f079e3c..d15cdf77 100644
--- a/openstackclient/tests/functional/network/v2/test_network_meter_rule.py
+++ b/openstackclient/tests/functional/network/v2/test_network_meter_rule.py
@@ -13,7 +13,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
@@ -27,19 +27,11 @@ class TestMeterRule(base.TestCase):
@classmethod
def setUpClass(cls):
- # Set up some regex for matching below
- cls.re_id = re.compile("id\s+\|\s+(\S+)")
- cls.re_direction = re.compile("direction\s+\|\s+(\S+)")
- cls.re_ip_prefix = re.compile(
- "remote_ip_prefix\s+\|\s+([^|]+?)\s+\|"
- )
- cls.re_meter_id = re.compile("metering_label_id\s+\|\s+(\S+)")
-
- raw_output = cls.openstack(
- 'network meter create ' + cls.METER_NAME
- )
+ json_output = json.loads(cls.openstack(
+ 'network meter create -f json ' + cls.METER_NAME
+ ))
- cls.METER_ID = re.search(cls.re_id, raw_output).group(1)
+ cls.METER_ID = json_output.get('id')
@classmethod
def tearDownClass(cls):
@@ -49,58 +41,81 @@ class TestMeterRule(base.TestCase):
def test_meter_rule_delete(self):
"""test create, delete"""
- raw_output = self.openstack(
- 'network meter rule create ' +
+ json_output = json.loads(self.openstack(
+ 'network meter rule create -f json ' +
'--remote-ip-prefix 10.0.0.0/8 ' +
self.METER_ID
- )
- rule_id = re.search(self.re_id, raw_output).group(1)
- re_ip = re.search(self.re_ip_prefix, raw_output)
+ ))
+ rule_id = json_output.get('id')
+ re_ip = json_output.get('remote_ip_prefix')
self.addCleanup(self.openstack,
'network meter rule delete ' + rule_id)
self.assertIsNotNone(re_ip)
self.assertIsNotNone(rule_id)
+ self.assertEqual(
+ '10.0.0.0/8', re_ip
+ )
def test_meter_rule_list(self):
"""Test create, list, delete"""
- raw_output = self.openstack(
- 'network meter rule create ' +
+ json_output = json.loads(self.openstack(
+ 'network meter rule create -f json ' +
'--remote-ip-prefix 10.0.0.0/8 ' +
self.METER_ID
- )
- rule_id = re.search(self.re_id, raw_output).group(1)
+ ))
+ rule_id_1 = json_output.get('id')
self.addCleanup(self.openstack,
- 'network meter rule delete ' + rule_id)
+ 'network meter rule delete ' + rule_id_1)
self.assertEqual(
'10.0.0.0/8',
- re.search(self.re_ip_prefix, raw_output).group(1)
+ json_output.get('remote_ip_prefix')
)
- raw_output = self.openstack('network meter rule list')
- self.assertIsNotNone(re.search(rule_id + "|\s+\|\s+\|\s+10.0.0.0/8",
- raw_output))
+ json_output_1 = json.loads(self.openstack(
+ 'network meter rule create -f json ' +
+ '--remote-ip-prefix 11.0.0.0/8 ' +
+ self.METER_ID
+ ))
+ rule_id_2 = json_output_1.get('id')
+ self.addCleanup(self.openstack,
+ 'network meter rule delete ' + rule_id_2)
+ self.assertEqual(
+ '11.0.0.0/8',
+ json_output_1.get('remote_ip_prefix')
+ )
+
+ json_output = json.loads(self.openstack('network meter rule list -f '
+ 'json'))
+ rule_id_list = [item.get('ID') for item in json_output]
+ ip_prefix_list = [item.get('Remote IP Prefix') for item in json_output]
+ self.assertIn(rule_id_1, rule_id_list)
+ self.assertIn(rule_id_2, rule_id_list)
+ self.assertIn('10.0.0.0/8', ip_prefix_list)
+ self.assertIn('11.0.0.0/8', ip_prefix_list)
def test_meter_rule_show(self):
+
"""Test create, show, delete"""
- raw_output = self.openstack(
- 'network meter rule create ' +
+ json_output = json.loads(self.openstack(
+ 'network meter rule create -f json ' +
'--remote-ip-prefix 10.0.0.0/8 ' +
'--egress ' +
self.METER_ID
- )
- rule_id = re.search(self.re_id, raw_output).group(1)
+ ))
+ rule_id = json_output.get('id')
self.assertEqual(
'egress',
- re.search(self.re_direction, raw_output).group(1)
+ json_output.get('direction')
)
- raw_output = self.openstack('network meter rule show ' + rule_id)
+ json_output = json.loads(self.openstack('network meter rule show'
+ ' -f json ' + rule_id))
self.assertEqual(
'10.0.0.0/8',
- re.search(self.re_ip_prefix, raw_output).group(1)
+ json_output.get('remote_ip_prefix')
)
self.assertIsNotNone(rule_id)
diff --git a/openstackclient/tests/functional/network/v2/test_port.py b/openstackclient/tests/functional/network/v2/test_port.py
index 78c57273..bd5eefa5 100644
--- a/openstackclient/tests/functional/network/v2/test_port.py
+++ b/openstackclient/tests/functional/network/v2/test_port.py
@@ -147,3 +147,22 @@ class PortTests(base.TestCase):
'port show -f json ' + self.NAME
))
self.assertEqual('', json_output.get('security_group_ids'))
+
+ def test_port_admin_set(self):
+ """Test create, set (as admin), show, delete"""
+ json_output = json.loads(self.openstack(
+ 'port create -f json ' +
+ '--network ' + self.NETWORK_NAME + ' ' + self.NAME
+ ))
+ id_ = json_output.get('id')
+ self.addCleanup(self.openstack, 'port delete ' + id_)
+
+ raw_output = self.openstack(
+ '--os-username admin '
+ + 'port set --mac-address 11:22:33:44:55:66 '
+ + self.NAME)
+ self.assertOutput('', raw_output)
+ json_output = json.loads(self.openstack(
+ 'port show -f json ' + self.NAME
+ ))
+ self.assertEqual(json_output.get('mac_address'), '11:22:33:44:55:66')