Skip to content

Commit 4a87286

Browse files
committed
add delete route
1 parent f6f124d commit 4a87286

File tree

9 files changed

+249
-64
lines changed

9 files changed

+249
-64
lines changed

coderd/apidoc/docs.go

Lines changed: 67 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 61 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/coderd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,6 +961,7 @@ func New(options *Options) *API {
961961
r.Get("/resolve-autostart", api.resolveAutostart)
962962
r.Post("/port-share", api.postWorkspaceAgentPortShare)
963963
r.Get("/port-shares", api.workspaceAgentPortShares)
964+
r.Delete("/port-share", api.deleteWorkspaceAgentPortShare)
964965
})
965966
})
966967
r.Route("/workspacebuilds/{workspacebuild}", func(r chi.Router) {

coderd/workspaceportshare.go renamed to coderd/workspaceagentportshare.go

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ import (
1515
// @ID create-workspace-agent-port-share
1616
// @Security CoderSessionToken
1717
// @Accept json
18+
// @Produce json
1819
// @Tags PortSharing
1920
// @Param workspace path string true "Workspace ID" format(uuid)
2021
// @Param request body codersdk.UpdateWorkspaceAgentPortShareRequest true "Create port sharing level request"
21-
// @Success 200
22+
// @Success 200 {object} codersdk.WorkspaceAgentPortShare
2223
// @Router /workspaces/{workspace}/port-share [post]
2324
func (api *API) postWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Request) {
2425
ctx := r.Context()
@@ -107,7 +108,7 @@ func (api *API) postWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Requ
107108
return
108109
}
109110

110-
rw.WriteHeader(http.StatusOK)
111+
httpapi.Write(ctx, rw, http.StatusOK, convertPortShare(psl))
111112
}
112113

113114
// @Summary Get workspace agent port shares
@@ -133,14 +134,48 @@ func (api *API) workspaceAgentPortShares(rw http.ResponseWriter, r *http.Request
133134
})
134135
}
135136

137+
// @Summary Get workspace agent port shares
138+
// @ID get-workspace-agent-port-shares
139+
// @Security CoderSessionToken
140+
// @Accept json
141+
// @Tags PortSharing
142+
// @Param workspace path string true "Workspace ID" format(uuid)
143+
// @Param request body codersdk.DeleteWorkspaceAgentPortShareRequest true "Delete port sharing level request"
144+
// @Success 200
145+
// @Router /workspaces/{workspace}/port-share [delete]
146+
func (api *API) deleteWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Request) {
147+
ctx := r.Context()
148+
workspace := httpmw.WorkspaceParam(r)
149+
var req codersdk.UpdateWorkspaceAgentPortShareRequest
150+
if !httpapi.Read(ctx, rw, r, &req) {
151+
return
152+
}
153+
154+
err := api.Database.DeleteWorkspaceAgentPortShare(ctx, database.DeleteWorkspaceAgentPortShareParams{
155+
WorkspaceID: workspace.ID,
156+
AgentName: req.AgentName,
157+
Port: req.Port,
158+
})
159+
if err != nil {
160+
httpapi.InternalServerError(rw, err)
161+
return
162+
}
163+
164+
rw.WriteHeader(http.StatusOK)
165+
}
166+
136167
func convertPortShares(shares []database.WorkspaceAgentPortShare) []codersdk.WorkspaceAgentPortShare {
137168
var converted []codersdk.WorkspaceAgentPortShare
138169
for _, share := range shares {
139-
converted = append(converted, codersdk.WorkspaceAgentPortShare{
140-
AgentName: share.AgentName,
141-
Port: share.Port,
142-
ShareLevel: codersdk.WorkspaceAgentPortShareLevel(share.ShareLevel),
143-
})
170+
converted = append(converted, convertPortShare(share))
144171
}
145172
return converted
146173
}
174+
175+
func convertPortShare(share database.WorkspaceAgentPortShare) codersdk.WorkspaceAgentPortShare {
176+
return codersdk.WorkspaceAgentPortShare{
177+
AgentName: share.AgentName,
178+
Port: share.Port,
179+
ShareLevel: codersdk.WorkspaceAgentPortShareLevel(share.ShareLevel),
180+
}
181+
}

coderd/workspaceportshare_test.go renamed to coderd/workspaceagentportshare_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"github.com/coder/coder/v2/testutil"
1616
)
1717

18-
func TestWorkspacePortShare(t *testing.T) {
18+
func TestWorkspaceAgentPortShare(t *testing.T) {
1919
t.Parallel()
2020
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
2121
defer cancel()

codersdk/workspaceportshare.go renamed to codersdk/workspaceagentportshare.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ type (
2929
Port int32 `json:"port"`
3030
ShareLevel WorkspaceAgentPortShareLevel `json:"share_level"`
3131
}
32+
DeleteWorkspaceAgentPortShareRequest struct {
33+
AgentName string `json:"agent_name"`
34+
Port int32 `json:"port"`
35+
}
3236
)
3337

3438
func (l WorkspaceAgentPortShareLevel) ValidMaxLevel() bool {

0 commit comments

Comments
 (0)