예제 #1
0
def test_hydrate_identifier():
    identifier = _hydrate_identifier("project", "domain", "12345",
                                     _identifier_pb2.Identifier())
    assert identifier.project == "project"
    assert identifier.domain == "domain"
    assert identifier.version == "12345"

    identifier = _hydrate_identifier(
        "project2", "domain2", "abc",
        _identifier_pb2.Identifier(project="project",
                                   domain="domain",
                                   version="12345"))
    assert identifier.project == "project"
    assert identifier.domain == "domain"
    assert identifier.version == "12345"

    identifier = _hydrate_identifier(
        "project",
        "domain",
        "12345",
        _identifier_pb2.Identifier(
            project="{{ registration.project }}",
            domain="{{ registration.domain }}",
            version="{{ registration.version }}",
        ),
    )
    assert identifier.project == "project"
    assert identifier.domain == "domain"
    assert identifier.version == "12345"
예제 #2
0
def test_hydrate_registration_parameters__workflow_nothing_set():
    workflow = _workflow_pb2.WorkflowSpec(
        template=_core_workflow_pb2.WorkflowTemplate(
            id=_identifier_pb2.Identifier(
                resource_type=_identifier_pb2.WORKFLOW,
                name="name",
            ),
            nodes=[
                _core_workflow_pb2.Node(
                    id="foo",
                    task_node=_core_workflow_pb2.TaskNode(
                        reference_id=_identifier_pb2.Identifier(
                            resource_type=_identifier_pb2.TASK, name="task1")),
                )
            ],
        ))
    identifier, entity = hydrate_registration_parameters(
        _identifier_pb2.WORKFLOW, "project", "domain", "12345", workflow)
    assert (identifier == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.WORKFLOW,
        project="project",
        domain="domain",
        name="name",
        version="12345",
    ) == entity.template.id)
    assert len(workflow.template.nodes) == 1
    assert workflow.template.nodes[
        0].task_node.reference_id == _identifier_pb2.Identifier(
            resource_type=_identifier_pb2.TASK,
            project="project",
            domain="domain",
            name="task1",
            version="12345",
        )
예제 #3
0
def test_hydrate_registration_parameters__launch_plan_nothing_set():
    launch_plan = _launch_plan_pb2.LaunchPlan(
        id=_identifier_pb2.Identifier(
            resource_type=_identifier_pb2.LAUNCH_PLAN,
            name="lp_name",
        ),
        spec=_launch_plan_pb2.LaunchPlanSpec(
            workflow_id=_identifier_pb2.Identifier(
                resource_type=_identifier_pb2.WORKFLOW,
                name="workflow_name",
            )),
    )
    identifier, entity = hydrate_registration_parameters(
        _identifier_pb2.LAUNCH_PLAN,
        "project",
        "domain",
        "12345",
        launch_plan,
    )
    assert identifier == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.LAUNCH_PLAN,
        project="project",
        domain="domain",
        name="lp_name",
        version="12345",
    )
    assert entity.spec.workflow_id == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.WORKFLOW,
        project="project",
        domain="domain",
        name="workflow_name",
        version="12345",
    )
예제 #4
0
def test_hydrate_registration_parameters__launch_plan_already_set():
    launch_plan = _launch_plan_pb2.LaunchPlanSpec(
        workflow_id=_identifier_pb2.Identifier(
            resource_type=_identifier_pb2.WORKFLOW,
            project="project2",
            domain="domain2",
            name="workflow_name",
            version="abc",
        )
    )
    identifier, entity = hydrate_registration_parameters(
        _identifier_pb2.Identifier(
            resource_type=_identifier_pb2.LAUNCH_PLAN,
            project="project2",
            domain="domain2",
            name="workflow_name",
            version="abc",
        ),
        "project",
        "domain",
        "12345",
        launch_plan,
    )
    assert identifier == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.LAUNCH_PLAN,
        project="project2",
        domain="domain2",
        name="workflow_name",
        version="abc",
    )
    assert entity.workflow_id == launch_plan.workflow_id
