Exemplo n.º 1
0
 def edit_executor(self):
     name = click.prompt("Name")
     if name not in self.executors_dict:
         click.secho(f"There is no {name} executor", fg="yellow")
         return
     new_name = None
     while new_name is None:
         new_name = self.check_executors_name("New name", default=name)
     if new_name != name:
         value = self.executors_dict[name]
         self.executors_dict.pop(name)
         self.executors_dict[new_name] = value
         name = new_name
     section = Sections.EXECUTOR_DATA.format(name)
     repo_executor = self.executors_dict[section].get("repo_executor")
     if repo_executor:
         repo_name = re.search(r"(^[a-zA-Z0-9_-]+)(?:\..*)*$",
                               repo_executor).group(1)
         metadata = executor_metadata(repo_name)
         process_repo_var_envs(name, metadata)
     else:
         cmd = click.prompt("Command to execute",
                            default=self.executors_dict[section]["cmd"])
         self.executors_dict[section]["cmd"] = cmd
         process_var_envs(name)
         process_params(name)
     click.secho("Update repository executor finish", fg="green")
Exemplo n.º 2
0
 def edit_executor(self):
     name = click.prompt("Name")
     if name not in self.executors_list:
         print(f"{Bcolors.WARNING}There is no {name} executor{Bcolors.ENDC}")
         return
     new_name = None
     while new_name is None:
         new_name = self.check_executors_name("New name", default=name)
     if new_name != name:
         for unformatted_section in Wizard.EXECUTOR_SECTIONS:
             section = unformatted_section.format(new_name)
             old_section = unformatted_section.format(name)
             config.instance.add_section(section)
             for item in config.instance.items(old_section):
                 config.instance.set(section, item[0], item[1])
             config.instance.remove_section(old_section)
         self.executors_list.remove(name)
         self.executors_list.append(new_name)
         name = new_name
     section = Sections.EXECUTOR_DATA.format(name)
     repo_name = config.instance[section].get("repo_executor", None)
     if repo_name:
         metadata = executor_metadata(repo_name)
         process_repo_var_envs(name, metadata)
     else:
         cmd = click.prompt("Command to execute", default=config.instance.get(section, "cmd"))
         config.instance.set(section, "cmd", cmd)
         process_var_envs(name)
         process_params(name)
     print(f"{Bcolors.OKGREEN}Update repository executor finish" f"{Bcolors.ENDC}")
 async def check_cmds(self):
     if self.repo_name is None:
         return True
     metadata = executor_metadata(self.repo_name)
     if not await check_commands(metadata):
         logger.info(
             f"{Bcolors.WARNING}Invalid bash dependency for " f"{Bcolors.BOLD}{self.repo_name}{Bcolors.ENDC}"
         )
         return False
     else:
         return True
Exemplo n.º 4
0
 async def check_cmds(self):
     if self.repo_executor is None:
         return True
     repo_name = re.search(r"(^[a-zA-Z0-9_-]+)(?:\..*)*$",
                           self.repo_executor).group(1)
     metadata = executor_metadata(repo_name)
     if not await check_commands(metadata):
         logger.info(f"{Bcolors.WARNING}Invalid bash dependency for "
                     f"{Bcolors.BOLD}{self.repo_name}{Bcolors.ENDC}")
         return False
     else:
         return True
Exemplo n.º 5
0
 async def control_base_repo(chosen_option: str) -> Optional[dict]:
     metadata = executor_metadata(chosen_option)
     try:
         if not check_metadata(metadata):
             click.secho(f"Invalid manifest for: {chosen_option}",
                         fg="yellow")
         else:
             if not await check_commands(metadata):
                 print(f"{Bcolors.WARNING}Invalid bash dependency for"
                       f" {Bcolors.BOLD}{chosen_option}{Bcolors.ENDC}"
                       f"")
             else:
                 return metadata
     except FileNotFoundError:
         click.secho(f"Not existent manifest for: {chosen_option}",
                     fg="yellow")
     return None
