def get_component(self, component_id: str) -> Optional[Component]: """ Retrieve runtime-specific component details if component_id is not one of the generic set """ if component_id not in ("notebook", "python-script", "r-script"): return ComponentCache.instance().get_component(platform=self._type, component_id=component_id) return ComponentCache.get_generic_component(component_id)
async def get(self, runtime_type, component_id): self.log.debug( f"Retrieving pipeline component properties for component: {component_id}" ) if not component_id: raise web.HTTPError(400, "Missing component ID") processor_manager = PipelineProcessorManager.instance() if processor_manager.is_supported_runtime(runtime_type): # The endpoint path contains the shorthand version of a runtime (e.g., 'kfp', # 'airflow'). This case and its associated functions should eventually be removed # in favor of using the RuntimeProcessorType name in the request path. self.log.warning( f"Deprecation warning: when calling endpoint '{self.request.path}' " f"use runtime type name (e.g. 'KUBEFLOW_PIPELINES', 'APACHE_AIRFLOW') " f"instead of shorthand name (e.g., 'kfp', 'airflow')") runtime_processor_type = processor_manager.get_runtime_type( runtime_type) elif processor_manager.is_supported_runtime_type(runtime_type): # The request path uses the appropriate RuntimeProcessorType name. Use this # to get the RuntimeProcessorType instance to pass to get_component runtime_processor_type = RuntimeProcessorType.get_instance_by_name( runtime_type) else: raise web.HTTPError(400, f"Invalid runtime type '{runtime_type}'") # Try to get component_id as a generic component; assigns None if id is not a generic component component: Optional[Component] = ComponentCache.get_generic_component( component_id) # Try to retrieve a runtime-type-specific component; assigns None if not found if not component: component = ComponentCache.instance().get_component( platform=runtime_processor_type, component_id=component_id) if not component: raise web.HTTPError(404, f"Component '{component_id}' not found") if self.request.path.endswith("/properties"): # Return complete set of component properties json_response = ComponentCache.to_canvas_properties(component) else: # Return component definition content json_response = json.dumps({ "content": component.definition, "mimeType": self.get_mimetype(component.file_extension) }) self.set_status(200) self.set_header("Content-Type", "application/json") await self.finish(json_response)
async def get(self, runtime_type, component_id): self.log.debug( f"Retrieving pipeline component properties for component: {component_id}" ) if not component_id: raise web.HTTPError(400, "Missing component ID") runtime_processor_type = get_runtime_processor_type( runtime_type, self.log, self.request.path) if not runtime_processor_type: raise web.HTTPError(400, f"Invalid runtime type '{runtime_type}'") # Try to get component_id as a generic component; assigns None if id is not a generic component component: Optional[Component] = ComponentCache.get_generic_component( component_id) # Try to retrieve a runtime-type-specific component; assigns None if not found if not component: component = ComponentCache.instance().get_component( platform=runtime_processor_type, component_id=component_id) if not component: raise web.HTTPError(404, f"Component '{component_id}' not found") if self.request.path.endswith("/properties"): # Return complete set of component properties json_response = ComponentCache.to_canvas_properties(component) else: # Return component definition content json_response = json.dumps({ "content": component.definition, "mimeType": self.get_mimetype(component.file_extension) }) self.set_status(200) self.set_header("Content-Type", "application/json") await self.finish(json_response)