Exemplo n.º 1
0
    def test_delete(self):
        """Test delete method."""
        param = PipelineParam("param")
        k8s_resource = {
            "apiVersion": "version",
            "kind": "CustomResource",
            "metadata": {
                "name": "my-resource"
            }
        }
        res = ResourceOp(name="resource",
                         k8s_resource=k8s_resource,
                         success_condition=param,
                         attribute_outputs={"test": "attr"})

        delete_res = res.delete()

        expected_name = str(res.outputs['name'])

        self.assertEqual(delete_res.command, [
            'kubectl', 'delete', 'CustomResource', expected_name,
            '--ignore-not-found', '--output', 'name', '--wait=false'
        ])
        self.assertEqual(delete_res.outputs, {})
Exemplo n.º 2
0
    def test_graphcomponent_basic(self):
        """Test graph_component decorator metadata."""

        @graph_component
        def flip_component(flip_result):
            with dsl.Condition(flip_result == 'heads'):
                flip_component(flip_result)

        with Pipeline('pipeline') as p:
            param = PipelineParam(name='param')
            flip_component(param)
            self.assertEqual(1, len(p.groups))
            self.assertEqual(1, len(p.groups[0].groups))  # pipeline
            self.assertEqual(1, len(
                p.groups[0].groups[0].groups))  # flip_component
            self.assertEqual(1, len(
                p.groups[0].groups[0].groups[0].groups))  # condition
            self.assertEqual(0,
                             len(p.groups[0].groups[0].groups[0].groups[0]
                                 .groups))  # recursive flip_component
            recursive_group = p.groups[0].groups[0].groups[0].groups[0]
            self.assertTrue(recursive_group.recursive_ref is not None)
            self.assertEqual(1, len(recursive_group.inputs))
            self.assertEqual('param', recursive_group.inputs[0].name)
 def assert_res(self, res, expected_spec):
     self.assertEqual(res.name, "importworkspaceitem")
     self.assertEqual(res.resource.action, "create")
     self.assertEqual(res.resource.success_condition, "status.object_hash")
     self.assertEqual(res.resource.failure_condition, None)
     self.assertEqual(res.resource.manifest, None)
     expected_attribute_outputs = {
         "name": "{.metadata.name}",
         "object_hash": "{.status.object_hash}",
         "object_language": "{.status.object_info.language}",
         "object_type": "{.status.object_info.object_type}",
         "object_path": "{.status.object_info.path}",
         "manifest": "{}"
     }
     self.assertEqual(res.attribute_outputs, expected_attribute_outputs)
     expected_outputs = {
         "name":
         PipelineParam(name="name", op_name=res.name),
         "object_hash":
         PipelineParam(name="object_hash", op_name=res.name),
         "object_language":
         PipelineParam(name="object_language", op_name=res.name),
         "object_type":
         PipelineParam(name="object_type", op_name=res.name),
         "object_path":
         PipelineParam(name="object_path", op_name=res.name),
         "manifest":
         PipelineParam(name="manifest", op_name=res.name)
     }
     self.assertEqual(res.outputs, expected_outputs)
     self.assertEqual(res.output,
                      PipelineParam(name="name", op_name=res.name))
     self.assertEqual(res.dependent_names, [])
     self.assertEqual(res.k8s_resource["kind"], "WorkspaceItem")
     self.assertEqual(res.k8s_resource["metadata"]["name"], "test-item")
     self.assertEqual(res.k8s_resource["spec"], expected_spec)
 def assert_res(self, res, expected_spec):
     self.assertEqual(res.name, "createsecretscope")
     self.assertEqual(res.resource.action, "create")
     self.assertEqual(res.resource.success_condition,
                      "status.secretscope.name")
     self.assertEqual(res.resource.failure_condition, None)
     self.assertEqual(res.resource.manifest, None)
     expected_attribute_outputs = {
         "name": "{.metadata.name}",
         "secretscope_name": "{.status.secretscope.name}",
         "secretscope_backend_type": "{.status.secretscope.backend_type}",
         "secret_in_cluster_available":
         "{.status.secretinclusteravailable}",
         "manifest": "{}"
     }
     self.assertEqual(res.attribute_outputs, expected_attribute_outputs)
     expected_outputs = {
         "name":
         PipelineParam(name="name", op_name=res.name),
         "secretscope_name":
         PipelineParam(name="secretscope_name", op_name=res.name),
         "secretscope_backend_type":
         PipelineParam(name="secretscope_backend_type", op_name=res.name),
         "secret_in_cluster_available":
         PipelineParam(name="secret_in_cluster_available",
                       op_name=res.name),
         "manifest":
         PipelineParam(name="manifest", op_name=res.name)
     }
     self.assertEqual(res.outputs, expected_outputs)
     self.assertEqual(res.output,
                      PipelineParam(name="name", op_name=res.name))
     self.assertEqual(res.dependent_names, [])
     self.assertEqual(res.k8s_resource["kind"], "SecretScope")
     self.assertEqual(res.k8s_resource["metadata"]["name"],
                      "test-secretscope")
     self.assertEqual(res.k8s_resource["spec"], expected_spec)
    def test_basic(self):
        """Test basic usage."""
        with Pipeline("somename") as p:
            param = PipelineParam("param")
            resource_metadata = k8s_client.V1ObjectMeta(name="my-resource")
            k8s_resource = k8s_client.V1PersistentVolumeClaim(
                api_version="v1",
                kind="PersistentVolumeClaim",
                metadata=resource_metadata)
            res = ResourceOp(name="resource",
                             k8s_resource=k8s_resource,
                             success_condition=param,
                             attribute_outputs={"test": "attr"})

        self.assertCountEqual([x.name for x in res.inputs], ["param"])
        self.assertEqual(res.name, "resource")
        self.assertEqual(res.resource.success_condition,
                         PipelineParam("param"))
        self.assertEqual(res.resource.action, "create")
        self.assertEqual(res.resource.failure_condition, None)
        self.assertEqual(res.resource.manifest, None)
        expected_attribute_outputs = {
            "manifest": "{}",
            "name": "{.metadata.name}",
            "test": "attr"
        }
        self.assertEqual(res.attribute_outputs, expected_attribute_outputs)
        expected_outputs = {
            "manifest": PipelineParam(name="manifest", op_name=res.name),
            "name": PipelineParam(name="name", op_name=res.name),
            "test": PipelineParam(name="test", op_name=res.name),
        }
        self.assertEqual(res.outputs, expected_outputs)
        self.assertEqual(res.output,
                         PipelineParam(name="test", op_name=res.name))
        self.assertEqual(res.dependent_names, [])
 def test_invalid(self):
   """Invalid pipeline param name and op_name."""
   with self.assertRaises(ValueError):
     p = PipelineParam(name='123_abc')
