Custom component properties can break Elyra
See original GitHub issueDescribe the issue Reverse engineering the current pipeline file structure for typed pipelines, I’ve noticed that component properties appear to be not scoped in a safe way, which can result in corrupted pipeline files if a component property name is identical to a Elyra/reserved property name.
Excerpt from a file. Note that app_data
stores reserved properties and component properties as siblings.
{
"id": "5d121620-6873-4aa1-a85f-2a864485e194",
"type": "execution_node",
"op": "filter-text-using-shell-and-grep-ptitzler",
"app_data": {
"component_source": "/opt/anaconda3/envs/components/lib/python3.7/site-packages/elyra/pipeline/resources/filter-text-local.yaml",
"runtime_image": "quay.io/ptitzler/alpine",
"component_source_type": "filename", # <------ reserved property
"elyra_path_text": "",
"pattern": "Apache", # <------ component property
"ui_data": {
Unless I am missing something we need to store the properties in a separate scope.
Issue Analytics
- State:
- Created 2 years ago
- Comments:5 (5 by maintainers)
Top Results From Across the Web
Pipeline components — Elyra 3.14.0.dev0 documentation
Managing custom components using the Elyra CLI Custom components can be added, modified, and removed using the elyra-metadata command line interface.
Read more >Elyra 3.3: Pipelines, custom components, and catalogs - Medium
In this blog post we'll review how you can re-use existing Kubeflow Pipelines components and Apache Airflow operators in Elyra pipelines.
Read more >Elyra | Kubeflow
Elyra enables data scientists to visually create end-to-end ... Elyra, you can identify the components/tasks and related properties that are ...
Read more >Elyra's Jupyter AI Pipelines Now Support Custom Components
You can find content about Elyra's Jupyter AI Pipelines Now Support Custom ... Breaking down and modularizing a pipeline is harder.
Read more >ELYRIA & SWANSEA NEIGHBORHOODS PLAN 2015
neighborhood plan is a significant accomplishment that will build on this history ... realm as a defining element of the Elyria and Swansea....
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
A couple of them, considering that the pipeline file in essence only contains some of the information required to materialize a component (component specification (YAML) + parameters) for processing:
component-specification-v<X+1>
and thecomponent-properties-v<X>
in the pipeline file. How would we detect mismatches?I agree with @ptitzler’s assessment. I think introducing a scope/namespace within
app_data
would be sufficient. I think the only sibling-level attributes at the level would becomponent_source
andcomponent_source_type
. All other attributes would be embedded within acomponent_properties
object_valued (dict) attribute.Using the following two-node pipeline snippet as an example, what today looks like this…
would look something like…
Items worth noting:
app_data
and siblings tocomponent_properties
arecomponent_source
andcomponent_source_type
. (Note the absence ofruntime_image
in the “serve-pytorch-model” properties.)"elyra"
(or some well-known placeholder) imply system-defined or built-in components (currently Notebook, Python-script, and R-script). These nodes will always have the complete set of system-defined properties.Should we determine the need for system-defined properties that correspond to non-elyra components, I think it would be best that those be added outside the
component_properties
stanza. For example,env_vars
may be something we could apply to all component types. If we decided to use those in a general manner, we could move them from the elyra-onlycomponent_properties
to the “parent scope”. One issue with that however, is that the front-end would need to know which are properties and which are system properties (e.g., “component_source”). So to address that, we should probably introduce an additional “namespace stanza” named something like “generic_properties” or “common_properties” (although the latter conflicts with the canvas terminology).Thoughts?