-
Notifications
You must be signed in to change notification settings - Fork 1.3k
[public-api] Refactor to use connect handlers, route to HTTP server #13736
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-mp-public-api-connect-refactor.1 because the annotations in the pull request description changed |
1f2cf40
to
710c105
Compare
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.
Changes for workspace team component LGTM
Starting to review now |
} | ||
|
||
type PrebuildService struct { | ||
*v1.UnimplementedPrebuildsServiceServer | ||
v1connect.UnimplementedPrebuildsServiceHandler |
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.
Asking for posterity: Is there an alternative to riddling our implementation with references to connect
? It's not a big concern, as the changes look rather mechanical (near search-and-replace). Still wondering if there is a way to have a ConnectProxy[T]
that does the wrapping for us (I'm aware that this might be a tough ask for Go 🙃 ).
Additionally, would it maybe make sense to hide a bit of the connect-specific function (like connect.NewError
) behind minimal wrappers? IMO those can help explain why you have to do it this way, and not use the regular gRPC errors 🤔
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.
In general, we don't want to make this magic. We also want to stay as close to the official connect documentation as possible such that we don't need to re-teach things internally.
If it's just a wrapper, it's not adding match aside from importing the function from elsewhere (and that place imports connect).
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.
We also want to stay as close to the official connect documentation as possible
IMO the ideal situation would be if we could stick to the gRPC documentation. But I can definitely live with this. 💯 It's not in the interest of connect, but maybe someone writes a wrapper at some point that we can use. 🙂
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.
Yes, but if we stuck with gRPC documentation then you'd not know you can invoke it with curl and use JSON as the payload - in Go principles we should not hide things, and the difference (or complexity) should be visible directly
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.
in Go principles
I know, I know... but abstraction is a powerful concept as well 😆 (if it does not leak too much, hence I'm fine with as-is).
When testing as described I get a |
Ah, sorry. You need to either re-install If you had opened the workspace from this branch, it would've worked as it would've been prebuilt. The curl command was not interpolating the |
Ah thx, my bad. 🙈 But I don't get why curl didn't work before but did now 😢 Update: Noticed you updated the description from
I did, but |
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.
Changes LGTM, tests run and manual test works - nice work! 🎉
Ah my bad, I should've made it more epxlicit. |
Description
In this PR, we 1-1 map the old implementation in gRPC to the new implementation with Connect. Changes are deliberately not made to streamline the tests and simplify to keep the PR cleaner.
In general, the changes are the following (see docs)
connect.NewRequest
orconnect.NewResponse
This PR also changes default routing of
api.<domain>
requests to the HTTP server, this has the following effect:Related Issue(s)
How to test
Unit tests
To make subsequent steps readily runnable, export the token in your shell:
Validate we can reach the new APIs over cURL:
We're doing a list call, and we don't have workspaces so an empty list response is expected.
Validate we can reach the APIs using a gRPC client
Again, we're not getting any workspaces back because we've not started any but the important part is we're not getting an error.
Release Notes
Documentation
Werft options:
If enabled this will build
install/preview
Valid options are
all
,workspace
,webapp
,ide