feat: STACKIT Workflows Integration#7727
Conversation
- Add CHANGELOG.md, VERSION, NOTICE.txt for the v0.1.0 release - Fill LICENSE.md copyright (was Apache boilerplate placeholder) - Add wait/ subpackage with CreateInstanceWaitHandler (20m), UpdateInstanceWaitHandler (15m), DeleteInstanceWaitHandler (15m) - go.mod: pull in go-cmp v0.7.0 as a test dependency
3c6e9be to
ffb5045
Compare
|
This PR was marked as stale after 7 days of inactivity and will be closed after another 7 days of further inactivity. If this PR should be kept open, just add a comment, remove the stale label or push new commits to it. |
cgoetz-inovex
left a comment
There was a problem hiding this comment.
Thanks for your contribution.
The committed binary and naming issues should be fixed. The other comment is just a question for my understanding.
There was a problem hiding this comment.
binary committed to repo, please remove
| ErrorState: []workflows.InstanceStatus{workflows.INSTANCESTATUS_FAILED}, | ||
| DeleteHttpErrorStatusCodes: []int{http.StatusNotFound}, |
There was a problem hiding this comment.
Will a DELETE request always put the instance directly into state DELETING?
If we create an instance and sth. goes wrong, resulting in state FAILED. Then we want to delete the failed instance.
Will the instance always return a state != FAILED on the first call to this WaitHandler?
| @param bundleName The unique name of the DAG bundle. Must be a valid DNS label (lowercase alphanumeric and hyphens, max 63 characters). | ||
| @return ApiUpdateDagBundleRequest | ||
| */ | ||
| UpdateDagBundle(ctx context.Context, projectId string, regionId string, instanceId string, bundleName string) ApiUpdateDagBundleRequest |
There was a problem hiding this comment.
This func triggers a PATCH request and should be named PartialUpdateDagBundle.
See: https://developers.stackit.schwarz/domains/customer-touchpoints/developer-tools/adr/uniformity-layer/#naming-guidelines:~:text=Partially%20modify%20a%20single%20instance%20of%20Foo%2C%20often%20a%20PATCH%20method%3A%20PartialUpdateFoo
| @param instanceId The STACKIT Workflows instance UUID. | ||
| @return ApiUpdateDagsRepositoryRequest | ||
| */ | ||
| UpdateDagsRepository(ctx context.Context, projectId string, regionId string, instanceId string) ApiUpdateDagsRepositoryRequest |
| @param instanceId The STACKIT Workflows instance UUID. | ||
| @return ApiUpdateIdentityProviderRequest | ||
| */ | ||
| UpdateIdentityProvider(ctx context.Context, projectId string, regionId string, instanceId string) ApiUpdateIdentityProviderRequest |
| @param instanceId The STACKIT Workflows instance UUID. | ||
| @return ApiUpdateInstanceRequest | ||
| */ | ||
| UpdateInstance(ctx context.Context, projectId string, regionId string, instanceId string) ApiUpdateInstanceRequest |
| @param instanceId The STACKIT Workflows instance UUID. | ||
| @return ApiUpdateObservabilityRequest | ||
| */ | ||
| UpdateObservability(ctx context.Context, projectId string, regionId string, instanceId string) ApiUpdateObservabilityRequest |
Description
Adds the STACKIT Workflows SDK at v0.1.0. Backend for upcoming workflows resources in
terraform-provider-stackit(managed Airflow orchestration).Generated code in
services/workflows/v1alphaapi/produced by the OAS bot fromstackitcloud/stackit-api-specifications(commitd2755fb2bda0e2105f920af64d7176d184b2bcb7). On top of that:CHANGELOG.md,VERSION,NOTICE.txt)LICENSE.mdcopyright fill (generator shipped Apache placeholderCopyright [yyyy] [name of copyright owner])wait/subpackage —CreateInstanceWaitHandler(20m),UpdateInstanceWaitHandler(15m),DeleteInstanceWaitHandler(15m), following the modernWaiterHelperpattern used bydremioandtelemetrylink- Usage example atexamples/workflows/DAG bundle CRUD is synchronous per the OAS contract (201/200/204, no
Operationhandle, nostatusfield onDagBundleResponse), so no bundle waiters ship in v0.1.0. If async semantics are introduced, the OAS should be updated first and bundle waiters added then.Supersedes the auto-generated PR #7723 (and the older #7695, #7709) — those should be closed in favor of this one, matching the dremio v0.1.0 pattern in #7166.
Verified end-to-end against
eu01Both the wait helpers and the canonical example file were exercised against
the live API:
[+28s] Create accepted id=6a634d9f-... status=creating
[+3m8s] Create active endpoint=https://...workflows.eu01.stackit.cloud/
[+3m11s] Update done
[+4m42s] Delete done
Wait timeouts have 7–10× headroom over observed times.
Known caveats for v0.1.0 consumers
STACKIT IdP variant (
StackITIdentityProvider) is not yet supported by the deployed backend; instances need anOAuth2IdentityProviderblock. The Workflows team is actively working on STACKIT IdP support.Checklist
make fmtexamples/directory)make test(will be checked by CI)make lint(will be checked by CI)