summaryrefslogtreecommitdiff
path: root/openstackclient/tests/functional
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests/functional')
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server.py179
-rw-r--r--openstackclient/tests/functional/volume/v3/test_volume.py1
2 files changed, 180 insertions, 0 deletions
diff --git a/openstackclient/tests/functional/compute/v2/test_server.py b/openstackclient/tests/functional/compute/v2/test_server.py
index 9cf2fc7f..cf4bcbc2 100644
--- a/openstackclient/tests/functional/compute/v2/test_server.py
+++ b/openstackclient/tests/functional/compute/v2/test_server.py
@@ -1071,3 +1071,182 @@ class ServerTests(common.ComputeTestCase):
# networks and the test didn't specify a specific network.
self.assertNotIn('nics are required after microversion 2.36',
e.stderr)
+
+ def test_server_add_remove_network(self):
+ name = uuid.uuid4().hex
+ cmd_output = json.loads(self.openstack(
+ 'server create -f json ' +
+ '--network private ' +
+ '--flavor ' + self.flavor_name + ' ' +
+ '--image ' + self.image_name + ' ' +
+ '--wait ' +
+ name
+ ))
+
+ self.assertIsNotNone(cmd_output['id'])
+ self.assertEqual(name, cmd_output['name'])
+ self.addCleanup(self.openstack, 'server delete --wait ' + name)
+
+ # add network and check 'public' is in server show
+ self.openstack(
+ 'server add network ' + name + ' public')
+
+ wait_time = 0
+ while wait_time < 60:
+ cmd_output = json.loads(self.openstack(
+ 'server show -f json ' + name
+ ))
+ if 'public' not in cmd_output['addresses']:
+ # Hang out for a bit and try again
+ print('retrying add network check')
+ wait_time += 10
+ time.sleep(10)
+ else:
+ break
+ addresses = cmd_output['addresses']
+ self.assertIn('public', addresses)
+
+ # remove network and check 'public' is not in server show
+ self.openstack('server remove network ' + name + ' public')
+
+ wait_time = 0
+ while wait_time < 60:
+ cmd_output = json.loads(self.openstack(
+ 'server show -f json ' + name
+ ))
+ if 'public' in cmd_output['addresses']:
+ # Hang out for a bit and try again
+ print('retrying remove network check')
+ wait_time += 10
+ time.sleep(10)
+ else:
+ break
+
+ addresses = cmd_output['addresses']
+ self.assertNotIn('public', addresses)
+
+ def test_server_add_remove_port(self):
+ name = uuid.uuid4().hex
+ cmd_output = json.loads(self.openstack(
+ 'server create -f json ' +
+ '--network private ' +
+ '--flavor ' + self.flavor_name + ' ' +
+ '--image ' + self.image_name + ' ' +
+ '--wait ' +
+ name
+ ))
+
+ self.assertIsNotNone(cmd_output['id'])
+ self.assertEqual(name, cmd_output['name'])
+ self.addCleanup(self.openstack, 'server delete --wait ' + name)
+
+ # create port, record one of its ip address
+ port_name = uuid.uuid4().hex
+
+ cmd_output = json.loads(self.openstack(
+ 'port list -f json'
+ ))
+ self.assertNotIn(port_name, cmd_output)
+
+ cmd_output = json.loads(self.openstack(
+ 'port create -f json ' +
+ '--network private ' + port_name
+ ))
+ self.assertIsNotNone(cmd_output['id'])
+ ip_address = cmd_output['fixed_ips'][0]['ip_address']
+ self.addCleanup(self.openstack, 'port delete ' + port_name)
+
+ # add port to server, assert the ip address of the port appears
+ self.openstack('server add port ' + name + ' ' + port_name)
+
+ wait_time = 0
+ while wait_time < 60:
+ cmd_output = json.loads(self.openstack(
+ 'server show -f json ' + name
+ ))
+ if ip_address not in cmd_output['addresses']['private']:
+ # Hang out for a bit and try again
+ print('retrying add port check')
+ wait_time += 10
+ time.sleep(10)
+ else:
+ break
+ addresses = cmd_output['addresses']['private']
+ self.assertIn(ip_address, addresses)
+
+ # remove port, assert the ip address of the port doesn't appear
+ self.openstack('server remove port ' + name + ' ' + port_name)
+
+ wait_time = 0
+ while wait_time < 60:
+ cmd_output = json.loads(self.openstack(
+ 'server show -f json ' + name
+ ))
+ if ip_address in cmd_output['addresses']['private']:
+ # Hang out for a bit and try again
+ print('retrying add port check')
+ wait_time += 10
+ time.sleep(10)
+ else:
+ break
+ addresses = cmd_output['addresses']['private']
+ self.assertNotIn(ip_address, addresses)
+
+ def test_server_add_remove_volume(self):
+ volume_wait_for = volume_common.BaseVolumeTests.wait_for_status
+
+ name = uuid.uuid4().hex
+ cmd_output = json.loads(self.openstack(
+ 'server create -f json ' +
+ '--network private ' +
+ '--flavor ' + self.flavor_name + ' ' +
+ '--image ' + self.image_name + ' ' +
+ '--wait ' +
+ name
+ ))
+
+ self.assertIsNotNone(cmd_output['id'])
+ self.assertEqual(name, cmd_output['name'])
+ self.addCleanup(self.openstack, 'server delete --wait ' + name)
+ server_id = cmd_output['id']
+
+ volume_name = uuid.uuid4().hex
+ cmd_output = json.loads(self.openstack(
+ 'volume create -f json ' +
+ '--size 1 ' +
+ volume_name
+ ))
+
+ self.assertIsNotNone(cmd_output['id'])
+ self.assertEqual(volume_name, cmd_output['name'])
+ volume_wait_for('volume', volume_name, 'available')
+ self.addCleanup(self.openstack, 'volume delete ' + volume_name)
+ volume_id = cmd_output['id']
+
+ cmd_output = json.loads(self.openstack(
+ 'server add volume -f json ' +
+ name + ' ' +
+ volume_name + ' ' +
+ '--tag bar'
+ ))
+
+ self.assertIsNotNone(cmd_output['ID'])
+ self.assertEqual(server_id, cmd_output['Server ID'])
+ self.assertEqual(volume_id, cmd_output['Volume ID'])
+ volume_attachment_id = cmd_output['ID']
+
+ cmd_output = json.loads(self.openstack(
+ 'server volume list -f json ' +
+ name
+ ))
+
+ self.assertEqual(volume_attachment_id, cmd_output[0]['ID'])
+ self.assertEqual(server_id, cmd_output[0]['Server ID'])
+ self.assertEqual(volume_id, cmd_output[0]['Volume ID'])
+
+ volume_wait_for('volume', volume_name, 'in-use')
+ self.openstack('server remove volume ' + name + ' ' + volume_name)
+ volume_wait_for('volume', volume_name, 'available')
+
+ raw_output = self.openstack('server volume list ' + name)
+ self.assertEqual('\n', raw_output)
diff --git a/openstackclient/tests/functional/volume/v3/test_volume.py b/openstackclient/tests/functional/volume/v3/test_volume.py
index 6635167d..c1b45e2f 100644
--- a/openstackclient/tests/functional/volume/v3/test_volume.py
+++ b/openstackclient/tests/functional/volume/v3/test_volume.py
@@ -152,6 +152,7 @@ class VolumeTests(common.BaseVolumeTests):
name,
)
self.assertOutput('', raw_output)
+ self.wait_for_status("volume", new_name, "available")
cmd_output = json.loads(self.openstack(
'volume show -f json ' +