Exemplo n.º 6
0
    def __init__(self, name: str, config):
        name = name.strip()
        self.control_config(name, config)
        self.name = name
        self.repo_executor = config.get("repo_executor")
        if self.repo_executor:
            self.repo_name = re.search(r"(^[a-zA-Z0-9_-]+)(?:\..*)*$",
                                       self.repo_executor).group(1)
            metadata = executor_metadata(self.repo_name)
            repo_path = executor_folder() / self.repo_executor
            self.cmd = metadata["cmd"].format(EXECUTOR_FILE_PATH=repo_path)
        else:
            self.cmd = config.get("cmd")

        self.max_size = int(config.get("max_size", 64 * 1024))
        self.params = dict(config[Sections.EXECUTOR_PARAMS]
                           ) if Sections.EXECUTOR_PARAMS in config else {}
        self.varenvs = dict(config[Sections.EXECUTOR_VARENVS]
                            ) if Sections.EXECUTOR_VARENVS in config else {}
    def __init__(self, name: str, config):
        name = name.strip()
        self.control_config(name, config)
        self.name = name
        executor_section = Sections.EXECUTOR_DATA.format(name)
        params_section = Sections.EXECUTOR_PARAMS.format(name)
        varenvs_section = Sections.EXECUTOR_VARENVS.format(name)
        self.repo_name = config[executor_section].get("repo_executor", None)
        if self.repo_name:
            metadata = executor_metadata(self.repo_name)
            repo_path = executor_folder() / self.repo_name
            self.cmd = metadata["cmd"].format(EXECUTOR_FILE_PATH=repo_path)
        else:
            self.cmd = config[executor_section].get("cmd")

        self.max_size = int(config[executor_section].get("max_size", 64 * 1024))
        self.params = dict(config[params_section]) if params_section in config else {}
        self.params = {key: value.lower() in ["t", "true"] for key, value in self.params.items()}
        self.varenvs = dict(config[varenvs_section]) if varenvs_section in config else {}
Exemplo n.º 8
0
 def edit_executor(self):
     name = click.prompt("Name")
     if name not in self.executors_list:
         print(
             f"{Bcolors.WARNING}There is no {name} executor{Bcolors.ENDC}")
         return
     new_name = None
     while new_name is None:
         new_name = self.check_executors_name("New name", default=name)
     if new_name != name:
         for unformatted_section in Wizard.EXECUTOR_SECTIONS:
             section = unformatted_section.format(new_name)
             old_section = unformatted_section.format(name)
             config.instance.add_section(section)
             for item in config.instance.items(old_section):
                 config.instance.set(section, item[0], item[1])
             config.instance.remove_section(old_section)
         self.executors_list.remove(name)
         self.executors_list.append(new_name)
         name = new_name
     section = Sections.EXECUTOR_DATA.format(name)
     repo_name = config.instance[section].get("repo_executor", None)
     if repo_name:
         max_buff_size = click.prompt(
             "Max data sent to server",
             type=click.IntRange(min=Wizard.MAX_BUFF_SIZE),
             default=config.instance.get(section, "max_size"),
         )
         config.instance.set(section, "max_size", f"{max_buff_size}")
         metadata = executor_metadata(repo_name)
         process_repo_var_envs(name, metadata)
     else:
         cmd = click.prompt("Command to execute",
                            default=config.instance.get(section, "cmd"))
         max_buff_size = click.prompt(
             "Max data sent to server",
             type=click.IntRange(min=Wizard.MAX_BUFF_SIZE),
             default=config.instance.get(section, "max_size"),
         )
         config.instance.set(section, "cmd", cmd)
         config.instance.set(section, "max_size", f"{max_buff_size}")
         process_var_envs(name)
         process_params(name)
def test_no_path_varenv_in_manifests():
    folder = executor_folder()
    modules = [
        f"{Path(module).stem}" for module in os.listdir(folder)
        if re.match(r".*\.py", module) is not None
    ]

    error_message = ""
    for module in modules:
        try:
            metadata = executor_metadata(module)
            if not full_check_metadata(metadata):
                error_message = f"{error_message}Not all manifest keys in " f"manifest for {module}\n"
            if "environment_variables" in metadata:
                if "PATH" in metadata["environment_variables"]:
                    error_message = f"{error_message}Overriding PATH " f"environment variable in {module}\n"

        except FileNotFoundError:
            error_message = f"{error_message}Can't found manifest file for " f"{module}\n"

    assert len(error_message) == 0, error_message