123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #
- # Copyright 2018-2022 Elyra Authors
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- from enum import Enum
- from enum import unique
- from typing import Any
- from typing import Dict
- from typing import List
- @unique
- class RuntimeProcessorType(Enum):
- """RuntimeProcessorType enumerates the set of platforms targeted by runtime processors.
- Each runtime processor implementation (subclass of PipelineProcessor) will reflect one
- of these values. Users implementing their own runtime processor that corresponds to a
- type not listed in this enumeration are responsible for appropriately extending this
- enumeration and reflecting that entry in the corresponding runtime schema in order to
- fully integrate their processor with Elyra.
- """
- LOCAL = "Local"
- KUBEFLOW_PIPELINES = "Kubeflow Pipelines"
- APACHE_AIRFLOW = "Apache Airflow"
- ARGO = "Argo"
- ######################################
- # Add new entry here for each new type
- ######################################
- @staticmethod
- def get_instance_by_name(name: str) -> "RuntimeProcessorType":
- """Returns an instance of RuntimeProcessorType corresponding to the given name.
- Raises KeyError if parameter is not a name in the enumeration.
- """
- return RuntimeProcessorType.__members__[name.upper()]
- @staticmethod
- def get_instance_by_value(value: str) -> "RuntimeProcessorType":
- """Returns an instance of RuntimeProcessorType corresponding to the given value.
- Raises KeyError if parameter is not a value in the enumeration.
- """
- for instance in RuntimeProcessorType.__members__.values():
- if instance.value == value:
- return instance
- raise KeyError(f"'{value}'")
- class RuntimeTypeResources(object):
- """Base class for a runtime processor's information"""
- type: RuntimeProcessorType
- icon_endpoint: str
- export_file_types: List[Dict[str, str]]
- @classmethod
- def get_instance_by_type(cls, runtime_type: RuntimeProcessorType) -> "RuntimeTypeResources":
- if runtime_type == RuntimeProcessorType.KUBEFLOW_PIPELINES:
- return KubeflowPipelinesResources()
- if runtime_type == RuntimeProcessorType.APACHE_AIRFLOW:
- return ApacheAirflowResources()
- if runtime_type == RuntimeProcessorType.ARGO:
- return ArgoResources()
- if runtime_type == RuntimeProcessorType.LOCAL:
- return LocalResources()
- raise ValueError(f"Runtime type {runtime_type} is not recognized.")
- @property
- def id(self) -> str:
- return self.type.name
- @property
- def display_name(self) -> str:
- return self.type.value
- def to_dict(self) -> Dict[str, Any]:
- d = dict(
- id=self.id,
- display_name=self.display_name,
- icon=self.icon_endpoint,
- export_file_types=self.export_file_types,
- )
- return d
- def get_export_extensions(self) -> List[str]:
- """
- Return a list of supported export file extensions (as represented by the 'id'
- key of each dictionary in the export_file_types list).
- """
- return [file_type.get("id") for file_type in self.export_file_types]
- class ArgoResources(RuntimeTypeResources):
- """Holds static information relative to Argo processors"""
- type = RuntimeProcessorType.ARGO
- icon_endpoint = "static/elyra/argo.svg"
- export_file_types = [{"id": "py", "display_name": "Argo domain-specific language Python code"}]
- class ApacheAirflowResources(RuntimeTypeResources):
- """Holds static information relative to Apache Airflow processors"""
- type = RuntimeProcessorType.APACHE_AIRFLOW
- icon_endpoint = "static/elyra/airflow.svg"
- export_file_types = [{"id": "py", "display_name": "Airflow domain-specific language Python code"}]
- class KubeflowPipelinesResources(RuntimeTypeResources):
- """Holds static information relative to Kubeflow Pipelines processors"""
- type = RuntimeProcessorType.KUBEFLOW_PIPELINES
- icon_endpoint = "static/elyra/kubeflow.svg"
- export_file_types = [{"id": "yaml", "display_name": "KFP static configuration file (YAML formatted)"}]
- class LocalResources(RuntimeTypeResources):
- """Holds static information relative to local processors"""
- type = RuntimeProcessorType.LOCAL
- icon_endpoint = "static/elyra/pipeline-flow.svg"
- export_file_types = []
- ###########################################################
- # Add new platform info definitions here for each new type
- ###########################################################
|