def deploy_cluster_with_reboot_plugin_timeout(self): """Check deployment is failed by reboot task plugin. Scenario: 1. Revert snapshot with 3 nodes 2. Download and install fuel-plugin-builder 3. Create plugin with reboot task, set timeout for reboot task as 1 second 4. Build plugin 5. Install plugin to fuel 6. Create cluster and enable plugin 7. Provision nodes 8. Deploy cluster 9. Check deployment was failed by reboot task 10. Check error msg at the logs Duration 15m """ # define some plugin related variables plugin_name = 'timeout_plugin' source_plugin_path = os.path.join('/root/', plugin_name) plugin_path = '/var' tasks_path = os.path.dirname(os.path.abspath(__file__)) tasks_file = 'reboot_tasks.yaml' # start reverting snapshot self.show_step(1, initialize=True) self.env.revert_snapshot("ready_with_3_slaves") # let's get ssh client for the master node self.show_step(2) # initiate fuel plugin builder instance fpb = FuelPluginBuilder() # install fuel_plugin_builder on master node fpb.fpb_install() # change timeout to a new value '1' fpb.put_value_to_local_yaml(os.path.join(tasks_path, tasks_file), os.path.join('/tmp/', tasks_file), [1, 'parameters', 'timeout'], 1) self.show_step(3) # create plugin template on the master node fpb.fpb_create_plugin(source_plugin_path) # replace plugin tasks with our file fpb.fpb_replace_plugin_content( os.path.join('/tmp/', tasks_file), os.path.join(source_plugin_path, 'tasks.yaml')) # build plugin self.show_step(4) packet_name = fpb.fpb_build_plugin(source_plugin_path) # copy plugin archive file # to the /var directory on the master node fpb.fpb_copy_plugin( os.path.join(source_plugin_path, packet_name), plugin_path) # let's install plugin self.show_step(5) utils.install_plugin_check_code( ip=self.ssh_manager.admin_ip, plugin=os.path.join(plugin_path, packet_name)) # create cluster self.show_step(6) cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, ) # get plugins from fuel and enable it msg = "Plugin couldn't be enabled. Check plugin version. Test aborted" asserts.assert_true( self.fuel_web.check_plugin_exists(cluster_id, plugin_name), msg) options = {'metadata/enabled': True} self.fuel_web.update_plugin_data(cluster_id, plugin_name, options) logger.info('Cluster is {!s}'.format(cluster_id)) self.fuel_web.update_nodes( cluster_id, {'slave-01': ['controller', 'ceph-osd']} ) self.show_step(7) self.fuel_web.provisioning_cluster_wait(cluster_id) logger.info('Start cluster #%s deployment', cluster_id) self.show_step(8) task = self.fuel_web.client.deploy_nodes(cluster_id) self.show_step(9) self.fuel_web.assert_task_failed(task) msg = 'Time detection (1 sec) for node reboot has expired' cmd = 'grep "{0}" /var/log/astute/astute.log'.format(msg) self.show_step(10) with self.env.d_env.get_admin_remote() as admin_remote: result = admin_remote.execute(cmd)['stdout'][0] asserts.assert_true( msg in result, 'Failed to find reboot plugin warning message in logs' )
def deploy_cluster_with_reboot_plugin_timeout(self): """Check deployment is failed by reboot task plugin. Scenario: 1. Revert snapshot with 3 nodes 2. Download and install fuel-plugin-builder 3. Create plugin with reboot task, set timeout for reboot task as 1 second 4. Build plugin 5. Install plugin to fuel 6. Create cluster and enable plugin 7. Provision nodes 8. Deploy cluster 9. Check deployment was failed by reboot task 10. Check error msg at the logs Duration 15m """ # define some plugin related variables plugin_name = 'timeout_plugin' source_plugin_path = os.path.join('/root/', plugin_name) plugin_path = '/var' tasks_path = os.path.dirname(os.path.abspath(__file__)) tasks_file = 'reboot_tasks.yaml' # start reverting snapshot self.show_step(1, initialize=True) self.env.revert_snapshot("ready_with_3_slaves") # let's get ssh client for the master node self.show_step(2) # initiate fuel plugin builder instance fpb = FuelPluginBuilder() # install fuel_plugin_builder on master node fpb.fpb_install() # change timeout to a new value '1' fpb.put_value_to_local_yaml(os.path.join(tasks_path, tasks_file), os.path.join('/tmp/', tasks_file), [1, 'parameters', 'timeout'], 1) self.show_step(3) # create plugin template on the master node fpb.fpb_create_plugin(source_plugin_path) # replace plugin tasks with our file fpb.fpb_replace_plugin_content( os.path.join('/tmp/', tasks_file), os.path.join(source_plugin_path, 'tasks.yaml')) # build plugin self.show_step(4) packet_name = fpb.fpb_build_plugin(source_plugin_path) # copy plugin archive file # to the /var directory on the master node fpb.fpb_copy_plugin(os.path.join(source_plugin_path, packet_name), plugin_path) # let's install plugin self.show_step(5) utils.install_plugin_check_code(ip=self.ssh_manager.admin_ip, plugin=os.path.join( plugin_path, packet_name)) # create cluster self.show_step(6) cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, ) # get plugins from fuel and enable it msg = "Plugin couldn't be enabled. Check plugin version. Test aborted" asserts.assert_true( self.fuel_web.check_plugin_exists(cluster_id, plugin_name), msg) options = {'metadata/enabled': True} self.fuel_web.update_plugin_data(cluster_id, plugin_name, options) logger.info('Cluster is {!s}'.format(cluster_id)) self.fuel_web.update_nodes(cluster_id, {'slave-01': ['controller', 'ceph-osd']}) self.show_step(7) self.fuel_web.provisioning_cluster_wait(cluster_id) logger.info('Start cluster #%s deployment', cluster_id) self.show_step(8) task = self.fuel_web.client.deploy_nodes(cluster_id) self.show_step(9) self.fuel_web.assert_task_failed(task) msg = 'Time detection (1 sec) for node reboot has expired' cmd = 'grep "{0}" /var/log/astute/astute.log'.format(msg) self.show_step(10) with self.env.d_env.get_admin_remote() as admin_remote: result = admin_remote.execute(cmd)['stdout'][0] asserts.assert_true( msg in result, 'Failed to find reboot plugin warning message in logs')