Exemplo n.º 7
0
        def my_pipeline(param1, param2):
            vol = VolumeOp(
                name="myvol_creation",
                resource_name="myvol",
                size="1Gi",
            )
            snap1 = VolumeSnapshotOp(
                name="mysnap_creation",
                resource_name=param1,
                volume=vol.volume,
            )
            snap2 = VolumeSnapshotOp(name="mysnap_creation",
                                     resource_name="mysnap",
                                     pvc=param2,
                                     attribute_outputs={"size": "test"})
            snap3 = VolumeSnapshotOp(
                name="mysnap_creation2",
                resource_name="mysnap2",
                pvc=param2,
                api_version="snapshot.storage.k8s.io/v1beta1",
                attribute_outputs={"size": "test"})

            self.assertEqual(sorted([x.name for x in snap1.inputs]),
                             ["name", "param1"])
            self.assertEqual(sorted([x.name for x in snap2.inputs]),
                             ["param2"])
            expected_attribute_outputs_1 = {
                "manifest": "{}",
                "name": "{.metadata.name}",
                "size": "{.status.restoreSize}"
            }
            self.assertEqual(snap1.attribute_outputs,
                             expected_attribute_outputs_1)
            expected_attribute_outputs_2 = {
                "manifest": "{}",
                "name": "{.metadata.name}",
                "size": "test"
            }
            self.assertEqual(snap2.attribute_outputs,
                             expected_attribute_outputs_2)
            expected_outputs_1 = {
                "manifest": PipelineParam(name="manifest", op_name=snap1.name),
                "name": PipelineParam(name="name", op_name=snap1.name),
                "size": PipelineParam(name="name", op_name=snap1.name),
            }
            self.assertEqual(snap1.outputs, expected_outputs_1)
            expected_outputs_2 = {
                "manifest": PipelineParam(name="manifest", op_name=snap2.name),
                "name": PipelineParam(name="name", op_name=snap2.name),
                "size": PipelineParam(name="name", op_name=snap2.name),
            }
            self.assertEqual(snap2.outputs, expected_outputs_2)
            self.assertEqual(snap1.output,
                             PipelineParam(name="name", op_name=snap1.name))
            self.assertEqual(snap2.output,
                             PipelineParam(name="size", op_name=snap2.name))
            self.assertEqual(snap1.dependent_names, [])
            self.assertEqual(snap2.dependent_names, [])
            expected_snapshot_1 = k8s_client.V1TypedLocalObjectReference(
                api_group="snapshot.storage.k8s.io",
                kind="VolumeSnapshot",
                name=PipelineParam(name="name", op_name=vol.name))
            self.assertEqual(snap1.snapshot, expected_snapshot_1)
            expected_snapshot_2 = k8s_client.V1TypedLocalObjectReference(
                api_group="snapshot.storage.k8s.io",
                kind="VolumeSnapshot",
                name=PipelineParam(name="param1"))
            assert (snap2.k8s_resource['apiVersion'] ==
                    "snapshot.storage.k8s.io/v1alpha1")
            self.assertEqual(snap2.snapshot, expected_snapshot_2)

            expected_snapshot_3 = k8s_client.V1TypedLocalObjectReference(
                api_group="snapshot.storage.k8s.io",
                kind="VolumeSnapshot",
                name=PipelineParam(name="param1"))
            self.assertEqual(snap3.snapshot, expected_snapshot_3)
            assert (snap3.k8s_resource['apiVersion'] ==
                    "snapshot.storage.k8s.io/v1beta1")
