def cli_node_deletion_check(self): """Destroy node and remove it from Nailgun using Fuel CLI Scenario: 1. Revert snapshot 'cli_selected_nodes_deploy' 2. Check 'slave-03' is present 3. Destroy 'slave-03' 4. Wait until 'slave-03' become offline 5. Delete offline 'slave-03' from db 6. Check presence of 'slave-03' Duration 30m """ self.env.revert_snapshot("cli_selected_nodes_deploy") node_id = self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[2])['id'] assert_true( check_cobbler_node_exists(self.ssh_manager.admin_ip, node_id), "node-{0} is not found".format(node_id)) self.env.d_env.nodes().slaves[2].destroy() try: wait(lambda: not self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[2])['online'], timeout=60 * 6) except TimeoutError: raise admin_ip = self.ssh_manager.admin_ip cmd = 'fuel node --node-id {0} --delete-from-db'.format(node_id) res = self.ssh_manager.execute_on_remote(admin_ip, cmd) assert_true( res['exit_code'] == 0, "Offline node-{0} was not" "deleted from database".format(node_id)) cmd = "fuel node | awk '{{print $1}}' | grep -w '{0}'".format(node_id) try: wait(lambda: not self.ssh_manager.execute_on_remote( admin_ip, cmd, raise_on_assert=False)['exit_code'] == 0, timeout=60 * 4) except TimeoutError: raise TimeoutError( "After deletion node-{0} is found in fuel list".format( node_id)) is_cobbler_node_exists = check_cobbler_node_exists( self.ssh_manager.admin_ip, node_id) assert_false( is_cobbler_node_exists, "After deletion node-{0} is found in cobbler list".format(node_id)) cmd = "fuel env | tail -n 1 | awk {'print $1'}" cluster_id = self.ssh_manager.execute_on_remote(admin_ip, cmd)['stdout_str'] self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf(cluster_id=cluster_id, test_sets=['ha', 'smoke', 'sanity'], should_fail=1)
def cli_node_deletion_check(self): """Destroy node and remove it from Nailgun using Fuel CLI Scenario: 1. Revert snapshot 'cli_selected_nodes_deploy' 2. Check 'slave-03' is present 3. Destroy 'slave-03' 4. Wait until 'slave-03' become offline 5. Delete offline 'slave-03' from db 6. Check presence of 'slave-03' Duration 30m """ self.env.revert_snapshot("cli_selected_nodes_deploy") node = self.env.d_env.nodes().slaves[2] node_id = self.fuel_web.get_nailgun_node_by_devops_node(node)['id'] assert_true(check_cobbler_node_exists(self.ssh_manager.admin_ip, node_id), "node-{0} is not found".format(node_id)) node.destroy() self.fuel_web.wait_node_is_offline(node, timeout=60 * 6) admin_ip = self.ssh_manager.admin_ip cmd = 'fuel node --node-id {0} --delete-from-db'.format(node_id) res = self.ssh_manager.execute_on_remote(admin_ip, cmd) assert_true( res['exit_code'] == 0, "Offline node-{0} was not" "deleted from database".format(node_id)) cmd = "fuel node | awk '{{print $1}}' | grep -w '{0}'".format(node_id) wait( lambda: not self.ssh_manager.execute_on_remote( admin_ip, cmd, raise_on_assert=False)['exit_code'] == 0, timeout=60 * 4, timeout_msg='After deletion node-{0} is found in fuel list' ''.format(node_id)) is_cobbler_node_exists = check_cobbler_node_exists( self.ssh_manager.admin_ip, node_id) assert_false(is_cobbler_node_exists, "After deletion node-{0} is found in cobbler list". format(node_id)) cmd = "fuel env | tail -n 1 | awk {'print $1'}" cluster_id = self.ssh_manager.execute_on_remote( admin_ip, cmd)['stdout_str'] self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['ha', 'smoke', 'sanity'])
def cli_node_deletion_check(self): """Destroy node and remove it from Nailgun using Fuel CLI Scenario: 1. Revert snapshot 'cli_selected_nodes_deploy' 2. Check 'slave-03' is present 3. Destroy 'slave-03' 4. Wait until 'slave-03' become offline 5. Delete offline 'slave-03' from db 6. Check presence of 'slave-03' Duration 30m """ self.env.revert_snapshot("cli_selected_nodes_deploy") remote = self.env.d_env.get_admin_remote() node_id = self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[2])['id'] assert_true(check_cobbler_node_exists(remote, node_id), "node-{0} is not found".format(node_id)) self.env.d_env.nodes().slaves[2].destroy() try: wait( lambda: not self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes(). slaves[2])['online'], timeout=60 * 6) except TimeoutError: raise assert_true( remote.execute('fuel node --node-id {0} --delete-from-db'. format(node_id))['exit_code'] == 0, "Offline node-{0} was not deleted from database".format(node_id) ) try: wait( lambda: not remote.execute( "fuel node | awk '{{print $1}}' | grep -w '{0}'". format(node_id))['exit_code'] == 0, timeout=60 * 2) except TimeoutError: raise TimeoutError( "After deletion node-{0} is found in fuel list". format(node_id)) assert_false(check_cobbler_node_exists(remote, node_id), "After deletion node-{0} is found in cobbler list". format(node_id)) cluster_id = ''.join(remote.execute( "fuel env | tail -n 1 | awk {'print $1'}")['stdout']).rstrip() self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['ha', 'smoke', 'sanity'], should_fail=1)
def upgrade_smoke_restore(self): """Reinstall Fuel and restore non-HA cluster using fuel-octane. Scenario: 1. Revert "upgrade_smoke" snapshot 2. Reinstall Fuel master using iso given in ISO_PATH 3. Install fuel-octane package 4. Upload the backup back to reinstalled Fuel maser node 5. Restore master node using 'octane fuel-restore' 6. Check that nailgun is available 7. Check cobbler configs for all discovered nodes 8. Check ubuntu bootstrap is available 9. Verify networks 10. Run OSTF Snapshot: upgrade_smoke_restore Duration: TODO """ assert_true(os.path.exists(self.repos_local_path)) assert_true(os.path.exists(self.local_path)) self.check_run(self.snapshot_name) self.show_step(1, initialize=True) assert_true( self.env.revert_snapshot(self.source_snapshot_name), "The test can not use given environment - snapshot " "{!r} does not exists".format(self.source_snapshot_name)) self.show_step(2) self.env.reinstall_master_node() self.show_step(3) self.show_step(4) self.show_step(5) self.do_restore(self.backup_path, self.local_path, self.repos_backup_path, self.repos_local_path) # Check nailgun api is available self.show_step(6) self.fuel_web.change_default_network_settings() cluster_id = self.fuel_web.get_last_created_cluster() self.show_step(7) for node in self.fuel_web.client.list_cluster_nodes(cluster_id): checkers.check_cobbler_node_exists(self.admin_remote, node['id']) # Check non-default parameters of the cluster creds = self.fuel_web.get_cluster_credentials(cluster_id) assert_equal(sorted(creds.values()), sorted(self.cluster_creds.values())) self.show_step(8) slave_03 = self.env.d_env.get_node(name="slave-03") self.env.bootstrap_nodes([slave_03]) with self.fuel_web.get_ssh_for_node(slave_03.name) as slave_remote: checkers.verify_bootstrap_on_node(slave_remote, "ubuntu") self.show_step(9) self.fuel_web.verify_network(cluster_id) self.show_step(10) self.fuel_web.run_ostf(cluster_id) self.env.make_snapshot("upgrade_smoke_restore", is_make=True) self.cleanup()