Exemplo n.º 1
0
    def get_dependency_projects(self, track: str) -> List["Project"]:
        """
        Retrieves the dependecy projects defined by `depends_on_projects` env var

        Returns: A list of `ProjectModel`s
        """
        dependency_projects: List[Project] = []

        dependency_string = settings.DEPENDS_ON_PROJECTS
        if not dependency_string:
            return dependency_projects

        dependency_images = dependency_string.strip().split(" ")
        for image in dependency_images:
            # Ex. docker.example.com/project:23 -> docker.example.com/project -> project
            name = image.rsplit(":", 1)[0].split("/")[-1]
            # TODO: Add a unified way of settings the URL for both
            #       dependency and main project during the __init__ call.
            #       This could be achieved by passing the parent for instance
            #       and then calling a function that sets the URL during init.
            url = Project.get_dependency_project_url(name, self)

            project_env_vars = get_environment_vars_by_prefix(
                prefix=f"{env_var_safe_key(name)}_")

            project_kwargs: Dict[str, Any] = {"additional_urls": []}
            for env_var in project_env_vars:
                project_arg = PROJECT_ARG_SETTINGS_MAPPING.get(env_var, None)
                if project_arg:
                    project_kwargs[project_arg] = project_env_vars[env_var]

            dependency_project = Project(
                name=name,
                image=image,
                is_dependent_project=True,
                track=track,
                url=url,
                **project_kwargs,
            )
            dependency_projects.append(dependency_project)

        return dependency_projects
Exemplo n.º 2
0
    def create_file_secrets_from_environment(
        self,
        namespace: str,
        track: str,
        project: Project,
        secret_name: str,
    ) -> Dict[str, str]:
        filesecrets = get_environment_vars_by_prefix(
            prefix=settings.K8S_FILE_SECRET_PREFIX)

        secrets, filename_mapping = self._parse_file_secrets(filesecrets)
        self.create_secret(
            data=secrets,
            encode=False,
            namespace=namespace,
            secret_name=secret_name,
            track=track,
            project=project,
        )

        return filename_mapping
Exemplo n.º 3
0
 def _get_service_variables(self) -> Dict[str, str]:
     return get_environment_vars_by_prefix(
         f"K8S_SERVICE_{self.name.upper()}_")