Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add server-side workflow template library #112

Merged
merged 4 commits into from
Mar 25, 2024

Conversation

ohltyler
Copy link
Member

@ohltyler ohltyler commented Mar 13, 2024

Description

This PR removes the placeholder function to fetch hardcoded preset workflows, and replaces it with a dynamically-fetched set of workflows via JSON templates persisted on the server side under server/resources/templates. This allows easy addition and updates to preset workflows; simply adding a valid JSON file will now automatically add to the list of available preset workflows when navigating to the New workflow tab. Dynamic fetching is done via server APIs and preset workflows persisting in redux state. Validation is done when parsing the JSON files (logic is stubbed for now).

Note we may fetch presets and other OOTB configs from the backend or other central repository in the future. That design is still in progress.

To handle this, a variety of cleanup to interfaces and utils fns were made:

  • updating WorkflowTemplate and Workflow interfaces to match more closely with the backend
  • adding stubbed util fns for handling the conversion of a UI workspace flow -> backend template sub-workflows, and vice-versa
  • adding stubbed util fns for validation of UI workspace flows and backend templates
  • automatic generation of a UI workspace set of nodes/edges if the saved workflow does not contain it

Demo video below shows the New workflow tab being populated based on the JSONs saved in server-side, as well as some automatically generated placeholder workflows state nodes/edges.

screen-capture.17.webm

Issues Resolved

Resolves #72

Check List

  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Copy link

codecov bot commented Mar 13, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 20.20%. Comparing base (616b1cb) to head (3237efd).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #112      +/-   ##
==========================================
- Coverage   25.42%   20.20%   -5.23%     
==========================================
  Files          53       54       +1     
  Lines         763      797      +34     
  Branches       73       74       +1     
==========================================
- Hits          194      161      -33     
- Misses        562      630      +68     
+ Partials        7        6       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Signed-off-by: Tyler Ohlsen <[email protected]>
@ohltyler ohltyler changed the title Add frontend workflow template library Add server-side workflow template library Mar 13, 2024
@ohltyler ohltyler merged commit 83835c2 into opensearch-project:main Mar 25, 2024
8 of 9 checks passed
@ohltyler ohltyler deleted the template branch March 25, 2024 16:41
opensearch-trigger-bot bot pushed a commit that referenced this pull request Mar 25, 2024
Signed-off-by: Tyler Ohlsen <[email protected]>
(cherry picked from commit 83835c2)
ohltyler added a commit that referenced this pull request Mar 25, 2024
Signed-off-by: Tyler Ohlsen <[email protected]>
(cherry picked from commit 83835c2)

Co-authored-by: Tyler Ohlsen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[New workflow] Integrate with backend APIs
2 participants