コード例 #1
0
ファイル: vm_controller.py プロジェクト: skatsaounis/functest
    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
コード例 #2
0
ファイル: vm_controller.py プロジェクト: colvert/functest
    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
コード例 #3
0
    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