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 ""
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))
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)
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