-
Notifications
You must be signed in to change notification settings - Fork 1.3k
[ws-manager] Make cluster selection filter by application cluster #14050
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
Conversation
started the job as gitpod-build-af-make-cluster-selection-app-cluster-aware.2 because the annotations in the pull request description changed |
components/ws-manager-api/typescript/src/client-provider-source.ts
Outdated
Show resolved
Hide resolved
components/ws-manager-api/typescript/src/client-provider-source.ts
Outdated
Show resolved
Hide resolved
components/ws-manager-api/typescript/src/client-provider-source.ts
Outdated
Show resolved
Hide resolved
@andrew-farries Why not pass the |
d1bafaf
to
37eb088
Compare
@geropl The approach we synced about is implemented in 37eb088; passing the application cluster explicitly everywhere rather than injecting a new dependency into This approach results in more changes across the codebase, but it's more explicit. Still not sure which I prefer tbh. |
0abf8ea
to
ea2e38f
Compare
This reverts commit bc74fb6.
Check that it's possible to finder workspace clusters by name and application cluster.
This reverts commit 17531ae.
ea2e38f
to
16545a0
Compare
Connect the configured installationShortname aka applicationCluster from server, ws-manager-bridge, and the image-builder-api to workspace cluster provider.
Finding a workspace cluster by name only makes sense in the context of a particular workspace cluster.
Deleting a workspace cluster by name only makes sense in the context of a particular workspace cluster.
16545a0
to
3cdaa1d
Compare
taking this out of draft as I think we are past the 'use DI/don't use DI' discussion now. |
Code looks good, starting to test now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code LGTM, tested and works as expected. Thx @andrew-farries !
@andrew-farries Are we waiting for another review? Or can we start rolling it out? |
Description
Redo of #14000 (reverted in #14029). The original lacked the changes to
components/gitpod-db/src/typeorm/workspace-cluster-db-impl.ts
. This PR adds that filtering and adds tests for it.Context
As part of #9198 we want to start syncing the `d_b_workspace_cluster` table with `db-sync`.Currently, the table differs between US and EU regions because each table contains only the data relevant to that region. For example, in the EU table, the
eu70
workspace cluster is marked asavailable
and theus70
cluster iscordoned
. In the US clustereu70
iscordoned
andus70
isavailable
.In order to sync the table we need to get to a point where there is no difference in the data in the table between EU and US regions.
To do that we will introduce a new field in the table called
applicationCluster
which records the name of the application cluster to which the record belongs. Thus, for each workspace cluster there will be two rows in Gitpod SaaS:Effectively the new
applicationCluster
column gives the table an extra dimension so that we can combine both tables (EU and US) into one.#13722 added the column to the table and made
gpctl
fill the value whengpctl register
ing a new workspace cluster. The value is taken from theGITPOD_INSTALLATION_SHORTNAME
environment variable inws-manager-bridge
.Make the cluster selection mechanism in
ws-manager-api
aware of the application cluster to which each workspace cluster is registered. Previously, the selection was by workspace cluster name only. Soon, as described in the context section, each region in gitpod will store records in the database for all workspace clusters - not just the ones in its region. This PR ensures that workspace clusters not in the same region as the application cluster will not be considered.Related Issue(s)
Part of #9198 and #13800
How to test
Edit the
server
deployment and change theWSMAN_CFG_MANAGERS
environment variable to change theapplicationCluster
to which the default workspace cluster in the preview environment is registered:The
WSMAN_CFG_MANAGERS
environment variable is base64 encoded.Once the
server
deployment is edited it should no longer be possible to start a workspace as the only workspace cluster is now associated with a different (non-existent) application cluster:Edit the
WSMAN_CFG_MANAGERS
environment variable once more and set theapplicationCluster
field back to"dev"
. Starting a workspace should now proceed as normal.Release Notes
Documentation
Werft options:
If enabled this will build
install/preview
Valid options are
all
,workspace
,webapp
,ide