예제 #5
0
def test_hydrate_registration_parameters__task_nothing_set():
    task = _task_pb2.TaskSpec(
        template=_core_task_pb2.TaskTemplate(
            id=_identifier_pb2.Identifier(resource_type=_identifier_pb2.TASK, name="name",),
        )
    )
    identifier, entity = hydrate_registration_parameters(task.template.id, "project", "domain", "12345", task)
    assert (
        identifier
        == _identifier_pb2.Identifier(
            resource_type=_identifier_pb2.TASK, project="project", domain="domain", name="name", version="12345",
        )
        == entity.template.id
    )
예제 #6
0
 def to_flyte_idl(self):
     """
     :rtype: flyteidl.core.identifier_pb2.NamedEntityIdentifier
     """
     return _identifier_pb2.Identifier(resource_type=self.resource_type,
                                       project=self.project,
                                       domain=self.domain,
                                       name=self.name,
                                       version=self.version)
예제 #7
0
def test_hydrate_registration_parameters__workflow_already_set():
    workflow = _workflow_pb2.WorkflowSpec(
        template=_core_workflow_pb2.WorkflowTemplate(
            id=_identifier_pb2.Identifier(
                resource_type=_identifier_pb2.WORKFLOW,
                project="project2",
                domain="domain2",
                name="name",
                version="abc",
            ), ))
    identifier, entity = hydrate_registration_parameters(
        _identifier_pb2.WORKFLOW, "project", "domain", "12345", workflow)
    assert (identifier == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.WORKFLOW,
        project="project2",
        domain="domain2",
        name="name",
        version="abc",
    ) == entity.template.id)
예제 #8
0
def test_hydrate_workflow_template__branch_node():

    workflow_template = _core_workflow_pb2.WorkflowTemplate()
    branch_node = _core_workflow_pb2.Node(
        id="branch_node",
        branch_node=_core_workflow_pb2.BranchNode(
            if_else=_core_workflow_pb2.IfElseBlock(
                case=_core_workflow_pb2.IfBlock(
                    then_node=_core_workflow_pb2.Node(
                        task_node=_core_workflow_pb2.TaskNode(
                            reference_id=_identifier_pb2.Identifier(
                                resource_type=_identifier_pb2.TASK,
                                name="if_case"), ), )),
                else_node=_core_workflow_pb2.Node(
                    task_node=_core_workflow_pb2.TaskNode(
                        reference_id=_identifier_pb2.Identifier(
                            resource_type=_identifier_pb2.TASK,
                            name="else_node"), ), ),
            ), ),
    )
예제 #9
0
def test_hydrate_registration_parameters__subworkflows():
    workflow_template = _core_workflow_pb2.WorkflowTemplate()
    workflow_template.id.CopyFrom(
        _identifier_pb2.Identifier(resource_type=_identifier_pb2.WORKFLOW,
                                   name="workflow"))

    sub_workflow_template = _core_workflow_pb2.WorkflowTemplate()
    sub_workflow_template.id.CopyFrom(
        _identifier_pb2.Identifier(resource_type=_identifier_pb2.WORKFLOW,
                                   name="subworkflow"))
    sub_workflow_template.nodes.append(
        _core_workflow_pb2.Node(
            id="task_node",
            task_node=_core_workflow_pb2.TaskNode(
                reference_id=_identifier_pb2.Identifier(
                    resource_type=_identifier_pb2.TASK)),
        ))
    workflow_spec = _workflow_pb2.WorkflowSpec(template=workflow_template)
    workflow_spec.sub_workflows.append(sub_workflow_template)

    identifier, entity = hydrate_registration_parameters(
        _identifier_pb2.WORKFLOW, "project", "domain", "12345", workflow_spec)
    assert (identifier == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.WORKFLOW,
        project="project",
        domain="domain",
        name="workflow",
        version="12345",
    ) == entity.template.id)

    assert entity.sub_workflows[0].id == _identifier_pb2.Identifier(
        resource_type=_identifier_pb2.WORKFLOW,
        project="project",
        domain="domain",
        name="subworkflow",
        version="12345",
    )