Exemplo n.º 8
0
 def assert_res(self, res, expected_spec):
     self.assertEqual(res.name, "submitrun")
     self.assertEqual(res.resource.action, "create")
     self.assertEqual(
         res.resource.success_condition,
         "status.metadata.state.life_cycle_state in (TERMINATED, SKIPPED, INTERNAL_ERROR)"
     )
     self.assertEqual(res.resource.failure_condition, None)
     self.assertEqual(res.resource.manifest, None)
     expected_attribute_outputs = {
         "name": "{.metadata.name}",
         "job_id": "{.status.metadata.job_id}",
         "number_in_job": "{.status.metadata.number_in_job}",
         "run_id": "{.status.metadata.run_id}",
         "run_name": "{.status.metadata.run_name}",
         "life_cycle_state": "{.status.metadata.state.life_cycle_state}",
         "result_state": "{.status.metadata.state.result_state}",
         "notebook_output_result": "{.status.notebook_output.result}",
         "notebook_output_truncated": "{.status.notebook_output.truncated}",
         "error": "{.status.error}",
         "manifest": "{}"
     }
     self.assertEqual(res.attribute_outputs, expected_attribute_outputs)
     expected_outputs = {
         "name":
         PipelineParam(name="name", op_name=res.name),
         "job_id":
         PipelineParam(name="job_id", op_name=res.name),
         "number_in_job":
         PipelineParam(name="number_in_job", op_name=res.name),
         "run_id":
         PipelineParam(name="run_id", op_name=res.name),
         "run_name":
         PipelineParam(name="run_name", op_name=res.name),
         "life_cycle_state":
         PipelineParam(name="life_cycle_state", op_name=res.name),
         "result_state":
         PipelineParam(name="result_state", op_name=res.name),
         "notebook_output_result":
         PipelineParam(name="notebook_output_result", op_name=res.name),
         "notebook_output_truncated":
         PipelineParam(name="notebook_output_truncated", op_name=res.name),
         "error":
         PipelineParam(name="error", op_name=res.name),
         "manifest":
         PipelineParam(name="manifest", op_name=res.name)
     }
     self.assertEqual(res.outputs, expected_outputs)
     self.assertEqual(res.output,
                      PipelineParam(name="name", op_name=res.name))
     self.assertEqual(res.dependent_names, [])
     self.assertEqual(res.k8s_resource["kind"], "Run")
     self.assertEqual(res.k8s_resource["metadata"]["name"], "test-run")
     self.assertEqual(res.k8s_resource["spec"], expected_spec)
    def test_basic(self):
        """Test basic usage."""
        with Pipeline("somename") as p:
            param1 = PipelineParam("param1")
            param2 = PipelineParam("param2")
            vol = VolumeOp(
                name="myvol_creation",
                resource_name="myvol",
                size="1Gi",
            )
            snap1 = VolumeSnapshotOp(
                name="mysnap_creation",
                resource_name=param1,
                volume=vol.volume,
            )
            snap2 = VolumeSnapshotOp(
                name="mysnap_creation",
                resource_name="mysnap",
                pvc=param2,
                attribute_outputs={"size": "test"}
            )

        self.assertEqual(
            sorted([x.name for x in snap1.inputs]), ["name", "param1"]
        )
        self.assertEqual(
            sorted([x.name for x in snap2.inputs]), ["param2"]
        )
        expected_attribute_outputs_1 = {
            "manifest": "{}",
            "name": "{.metadata.name}",
            "size": "{.status.restoreSize}"
        }
        self.assertEqual(snap1.attribute_outputs, expected_attribute_outputs_1)
        expected_attribute_outputs_2 = {
            "manifest": "{}",
            "name": "{.metadata.name}",
            "size": "test"
        }
        self.assertEqual(snap2.attribute_outputs, expected_attribute_outputs_2)
        expected_outputs_1 = {
            "manifest": PipelineParam(name="manifest", op_name=snap1.name),
            "name": PipelineParam(name="name", op_name=snap1.name),
            "size": PipelineParam(name="name", op_name=snap1.name),
        }
        self.assertEqual(snap1.outputs, expected_outputs_1)
        expected_outputs_2 = {
            "manifest": PipelineParam(name="manifest", op_name=snap2.name),
            "name": PipelineParam(name="name", op_name=snap2.name),
            "size": PipelineParam(name="name", op_name=snap2.name),
        }
        self.assertEqual(snap2.outputs, expected_outputs_2)
        self.assertEqual(
            snap1.output,
            PipelineParam(name="name", op_name=snap1.name)
        )
        self.assertEqual(
            snap2.output,
            PipelineParam(name="size", op_name=snap2.name)
        )
        self.assertEqual(snap1.dependent_names, [])
        self.assertEqual(snap2.dependent_names, [])
        expected_snapshot_1 = k8s_client.V1TypedLocalObjectReference(
            api_group="snapshot.storage.k8s.io",
            kind="VolumeSnapshot",
            name=PipelineParam(name="name", op_name=vol.name)
        )
        self.assertEqual(snap1.snapshot, expected_snapshot_1)
        expected_snapshot_2 = k8s_client.V1TypedLocalObjectReference(
            api_group="snapshot.storage.k8s.io",
            kind="VolumeSnapshot",
            name=PipelineParam(name="param1")
        )
        self.assertEqual(snap2.snapshot, expected_snapshot_2)