Bidirectional Program Schedule Links
Checklist
- User Stories Documented
- User Stories Reviewed
- Design Reviewed
- APIs reviewed
- Release priorities assigned
- Test cases reviewed
IntroductionÂ
A design to store and retrieve the information of what programs can trigger a schedule to launch a given program, and also what programs are triggered by a given program.
Goals
Storing the information of what programs can trigger the given program should make minimum change to the current Schedule Store implementation. Retrieving the bidirectional links should be fast and the results can be easily used by UI.
User StoriesÂ
- A user wants to know what pipelines will trigger schedules to launch the current pipeline
- A user wants to know what other pipelines will be triggered by the current pipeline
Design
A new index of programs and schedules triggered by them in Schedule Store is needed. REST API's will be used to retrieve the information of triggering programs of a given program or triggered programs of a given program.
Approach
No change of the Schedule Store is needed for storing what programs can trigger a given workflow or pipeline, because the Schedule Store already indexes schedules by trigger keys, which is just the triggering program's ProgramId in the case of program status trigger, the trigger key. To retrieve the programs triggering schedules to launch a workflow, the existing REST API:
GET /v3/namespaces/<namespace-id>/apps/<app-id>/workflows/<workflow-id>/schedules
can be called to get all schedules that can launch the given workflow and the front end can filter out the program status schedules. A query parameter <trigger-type> will be added to filter schedules by the trigger type.
 To store what programs are triggered by the current workflow, Schedule Store needs to index the triggering workflow's ProgramId's. An new REST API also needs to be added to retrieve the schedules containing program status trigger of a given program.
New REST APIs
Path | Method | Description | Response Code | Response |
---|---|---|---|---|
/v3/namespaces/<namespace-id>/apps/<app-id>/workflows/<workflow-id>/schedules?trigger-type=<type> | GET | An optional new REST API to retrieve schedules with a given trigger type that can launch a given workflow: | 200 - On success 404 - When application is not available 500 - Any internal errors | A list of schedules containing a given trigger type that can launch the given workflow |
/v3/namespaces/<namespace-id>/schedules/trigger-type/<type>/?[&program-id=<program-id>&status=<program-status>] | GET | New REST API to retrieve schedules that are triggered by a certain trigger type with optional query parameters. For instance, if the trigger type is program-status, then query parameter can be the programId and optionally a program status. | 200 - On success 404 - When application is not available 500 - Any internal errors | A list of schedules with matching triggers |
UI Impact or Changes
- Need to display what pipelines are triggered by the current pipeline with what condition and what pipelines with what condition can trigger the current pipeline
Test Scenarios
Test ID | Test Description | Expected Results |
---|---|---|
1 | List all schedules with ProgramStatusTrigger that can launch a given workflow | All schedules with ProgramStatusTrigger that can launch a given workflow will be returned |
2 | Delete some schedules returned in test 1, and query for the schedules with ProgramStatusTrigger that can launch the same workflow again | Only schedules not deleted should be returned |
3 | List all schedules triggered by a given workflow | All schedules triggered by a given workflow should be returned |
4 | Delete some schedules returned in test 3, and query for the schedules triggered by the same workflow again | Only schedules not deleted should be returned |
Releases
Release 4.3
Related Work
- ProgramStatusTrigger
Created in 2020 by Google Inc.