def cluster_deletion(self): """ Scenario: 1. Revert snapshot 'prepare_ha_neutron' 2. Delete cluster via cli 3. Check cluster absence in the list Duration 25m """ self.env.revert_snapshot("prepare_ha_neutron") remote = self.env.d_env.get_admin_remote() cluster_id = self.fuel_web.get_last_created_cluster() assert_true( remote.execute('fuel --env {0} env delete'.format(cluster_id)) ['exit_code'] == 0) try: wait(lambda: remote.execute( "fuel env | awk '{print $1}' | tail -n 1 | grep '^.$'") ['exit_code'] == 1, timeout=60 * 6) except TimeoutError: raise TimeoutError( "cluster {0} was not deleted".format(cluster_id)) assert_false( check_cluster_presence(cluster_id, self.env.postgres_actions), "cluster {0} is found".format(cluster_id))
def cli_cluster_deletion(self): """Delete a cluster using Fuel CLI Scenario: 1. Revert snapshot 'cli_selected_nodes_deploy' 2. Delete cluster via cli 3. Check cluster absence in the list Duration 25m """ self.env.revert_snapshot("cli_selected_nodes_deploy") cluster_id = self.fuel_web.get_last_created_cluster() with self.env.d_env.get_admin_remote() as remote: res = remote.execute( 'fuel --env {0} env delete'.format(cluster_id)) assert_true(res['exit_code'] == 0) with self.env.d_env.get_admin_remote() as remote: try: wait(lambda: remote.execute("fuel env | awk '{print $1}'" " | tail -n 1 | grep '^.$'")[ 'exit_code'] == 1, timeout=60 * 6) except TimeoutError: raise TimeoutError( "cluster {0} was not deleted".format(cluster_id)) assert_false( check_cluster_presence(cluster_id, self.env.postgres_actions), "cluster {0} is found".format(cluster_id))
def cli_cluster_deletion(self): """Delete a cluster using Fuel CLI Scenario: 1. Revert snapshot 'cli_selected_nodes_deploy' 2. Delete cluster via cli 3. Check cluster absence in the list Duration 25m """ self.env.revert_snapshot("cli_selected_nodes_deploy") cluster_id = self.fuel_web.get_last_created_cluster() nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) online_nodes = [node for node in nodes if node['online']] if nodes != online_nodes: logger.error( 'Some slaves do not become online after revert!!' ' Expected {0} Actual {1}'.format(nodes, online_nodes)) self.ssh_manager.execute_on_remote( ip=self.ssh_manager.admin_ip, cmd='fuel --env {0} env delete --force'.format(cluster_id) ) try: wait(lambda: self.ssh_manager.execute_on_remote( ip=self.ssh_manager.admin_ip, cmd="fuel env | awk '{print $1}' | tail -n 1 | " "grep '^.$'", raise_on_assert=False)['exit_code'] == 1, timeout=60 * 10) except TimeoutError: raise TimeoutError( "cluster {0} was not deleted".format(cluster_id)) assert_false( check_cluster_presence(cluster_id, self.env.postgres_actions), "cluster {0} is found".format(cluster_id))
def review_fuel_cli_one_node_deploy(self): """ Revert snapshot, apply changes from review and deploy cluster with controller node only over cli. Scenario: 1. Revert snapshot 'ready_with_1_slave' 2. Apply changes from review 3. Bootstrap 1 node 4. Show releases list 5. Create cluster over cli 6. Update networks 7. Update SSL settings 8. List environments 9. Add and provision 1 node with controller role 10. Deploy node 11. Delete cluster Duration 20m """ if not UPDATE_FUEL: raise exceptions.FuelQAVariableNotSet(UPDATE_FUEL, 'true') self.show_step(1, initialize=True) self.env.revert_snapshot('ready_with_1_slaves') target_path = '/var/www/nailgun/python-fuelclient/' package_name = 'python-fuelclient' with self.env.d_env.get_admin_remote() as remote: self.show_step(2) self.upload_package(remote, target_path, package_name) self.replace_package(remote, package_name=package_name, package_path=target_path) self.show_step(3) self.env.bootstrap_nodes( self.env.d_env.nodes().slaves[:1]) node_id = [self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[0])['id']] with self.env.d_env.get_admin_remote() as remote: self.show_step(3) # get releases list self.show_step(4) list_release_cmd = 'fuel release --json' list_release_res = run_on_remote( remote, list_release_cmd, jsonify=True) active_release_id = [ release['id'] for release in list_release_res if release['is_deployable']] asserts.assert_true( active_release_id, 'Can not find deployable release. ' 'Current release data {0}'.format(list_release_res)) # Create an environment self.show_step(5) cmd = ('fuel env create --name={0} --release={1} ' '--nst=tun --json'.format(self.__class__.__name__, active_release_id[0])) env_result = run_on_remote(remote, cmd, jsonify=True) cluster_id = env_result['id'] cluster_name = env_result['name'] # Update network parameters self.show_step(6) self.update_cli_network_configuration(cluster_id, remote) # Update SSL configuration self.show_step(7) self.update_ssl_configuration(cluster_id, remote) self.show_step(8) cmd = 'fuel env --json' env_list_res = run_on_remote( remote, cmd, jsonify=True) asserts.assert_true( cluster_id in [cluster['id'] for cluster in env_list_res], 'Can not find created before environment' ' id in fuel environment list.') asserts.assert_true( cluster_name in [cluster['name'] for cluster in env_list_res], 'Can not find cluster name in fuel env command output') # Add and provision a controller node self.show_step(9) logger.info("Add to the cluster and start provisioning " "a controller node [{0}]".format(node_id[0])) cmd = ('fuel --env-id={0} node set --node {1} --role=controller' .format(cluster_id, node_id[0])) remote.execute(cmd) cmd = ('fuel --env-id={0} node --provision --node={1} --json' .format(cluster_id, node_id[0])) task = run_on_remote(remote, cmd, jsonify=True) self.assert_cli_task_success(task, remote, timeout=30 * 60) # Deploy the controller node self.show_step(10) cmd = ('fuel --env-id={0} node --deploy --node {1} --json' .format(cluster_id, node_id[0])) task = run_on_remote(remote, cmd, jsonify=True) self.assert_cli_task_success(task, remote, timeout=60 * 60) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity']) self.show_step(11) with self.env.d_env.get_admin_remote() as remote: res = remote.execute('fuel --env {0} env delete' .format(cluster_id)) asserts.assert_true( res['exit_code'] == 0) with self.env.d_env.get_admin_remote() as remote: try: wait(lambda: remote.execute("fuel env | awk '{print $1}'" " | tail -n 1 | grep '^.$'") ['exit_code'] == 1, timeout=60 * 10) except TimeoutError: raise TimeoutError( "cluster {0} was not deleted".format(cluster_id)) asserts.assert_false( check_cluster_presence(cluster_id, self.env.postgres_actions), "cluster {0} is found".format(cluster_id)) self.env.make_snapshot("review_fuel_cli_one_node_deploy")
def review_fuel_cli_one_node_deploy(self): """ Revert snapshot, apply changes from review and deploy cluster with controller node only over cli. Scenario: 1. Revert snapshot 'ready_with_1_slave' 2. Apply changes from review 3. Bootstrap 1 node 4. Show releases list 5. Create cluster over cli 6. Update networks 7. Update SSL settings 8. List environments 9. Add and provision 1 node with controller role 10. Deploy node 11. Delete cluster Duration 20m """ if not UPDATE_FUEL: raise exceptions.FuelQAVariableNotSet(UPDATE_FUEL, 'true') self.show_step(1, initialize=True) self.env.revert_snapshot('ready_with_1_slaves') target_path = '/var/www/nailgun/python-fuelclient/' package_name = 'python-fuelclient' with self.env.d_env.get_admin_remote() as remote: self.show_step(2) self.upload_package(remote, target_path, package_name) self.replace_package(remote, package_name=package_name, package_path=target_path) self.show_step(3) self.env.bootstrap_nodes(self.env.d_env.nodes().slaves[:1]) node_id = [ self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[0])['id'] ] with self.env.d_env.get_admin_remote() as remote: self.show_step(3) # get releases list self.show_step(4) list_release_cmd = 'fuel release --json' list_release_res = run_on_remote(remote, list_release_cmd, jsonify=True) active_release_id = [ release['id'] for release in list_release_res if release['is_deployable'] ] asserts.assert_true( active_release_id, 'Can not find deployable release. ' 'Current release data {0}'.format(list_release_res)) # Create an environment self.show_step(5) cmd = ('fuel env create --name={0} --release={1} ' '--nst=tun --json'.format(self.__class__.__name__, active_release_id[0])) env_result = run_on_remote(remote, cmd, jsonify=True) cluster_id = env_result['id'] cluster_name = env_result['name'] # Update network parameters self.show_step(6) self.update_cli_network_configuration(cluster_id, remote) # Update SSL configuration self.show_step(7) self.update_ssl_configuration(cluster_id, remote) self.show_step(8) cmd = 'fuel env --json' env_list_res = run_on_remote(remote, cmd, jsonify=True) asserts.assert_true( cluster_id in [cluster['id'] for cluster in env_list_res], 'Can not find created before environment' ' id in fuel environment list.') asserts.assert_true( cluster_name in [cluster['name'] for cluster in env_list_res], 'Can not find cluster name in fuel env command output') # Add and provision a controller node self.show_step(9) logger.info("Add to the cluster and start provisioning " "a controller node [{0}]".format(node_id[0])) cmd = ('fuel --env-id={0} node set --node {1} --role=controller'. format(cluster_id, node_id[0])) remote.execute(cmd) cmd = ( 'fuel --env-id={0} node --provision --node={1} --json'.format( cluster_id, node_id[0])) task = run_on_remote(remote, cmd, jsonify=True) self.assert_cli_task_success(task, remote, timeout=30 * 60) # Deploy the controller node self.show_step(10) cmd = ('fuel --env-id={0} node --deploy --node {1} --json'.format( cluster_id, node_id[0])) task = run_on_remote(remote, cmd, jsonify=True) self.assert_cli_task_success(task, remote, timeout=60 * 60) self.fuel_web.run_ostf(cluster_id=cluster_id, test_sets=['sanity']) self.show_step(11) with self.env.d_env.get_admin_remote() as remote: res = remote.execute( 'fuel --env {0} env delete'.format(cluster_id)) asserts.assert_true(res['exit_code'] == 0) with self.env.d_env.get_admin_remote() as remote: try: wait(lambda: remote.execute("fuel env | awk '{print $1}'" " | tail -n 1 | grep '^.$'")[ 'exit_code'] == 1, timeout=60 * 10) except TimeoutError: raise TimeoutError( "cluster {0} was not deleted".format(cluster_id)) asserts.assert_false( check_cluster_presence(cluster_id, self.env.postgres_actions), "cluster {0} is found".format(cluster_id)) self.env.make_snapshot("review_fuel_cli_one_node_deploy")