From df73bdf0c0502af5a5d0aa9d40b768548dada617 Mon Sep 17 00:00:00 2001 From: Clark Boylan Date: Wed, 6 Jul 2016 09:55:28 -0700 Subject: [PATCH] Check network_data info in config drive tests There is an existing scenario test that verifies the meta_data.json contents of config drives. Extend this to also do verification of the network_data.json information on the config drive. The network_data has been included in various ways by different cloud deployments so we want to have a concrete test for this somewhere as the first step towards consistency. Change-Id: Ia148bca2cd932ccdf9735142e0082a330212ee04 --- tempest/scenario/test_server_basic_ops.py | 31 +++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/tempest/scenario/test_server_basic_ops.py b/tempest/scenario/test_server_basic_ops.py index 446c87a72e..b58479df3d 100644 --- a/tempest/scenario/test_server_basic_ops.py +++ b/tempest/scenario/test_server_basic_ops.py @@ -81,22 +81,42 @@ class TestServerBasicOps(manager.ScenarioTest): 'verify metadata on server. ' '%s is empty.' % md_url) + def _mount_config_drive(self): + cmd_blkid = 'blkid | grep -i config-2' + result = self.ssh_client.exec_command(cmd_blkid) + dev_name = re.match('([^:]+)', result).group() + self.ssh_client.exec_command('sudo mount %s /mnt' % dev_name) + + def _unmount_config_drive(self): + self.ssh_client.exec_command('sudo umount /mnt') + def verify_metadata_on_config_drive(self): if self.run_ssh and CONF.compute_feature_enabled.config_drive: # Verify metadata on config_drive - cmd_blkid = 'blkid | grep -i config-2' - result = self.ssh_client.exec_command(cmd_blkid) - dev_name = re.match('([^:]+)', result).group() - self.ssh_client.exec_command('sudo mount %s /mnt' % dev_name) + self._mount_config_drive() cmd_md = 'sudo cat /mnt/openstack/latest/meta_data.json' result = self.ssh_client.exec_command(cmd_md) - self.ssh_client.exec_command('sudo umount /mnt') + self._unmount_config_drive() result = json.loads(result) self.assertIn('meta', result) msg = ('Failed while verifying metadata on config_drive on server.' ' Result of command "%s" is NOT "%s".' % (cmd_md, self.md)) self.assertEqual(self.md, result['meta'], msg) + def verify_networkdata_on_config_drive(self): + if self.run_ssh and CONF.compute_feature_enabled.config_drive: + # Verify network data on config_drive + self._mount_config_drive() + cmd_md = 'sudo cat /mnt/openstack/latest/network_data.json' + result = self.ssh_client.exec_command(cmd_md) + self._unmount_config_drive() + result = json.loads(result) + self.assertIn('services', result) + self.assertIn('links', result) + self.assertIn('networks', result) + # TODO(clarkb) construct network_data from known network + # instance info and do direct comparison. + @test.idempotent_id('7fff3fb3-91d8-4fd0-bd7d-0204f1f180ba') @test.attr(type='smoke') @test.services('compute', 'network') @@ -116,4 +136,5 @@ class TestServerBasicOps(manager.ScenarioTest): self.verify_ssh(keypair) self.verify_metadata() self.verify_metadata_on_config_drive() + self.verify_networkdata_on_config_drive() self.servers_client.delete_server(self.instance['id'])