Skip to content

chore: watch workspace endpoint #4060

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

Merged
merged 34 commits into from
Sep 16, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
9c5c047
fix: match term color
f0ssel Aug 25, 2022
b3a171b
fmt:
f0ssel Aug 25, 2022
4e4a365
Add resources to workspace watch endpoint
f0ssel Aug 25, 2022
fae7dd2
better wrapped errors
f0ssel Aug 25, 2022
8e5cda7
support sse
f0ssel Aug 25, 2022
e82e201
correct schema
f0ssel Aug 25, 2022
8635e4a
share SetupSSE func
f0ssel Aug 25, 2022
784b361
fix events
f0ssel Sep 14, 2022
f32cddd
better err
f0ssel Sep 14, 2022
800e0a8
Fix casting
f0ssel Sep 14, 2022
efcbbab
fix test
f0ssel Sep 14, 2022
cf59581
remove dead code
f0ssel Sep 14, 2022
35f5894
panic on bad cast
f0ssel Sep 14, 2022
316f0ba
fix flusher
f0ssel Sep 14, 2022
953bb62
rename serversideeventtype
f0ssel Sep 14, 2022
e1f238c
formatting
f0ssel Sep 14, 2022
0ebb9aa
make gen
f0ssel Sep 14, 2022
ec97a71
fix var
f0ssel Sep 14, 2022
d717208
server-sent
f0ssel Sep 15, 2022
a1646b7
ts types
f0ssel Sep 15, 2022
5ca27e5
new convert workspace build
f0ssel Sep 16, 2022
19ff07e
consolidate
f0ssel Sep 16, 2022
13a6e3f
add workspace build converter
f0ssel Sep 16, 2022
03cc931
consolidate data collection
f0ssel Sep 16, 2022
7efae96
more consolidation
f0ssel Sep 16, 2022
4178f5a
split conversion and data fetching
f0ssel Sep 16, 2022
e7614dd
fix missing owner
f0ssel Sep 16, 2022
1f7440b
fix errors
f0ssel Sep 16, 2022
c38f55b
fix js tests
f0ssel Sep 16, 2022
eebd889
revert webpack changes
f0ssel Sep 16, 2022
86da07d
pr comments
f0ssel Sep 16, 2022
ef37372
make gen
f0ssel Sep 16, 2022
026dd2f
save some queries
f0ssel Sep 16, 2022
4e95a99
always return slive
f0ssel Sep 16, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
rename serversideeventtype
  • Loading branch information
f0ssel committed Sep 16, 2022
commit 953bb620ce3c0ef4c39395612c05b63dfb4ce544
2 changes: 1 addition & 1 deletion coderd/httpapi/httpapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ func ServerSideEventSender(rw http.ResponseWriter, r *http.Request) (func(ctx co
panic("http.ResponseWriter is not http.Flusher")
}

pingMsg := fmt.Sprintf("event: %s\n\n", codersdk.EventTypePing)
pingMsg := fmt.Sprintf("event: %s\n\n", codersdk.ServerSideEventTypePing)
_, err := io.WriteString(rw, pingMsg)
if err != nil {
return nil, err
Expand Down
8 changes: 4 additions & 4 deletions coderd/workspaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ func (api *API) watchWorkspace(rw http.ResponseWriter, r *http.Request) {
workspace, err := api.Database.GetWorkspaceByID(r.Context(), workspace.ID)
if err != nil {
_ = sendEvent(r.Context(), codersdk.ServerSideEvent{
Type: codersdk.EventTypeError,
Type: codersdk.ServerSideEventTypeError,
Data: codersdk.Response{
Message: "Internal error fetching workspace.",
Detail: err.Error(),
Expand All @@ -818,7 +818,7 @@ func (api *API) watchWorkspace(rw http.ResponseWriter, r *http.Request) {
build, err := api.Database.GetLatestWorkspaceBuildByWorkspaceID(r.Context(), workspace.ID)
if err != nil {
_ = sendEvent(r.Context(), codersdk.ServerSideEvent{
Type: codersdk.EventTypeError,
Type: codersdk.ServerSideEventTypeError,
Data: codersdk.Response{
Message: "Internal error fetching workspace.",
Detail: err.Error(),
Expand Down Expand Up @@ -924,7 +924,7 @@ func (api *API) watchWorkspace(rw http.ResponseWriter, r *http.Request) {
err = group.Wait()
if err != nil {
_ = sendEvent(r.Context(), codersdk.ServerSideEvent{
Type: codersdk.EventTypeError,
Type: codersdk.ServerSideEventTypeError,
Data: codersdk.Response{
Message: "Internal error fetching workspace.",
Detail: err.Error(),
Expand All @@ -935,7 +935,7 @@ func (api *API) watchWorkspace(rw http.ResponseWriter, r *http.Request) {
apiWorkspace := convertWorkspace(workspace, build, job, template, findUser(workspace.OwnerID, users), findUser(build.InitiatorID, users))
apiWorkspace.LatestBuild.Resources = apiResources
_ = sendEvent(r.Context(), codersdk.ServerSideEvent{
Type: codersdk.EventTypeData,
Type: codersdk.ServerSideEventTypeData,
Data: apiWorkspace,
})
}
Expand Down
24 changes: 12 additions & 12 deletions codersdk/sse.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ import (
)

type ServerSideEvent struct {
Type EventType
Type ServerSideEventType
Data interface{}
}

type EventType string
type ServerSideEventType string

const (
EventTypePing EventType = "ping"
EventTypeData EventType = "data"
EventTypeError EventType = "error"
ServerSideEventTypePing ServerSideEventType = "ping"
ServerSideEventTypeData ServerSideEventType = "data"
ServerSideEventTypeError ServerSideEventType = "error"
)

func ServerSideEventReader(rc io.ReadCloser) func() (*ServerSideEvent, error) {
Expand Down Expand Up @@ -51,29 +51,29 @@ func ServerSideEventReader(rc io.ReadCloser) func() (*ServerSideEvent, error) {
return nil, xerrors.Errorf("reading next line value: %w", err)
}

switch EventType(t) {
case EventTypePing:
switch ServerSideEventType(t) {
case ServerSideEventTypePing:
return &ServerSideEvent{
Type: EventTypePing,
Type: ServerSideEventTypePing,
}, nil
case EventTypeData:
case ServerSideEventTypeData:
d, err := nextLineValue("data")
if err != nil {
return nil, xerrors.Errorf("reading next line value: %w", err)
}

return &ServerSideEvent{
Type: EventTypeData,
Type: ServerSideEventTypeData,
Data: d,
}, nil
case EventTypeError:
case ServerSideEventTypeError:
d, err := nextLineValue("data")
if err != nil {
return nil, xerrors.Errorf("reading next line value: %w", err)
}

return &ServerSideEvent{
Type: EventTypeError,
Type: ServerSideEventTypeError,
Data: d,
}, nil
default:
Expand Down
2 changes: 1 addition & 1 deletion codersdk/workspaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ func (c *Client) WatchWorkspace(ctx context.Context, id uuid.UUID) (<-chan Works
if err != nil {
return
}
if sse.Type == EventTypeData {
if sse.Type == ServerSideEventTypeData {
var ws Workspace
b, ok := sse.Data.([]byte)
if !ok {
Expand Down