Example #1
0
 def helper_resolve_docker_snippet(labbook):
     """Helper to get custom docker snippet"""
     cm = ComponentManager(labbook)
     docker_components = cm.get_component_list('docker')
     if len(docker_components) == 1:
         return '\n'.join(docker_components[0]['content'])
     elif len(docker_components) > 1:
         raise ValueError(
             'There should only be one custdom docker component')
     else:
         return ""
Example #2
0
    def _extra_base_images(self) -> List[str]:
        """Add other needed images via multi-stage build"""
        docker_lines = []
        cm = ComponentManager(self.labbook)
        if 'rstudio' in cm.base_fields['development_tools']:
                docker_lines.append("FROM gigantum/mitmproxy_proxy:" + CURRENT_MITMPROXY_TAG)

        return docker_lines
    def helper_resolve_package_dependencies(labbook, kwargs):
        """Helper to resolve the packages"""
        cm = ComponentManager(labbook)
        edges = cm.get_component_list("package_manager")

        if edges:
            cursors = [
                base64.b64encode(
                    "{}".format(cnt).encode("UTF-8")).decode("UTF-8")
                for cnt, x in enumerate(edges)
            ]

            # Process slicing and cursor args
            lbc = ListBasedConnection(edges, cursors, kwargs)
            lbc.apply()

            # Create version dataloader
            keys = [f"{k['manager']}&{k['package']}" for k in lbc.edges]
            vd = PackageLatestVersionLoader(keys, labbook,
                                            get_logged_in_username())

            # Get DevEnv instances
            edge_objs = []
            for edge, cursor in zip(lbc.edges, lbc.cursors):
                edge_objs.append(
                    PackageComponentConnection.Edge(node=PackageComponent(
                        _version_dataloader=vd,
                        manager=edge['manager'],
                        package=edge['package'],
                        version=edge['version'],
                        from_base=edge['from_base'],
                        is_valid=True,
                        schema=edge['schema']),
                                                    cursor=cursor))

            return PackageComponentConnection(edges=edge_objs,
                                              page_info=lbc.page_info)

        else:
            return PackageComponentConnection(
                edges=[],
                page_info=graphene.relay.PageInfo(has_next_page=False,
                                                  has_previous_page=False))
Example #4
0
    def helper_resolve_base_latest_revision(self, labbook) -> int:
        """Helper to resolve the base component's latest revision"""
        cm = ComponentManager(labbook)
        if not self._base_component_data:
            self._base_component_data = cm.base_fields

        available_bases = cm.bases.get_base_versions(
            self._base_component_data['repository'],
            self._base_component_data['id'])
        # The first item in the available bases list is the latest base. This is a list of tuples (revision, base data)
        latest_revision, _ = available_bases[0]
        return int(latest_revision)
Example #5
0
    def helper_resolve_base(self, labbook):
        """Helper to resolve the base component object"""
        # Get base image data from the LabBook
        if not self._base_component_data:
            cm = ComponentManager(labbook)
            self._base_component_data = cm.base_fields

        return BaseComponent(
            id=
            f"{self._base_component_data['repository']}&{self._base_component_data['id']}&"
            f"{self._base_component_data['revision']}",
            repository=self._base_component_data['repository'],
            component_id=self._base_component_data['id'],
            revision=int(self._base_component_data['revision']),
            _component_data=self._base_component_data)
    def helper_resolve_base(labbook):
        """Helper to resolve the base component object"""
        # Get base image data from the LabBook
        cm = ComponentManager(labbook)
        component_data = cm.base_fields

        if component_data:
            if '###repository###' in component_data:
                # Legacy base
                repo = component_data['###repository###']
            else:
                repo = component_data['repository']

            return BaseComponent(
                id=
                f"{repo}&{component_data['id']}&{component_data['revision']}",
                repository=repo,
                component_id=component_data['id'],
                revision=int(component_data['revision']),
                _component_data=component_data)
        else:
            return None