Source code for kfp.dsl.component_task_config

"""Definition for TaskConfig."""

import dataclasses
from enum import IntEnum

from kfp.pipeline_spec import pipeline_spec_pb2


[docs]class TaskConfigField(IntEnum): # Indicates that the resource limits and requests should be passed through to the external workload. # Be cautious about also setting apply_to_task=True since that will double the resources required # for the task. RESOURCES = ( pipeline_spec_pb2.TaskConfigPassthroughType .TaskConfigPassthroughTypeEnum.RESOURCES) # Indicates that the environment variables should be passed through to the external workload. # It is generally safe to always set apply_to_task=True on this field. ENV = ( pipeline_spec_pb2.TaskConfigPassthroughType .TaskConfigPassthroughTypeEnum.ENV) # Indicates that the Kubernetes node affinity should be passed through to the external workload. KUBERNETES_AFFINITY = ( pipeline_spec_pb2.TaskConfigPassthroughType .TaskConfigPassthroughTypeEnum.KUBERNETES_AFFINITY) # Indicates that the Kubernetes node tolerations should be passed through to the external workload. KUBERNETES_TOLERATIONS = ( pipeline_spec_pb2.TaskConfigPassthroughType .TaskConfigPassthroughTypeEnum.KUBERNETES_TOLERATIONS) # Indicates that the Kubernetes node selector should be passed through to the external workload. KUBERNETES_NODE_SELECTOR = ( pipeline_spec_pb2.TaskConfigPassthroughType .TaskConfigPassthroughTypeEnum.KUBERNETES_NODE_SELECTOR) # Indicates that the Kubernetes persistent volumes and ConfigMaps/Secrets mounted as volumes should be passed # through to the external workload. Be sure that when setting apply_to_task=True, the volumes are ReadWriteMany or ReadOnlyMany or else # the task's pod may not start. # This is useful when the task prepares a shared volume for the external workload or defines output artifact # (e.g. dsl.Model) that is created by the external workload. KUBERNETES_VOLUMES = ( pipeline_spec_pb2.TaskConfigPassthroughType .TaskConfigPassthroughTypeEnum.KUBERNETES_VOLUMES)
[docs]@dataclasses.dataclass class TaskConfigPassthrough: field: TaskConfigField apply_to_task: bool = False
[docs] def to_proto(self) -> pipeline_spec_pb2.TaskConfigPassthrough: """Converts this object to its proto representation.""" proto = pipeline_spec_pb2.TaskConfigPassthrough() proto.field = int(self.field) proto.apply_to_task = self.apply_to_task return proto