Esempio n. 1
0
def generate_pod_spec_for_task():
    pod_spec = generated_pb2.PodSpec()
    secondary_container = generated_pb2.Container(
        name="secondary",
        image="alpine",
    )
    secondary_container.command.extend(["/bin/sh"])
    secondary_container.args.extend(
        ["-c", "echo hi sidecar world > /data/message.txt"])
    shared_volume_mount = generated_pb2.VolumeMount(
        name="shared-data",
        mountPath="/data",
    )
    secondary_container.volumeMounts.extend([shared_volume_mount])

    primary_container = generated_pb2.Container(name="primary")
    primary_container.volumeMounts.extend([shared_volume_mount])

    pod_spec.volumes.extend([
        generated_pb2.Volume(name="shared-data",
                             volumeSource=generated_pb2.VolumeSource(
                                 emptyDir=generated_pb2.EmptyDirVolumeSource(
                                     medium="Memory", )))
    ])
    pod_spec.containers.extend([primary_container, secondary_container])
    return pod_spec
Esempio n. 2
0
def get_pod_spec():
    a_container = generated_pb2.Container(name="a container",)
    a_container.command.extend(["fee", "fi", "fo", "fum"])
    a_container.volumeMounts.extend([generated_pb2.VolumeMount(name="volume mount", mountPath="some/where",)])

    pod_spec = generated_pb2.PodSpec(restartPolicy="OnFailure",)
    pod_spec.containers.extend([a_container, generated_pb2.Container(name="another container")])
    return pod_spec
Esempio n. 3
0
def test_sidecar_task_label_annotation_not_provided():
    pod_spec = generated_pb2.PodSpec()
    obj = task.SidecarJob(pod_spec=pod_spec, primary_container_name="primary")

    assert obj.primary_container_name == "primary"

    obj2 = task.SidecarJob.from_flyte_idl(obj.to_flyte_idl())
    assert obj2 == obj
Esempio n. 4
0
def test_sidecar_task():
    pod_spec = generated_pb2.PodSpec()
    container = generated_pb2.Container(name="containery")
    pod_spec.containers.extend([container])
    obj = task.SidecarJob(pod_spec=pod_spec, primary_container_name="primary")
    assert obj.primary_container_name == "primary"
    assert len(obj.pod_spec.containers) == 1
    assert obj.pod_spec.containers[0].name == "containery"

    obj2 = task.SidecarJob.from_flyte_idl(obj.to_flyte_idl())
    assert obj2 == obj
def get_pod_spec():
    a_container = generated_pb2.Container(name="main")
    a_container.command.extend(["foo", "bar"])
    a_container.volumeMounts.extend(
        [generated_pb2.VolumeMount(
            name="scratch",
            mountPath="/scratch",
        )])

    pod_spec = generated_pb2.PodSpec(restartPolicy="Never", )
    pod_spec.containers.extend(
        [a_container, generated_pb2.Container(name="sidecar")])
    return pod_spec
Esempio n. 6
0
def test_sidecar_task():
    pod_spec = generated_pb2.PodSpec()
    container = generated_pb2.Container(name="containery")
    pod_spec.containers.extend([container])
    obj = task.SidecarJob(
        pod_spec=pod_spec,
        primary_container_name="primary",
        annotations={"a1": "a1"},
        labels={"b1": "b1"},
    )
    assert obj.primary_container_name == "primary"
    assert len(obj.pod_spec.containers) == 1
    assert obj.pod_spec.containers[0].name == "containery"
    assert obj.annotations["a1"] == "a1"
    assert obj.labels["b1"] == "b1"

    obj2 = task.SidecarJob.from_flyte_idl(obj.to_flyte_idl())
    assert obj2 == obj
Esempio n. 7
0
def generate_pod_spec_for_task():
    pod_spec = generated_pb2.PodSpec()

    # Primary containers do not require us to specify an image, the default image built for flyte tasks will get used.
    primary_container = generated_pb2.Container(name="primary")

    # Note: for non-primary containers we must specify an image.
    secondary_container = generated_pb2.Container(
        name="secondary",
        image="alpine",
    )
    secondary_container.command.extend(["/bin/sh"])
    secondary_container.args.extend(
        ["-c", "echo hi pod world > {}".format(_SHARED_DATA_PATH)])

    resources = generated_pb2.ResourceRequirements()
    resources.limits["cpu"].CopyFrom(Quantity(string="1"))
    resources.requests["cpu"].CopyFrom(Quantity(string="1"))
    resources.limits["memory"].CopyFrom(Quantity(string="100Mi"))
    resources.requests["memory"].CopyFrom(Quantity(string="100Mi"))
    primary_container.resources.CopyFrom(resources)
    secondary_container.resources.CopyFrom(resources)

    shared_volume_mount = generated_pb2.VolumeMount(
        name="shared-data",
        mountPath="/data",
    )
    secondary_container.volumeMounts.extend([shared_volume_mount])
    primary_container.volumeMounts.extend([shared_volume_mount])

    pod_spec.volumes.extend([
        generated_pb2.Volume(
            name="shared-data",
            volumeSource=generated_pb2.VolumeSource(
                emptyDir=generated_pb2.EmptyDirVolumeSource(medium="Memory",
                                                            )),
        )
    ])
    pod_spec.containers.extend([primary_container, secondary_container])
    return pod_spec
Esempio n. 8
0
def generate_pod_spec_for_task():
    pod_spec = generated_pb2.PodSpec()

    primary_container = generated_pb2.Container(name="primary")

    secondary_container = generated_pb2.Container(
        name="secondary",
        image="alpine",
    )
    secondary_container.command.extend(["/bin/sh"])
    secondary_container.args.extend(
        ["-c", "echo hi sidecar world > {}".format(_SHARED_DATA_PATH)])

    resources = generated_pb2.ResourceRequirements()
    resources.limits["cpu"].CopyFrom(Quantity(string="1"))
    resources.requests["cpu"].CopyFrom(Quantity(string="1"))
    resources.limits["memory"].CopyFrom(Quantity(string="100Mi"))
    resources.requests["memory"].CopyFrom(Quantity(string="100Mi"))
    primary_container.resources.CopyFrom(resources)
    secondary_container.resources.CopyFrom(resources)

    shared_volume_mount = generated_pb2.VolumeMount(
        name="shared-data",
        mountPath="/data",
    )
    secondary_container.volumeMounts.extend([shared_volume_mount])
    primary_container.volumeMounts.extend([shared_volume_mount])

    pod_spec.volumes.extend([
        generated_pb2.Volume(name="shared-data",
                             volumeSource=generated_pb2.VolumeSource(
                                 emptyDir=generated_pb2.EmptyDirVolumeSource(
                                     medium="Memory", )))
    ])
    pod_spec.containers.extend([primary_container, secondary_container])
    return pod_spec
Esempio n. 9
0
def generate_simple_pod_spec_for_task():
    pod_spec = generated_pb2.PodSpec()
    primary_container = generated_pb2.Container(name="primary")
    pod_spec.containers.extend([primary_container])
    return pod_spec