예제 #10
0
def test_hydrate_workflow_template():
    workflow_template = _core_workflow_pb2.WorkflowTemplate()
    workflow_template.nodes.append(
        _core_workflow_pb2.Node(
            id="task_node",
            task_node=_core_workflow_pb2.TaskNode(
                reference_id=_identifier_pb2.Identifier(
                    resource_type=_identifier_pb2.TASK)),
        ))
    workflow_template.nodes.append(
        _core_workflow_pb2.Node(
            id="launchplan_ref",
            workflow_node=_core_workflow_pb2.WorkflowNode(
                launchplan_ref=_identifier_pb2.Identifier(
                    resource_type=_identifier_pb2.LAUNCH_PLAN,
                    project="project2",
                )),
        ))
    workflow_template.nodes.append(
        _core_workflow_pb2.Node(
            id="sub_workflow_ref",
            workflow_node=_core_workflow_pb2.WorkflowNode(
                sub_workflow_ref=_identifier_pb2.Identifier(
                    resource_type=_identifier_pb2.WORKFLOW,
                    project="project2",
                    domain="domain2",
                )),
        ))
    workflow_template.nodes.append(
        _core_workflow_pb2.Node(
            id="unchanged",
            task_node=_core_workflow_pb2.TaskNode(
                reference_id=_identifier_pb2.Identifier(
                    resource_type=_identifier_pb2.TASK,
                    project="project2",
                    domain="domain2",
                    version="abc")),
        ))
    hydrated_workflow_template = _hydrate_workflow_template_nodes(
        "project", "domain", "12345", workflow_template)
    assert len(hydrated_workflow_template.nodes) == 4
    task_node_identifier = hydrated_workflow_template.nodes[
        0].task_node.reference_id
    assert task_node_identifier.project == "project"
    assert task_node_identifier.domain == "domain"
    assert task_node_identifier.version == "12345"

    launchplan_ref_identifier = hydrated_workflow_template.nodes[
        1].workflow_node.launchplan_ref
    assert launchplan_ref_identifier.project == "project2"
    assert launchplan_ref_identifier.domain == "domain"
    assert launchplan_ref_identifier.version == "12345"

    sub_workflow_ref_identifier = hydrated_workflow_template.nodes[
        2].workflow_node.sub_workflow_ref
    assert sub_workflow_ref_identifier.project == "project2"
    assert sub_workflow_ref_identifier.domain == "domain2"
    assert sub_workflow_ref_identifier.version == "12345"

    unchanged_identifier = hydrated_workflow_template.nodes[
        3].task_node.reference_id
    assert unchanged_identifier.project == "project2"
    assert unchanged_identifier.domain == "domain2"
    assert unchanged_identifier.version == "abc"
예제 #11
0
                     task_node=_core_workflow_pb2.TaskNode(
                         reference_id=_identifier_pb2.Identifier(
                             resource_type=_identifier_pb2.TASK,
                             name="if_case"), ), )),
             else_node=_core_workflow_pb2.Node(
                 task_node=_core_workflow_pb2.TaskNode(
                     reference_id=_identifier_pb2.Identifier(
                         resource_type=_identifier_pb2.TASK,
                         name="else_node"), ), ),
         ), ),
 )
 branch_node.branch_node.if_else.other.extend([
     _core_workflow_pb2.IfBlock(then_node=_core_workflow_pb2.Node(
         task_node=_core_workflow_pb2.TaskNode(
             reference_id=_identifier_pb2.Identifier(
                 resource_type=_identifier_pb2.TASK,
                 name="other_1"), ), ), ),
     _core_workflow_pb2.IfBlock(then_node=_core_workflow_pb2.Node(
         task_node=_core_workflow_pb2.TaskNode(
             reference_id=_identifier_pb2.Identifier(
                 resource_type=_identifier_pb2.TASK,
                 name="other_2"), ), ), ),
 ])
 workflow_template.nodes.append(branch_node)
 hydrated_workflow_template = _hydrate_workflow_template_nodes(
     "project", "domain", "12345", workflow_template)
 if_case_id = hydrated_workflow_template.nodes[
     0].branch_node.if_else.case.then_node.task_node.reference_id
 assert if_case_id.project == "project"
 assert if_case_id.domain == "domain"
 assert if_case_id.name == "if_case"