feat: inputs enhancements — subflow() function, dynamic-values loader & FORM input type#16656
Draft
brian-mulier-p wants to merge 3 commits into
Draft
feat: inputs enhancements — subflow() function, dynamic-values loader & FORM input type#16656brian-mulier-p wants to merge 3 commits into
brian-mulier-p wants to merge 3 commits into
Conversation
Synchronously runs a subflow and returns its terminal Execution, so
.outputs.<id> reads the subflow's flow-level outputs — mainly to populate
a SELECT/MULTISELECT input's values at execute-form render time.
- new SubflowFunction (ACL-aware resolution, depth-cap guard, SUCCESS/WARNING gate)
- WebhookService.runAndWait(Execution, Flow, Duration) reusing the queue glue
- ExecutionKind.SUBFLOW_FUNCTION (auto-hidden from lists via NORMAL_KIND_CONDITION)
- config kestra.pebble.subflow-function.{completion-timeout=PT1M,max-depth=3}
(cherry picked from commit 7480bb9)
…uted When an input's values are rendered dynamically (e.g. via the subflow() function), surface that work on the execute form instead of a frozen UI: - per-input loading spinner on dynamic SELECT/MULTISELECT while values compute; on the initial fetch (no value yet) the input is also disabled with a "computing" placeholder, later recomputations only spin and stay usable - apply input defaults immediately at init, without waiting for the validate call - discard stale validate responses so a value the user just picked is never reset - add SUBFLOW_FUNCTION to the executions Kind filter (+ translations) (cherry picked from commit 09364ee)
Implements the FORM input type (kestra-io/kestra-ee#8330) — a flow input that groups related inputs under a displayName + description. - New FORM input expanded to dotted-id leaves so existing resolution + flattenToNestedMap produce a nested payload; FORM never reaches resolution. - Validation: duplicate/prefix-conflict expanded paths rejected; dependsOn on form children must use the dotted path (bad refs rejected loudly); nested FORM and FORM-with-defaults rejected. - Flow Execute modal: Next/Back wizard (one step per top-level FORM, a contiguous run of ungrouped inputs as its own step), recap with per-section Edit, localStorage persistence, clear-on-success. - Progressive autocomplete: inputs.<form>. suggests the FORM's children. - Translations for the new wizard keys across all supported locales. Submission is NESTED ({"environment":{"region":"EU"}}); tasks reference {{ inputs.environment.region }}. This intentionally diverges from the issue's design note (FORM as UI-only grouping with a flat payload) — per the decision to make FORM a real structural wrapper. (cherry picked from commit 8d161e4)
Contributor
📄 OpenAPI Spec ChangesSpec generated with EE branch 14775,14829d14774
< get:
< tags:
< - ServiceAccount
< summary: List service accounts for the given tenant
< operationId: listServiceAccountsForTenant
< parameters:
< - name: page
< in: query
< description: The current page
< explode: false
< schema:
< type: integer
< format: int32
< default: 1
< - name: size
< in: query
< description: The current page size
< explode: false
< schema:
< type: integer
< format: int32
< default: 10
< - name: sort
< in: query
< description: The sort of current page
< explode: false
< schema:
< type: array
< nullable: true
< items:
< type: string
< - name: filters
< in: query
< description: Filters
< required: true
< explode: false
< schema:
< type: array
< items:
< $ref: "#/components/schemas/QueryFilter"
< - name: tenant
< in: path
< required: true
< schema:
< type: string
< responses:
< "200":
< description: listServiceAccountsForTenant 200 response
< content:
< application/json:
< schema:
< $ref: "#/components/schemas/PagedResults_IAMTenantAccessController.ApiUserTenantAccess_"
< security:
< - bearerAuth: []
< - basicAuth: []
19400a19346
> - SUBFLOW_FUNCTION
24231a24178
> - FORM🐋 Docker imagedocker run --pull=always --rm -it -p 8080:8080 --user=root -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp ghcr.io/kestra-io/kestra-pr:16656 server local |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Demo aggregation branch combining two open OSS PRs onto one branch so the changes can be exercised together in a single build:
.outputs.<id>can populate a SELECT/MULTISELECT input'svaluesat execute-form renderflattenToNestedMapproduce a nested payloadCherry-picks of the source PR commits (no new work).
InputsForm.vuewas hand-merged to combine the dynamic-values loader with the FORM wizard.Submission for FORM is NESTED (
{"environment":{"region":"EU"}}); this intentionally diverges from kestra-io/kestra-ee#8330's flat-payload design note.