def connect_ssh_and_config_vm(self, vm_info, test_cmd_file_path, cmd_input_param, prompt_file_path): key_filename = None if "key_path" in vm_info: key_filename = vm_info["key_path"] ssh = SshClient(ip_address=vm_info["floating_ip"], user=vm_info["user"], password=vm_info["pass"], key_filename=key_filename) result = ssh.connect(self.ssh_connect_timeout, self.ssh_connect_retry_count) if not result: self.logger.error( "Cannot establish connection to IP '%s'. Aborting!", ssh.ip_address) return None (result, _) = self.command_create_and_execute(ssh, test_cmd_file_path, cmd_input_param, prompt_file_path) if not result: ssh.close() return None return ssh
def connect_ssh_and_config_vm(self, vm_info, test_cmd_file_path, cmd_input_param, prompt_file_path): key_filename = None if "key_path" in vm_info: key_filename = vm_info["key_path"] ssh = SshClient(ip_address=vm_info["floating_ip"], user=vm_info["user"], password=vm_info["pass"], key_filename=key_filename) result = ssh.connect(self.ssh_connect_timeout, self.ssh_connect_retry_count) if not result: self.logger.debug("try to vm reboot.") self.util.reboot_vm(vm_info["vnf_name"]) time.sleep(self.reboot_wait) result = ssh.connect(self.ssh_connect_timeout, self.ssh_connect_retry_count) if not result: return None (result, _) = self.command_create_and_execute( ssh, test_cmd_file_path, cmd_input_param, prompt_file_path) if not result: ssh.close() return None return ssh
def result_check(self, target_vnf, reference_vnf, check_rule_file_path_list, parameter_file_path, prompt_file_path): # pylint: disable=too-many-arguments,too-many-locals res_dict_data_list = [] parameter_file = open(parameter_file_path, 'r') cmd_input_param = yaml.safe_load(parameter_file) parameter_file.close() cmd_input_param["source_ip"] = target_vnf["data_plane_network_ip"] cmd_input_param["destination_ip"] = reference_vnf[ "data_plane_network_ip"] prompt_file = open(prompt_file_path, 'r') prompt = yaml.safe_load(prompt_file) prompt_file.close() terminal_mode_prompt = prompt["terminal_mode"] ssh = SshClient(target_vnf["floating_ip"], target_vnf["user"], target_vnf["pass"]) result = ssh.connect(self.ssh_connect_timeout, self.ssh_connect_retry_count) if not result: return False, res_dict_data_list checker = Checker() res_table = prettytable.PrettyTable( header_style='upper', padding_width=5, field_names=['test item', 'result']) status = True res_data_list = [] for check_rule_file_path in check_rule_file_path_list: (check_rule_dir, check_rule_file) = os.path.split( check_rule_file_path) check_rules = checker.load_check_rule(check_rule_dir, check_rule_file, cmd_input_param) (res, res_data) = self.vm_controller.command_execute( ssh, check_rules["command"], terminal_mode_prompt) res_data_list.append(res_data) if not res: status = False break (res, res_dict_data) = checker.regexp_information(res_data, check_rules) res_dict_data_list.append(res_dict_data) res_table.add_row([res_dict_data["test_name"], res_dict_data["result"]]) if not res: status = False time.sleep(self.cmd_wait) ssh.close() self.logger.info("Test result:\n\n%s\n", res_table.get_string()) self.output_check_result_detail_data(res_data_list) return status, res_dict_data_list