chore: Remove url and wildcard url from moon create (#7224)

* chore: Remove url and wildcard url from moon create
This commit is contained in:
Steven Masley 2023-04-20 21:09:14 -05:00 committed by GitHub
parent 68667323f3
commit 4353ad7940
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 45 additions and 109 deletions

6
coderd/apidoc/docs.go generated
View File

@ -6941,12 +6941,6 @@ const docTemplate = `{
},
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"wildcard_hostname": {
"type": "string"
}
}
},

View File

@ -6182,12 +6182,6 @@
},
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"wildcard_hostname": {
"type": "string"
}
}
},

View File

@ -5193,8 +5193,6 @@ func (q *fakeQuerier) InsertWorkspaceProxy(_ context.Context, arg database.Inser
Name: arg.Name,
DisplayName: arg.DisplayName,
Icon: arg.Icon,
Url: arg.Url,
WildcardHostname: arg.WildcardHostname,
TokenHashedSecret: arg.TokenHashedSecret,
CreatedAt: arg.CreatedAt,
UpdatedAt: arg.UpdatedAt,

View File

@ -343,19 +343,27 @@ func WorkspaceProxy(t testing.TB, db database.Store, orig database.WorkspaceProx
require.NoError(t, err, "generate secret")
hashedSecret := sha256.Sum256([]byte(secret))
resource, err := db.InsertWorkspaceProxy(context.Background(), database.InsertWorkspaceProxyParams{
proxy, err := db.InsertWorkspaceProxy(context.Background(), database.InsertWorkspaceProxyParams{
ID: takeFirst(orig.ID, uuid.New()),
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
DisplayName: takeFirst(orig.DisplayName, namesgenerator.GetRandomName(1)),
Icon: takeFirst(orig.Icon, namesgenerator.GetRandomName(1)),
Url: takeFirst(orig.Url, fmt.Sprintf("https://%s.com", namesgenerator.GetRandomName(1))),
WildcardHostname: takeFirst(orig.WildcardHostname, fmt.Sprintf("*.%s.com", namesgenerator.GetRandomName(1))),
TokenHashedSecret: hashedSecret[:],
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
})
require.NoError(t, err, "insert proxy")
return resource, secret
// Also set these fields if the caller wants them.
if orig.Url != "" || orig.WildcardHostname != "" {
proxy, err = db.RegisterWorkspaceProxy(context.Background(), database.RegisterWorkspaceProxyParams{
Url: orig.Url,
WildcardHostname: orig.WildcardHostname,
ID: proxy.ID,
})
require.NoError(t, err, "update proxy")
}
return proxy, secret
}
func File(t testing.TB, db database.Store, orig database.File) database.File {

View File

@ -2983,18 +2983,18 @@ const insertWorkspaceProxy = `-- name: InsertWorkspaceProxy :one
INSERT INTO
workspace_proxies (
id,
url,
wildcard_hostname,
name,
display_name,
icon,
url,
wildcard_hostname,
token_hashed_secret,
created_at,
updated_at,
deleted
)
VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9, false) RETURNING id, name, display_name, icon, url, wildcard_hostname, created_at, updated_at, deleted, token_hashed_secret
($1, '', '', $2, $3, $4, $5, $6, $7, false) RETURNING id, name, display_name, icon, url, wildcard_hostname, created_at, updated_at, deleted, token_hashed_secret
`
type InsertWorkspaceProxyParams struct {
@ -3002,8 +3002,6 @@ type InsertWorkspaceProxyParams struct {
Name string `db:"name" json:"name"`
DisplayName string `db:"display_name" json:"display_name"`
Icon string `db:"icon" json:"icon"`
Url string `db:"url" json:"url"`
WildcardHostname string `db:"wildcard_hostname" json:"wildcard_hostname"`
TokenHashedSecret []byte `db:"token_hashed_secret" json:"token_hashed_secret"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
@ -3015,8 +3013,6 @@ func (q *sqlQuerier) InsertWorkspaceProxy(ctx context.Context, arg InsertWorkspa
arg.Name,
arg.DisplayName,
arg.Icon,
arg.Url,
arg.WildcardHostname,
arg.TokenHashedSecret,
arg.CreatedAt,
arg.UpdatedAt,

View File

@ -2,18 +2,18 @@
INSERT INTO
workspace_proxies (
id,
url,
wildcard_hostname,
name,
display_name,
icon,
url,
wildcard_hostname,
token_hashed_secret,
created_at,
updated_at,
deleted
)
VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9, false) RETURNING *;
($1, '', '', $2, $3, $4, $5, $6, $7, false) RETURNING *;
-- name: RegisterWorkspaceProxy :one
UPDATE

View File

@ -26,11 +26,9 @@ type WorkspaceProxy struct {
}
type CreateWorkspaceProxyRequest struct {
Name string `json:"name"`
DisplayName string `json:"display_name"`
Icon string `json:"icon"`
URL string `json:"url"`
WildcardHostname string `json:"wildcard_hostname"`
Name string `json:"name"`
DisplayName string `json:"display_name"`
Icon string `json:"icon"`
}
type CreateWorkspaceProxyResponse struct {

View File

@ -1236,9 +1236,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceproxies \
{
"display_name": "string",
"icon": "string",
"name": "string",
"url": "string",
"wildcard_hostname": "string"
"name": "string"
}
```

View File

@ -1557,21 +1557,17 @@ CreateParameterRequest is a structure used to create a new parameter value for a
{
"display_name": "string",
"icon": "string",
"name": "string",
"url": "string",
"wildcard_hostname": "string"
"name": "string"
}
```
### Properties
| Name | Type | Required | Restrictions | Description |
| ------------------- | ------ | -------- | ------------ | ----------- |
| `display_name` | string | false | | |
| `icon` | string | false | | |
| `name` | string | false | | |
| `url` | string | false | | |
| `wildcard_hostname` | string | false | | |
| Name | Type | Required | Restrictions | Description |
| -------------- | ------ | -------- | ------------ | ----------- |
| `display_name` | string | false | | |
| `icon` | string | false | | |
| `name` | string | false | | |
## codersdk.CreateWorkspaceRequest

View File

@ -55,13 +55,11 @@ func (r *RootCmd) deleteProxy() *clibase.Cmd {
func (r *RootCmd) createProxy() *clibase.Cmd {
var (
proxyName string
displayName string
proxyIcon string
proxyURL string
proxyWildcardHostname string
onlyToken bool
formatter = cliui.NewOutputFormatter(
proxyName string
displayName string
proxyIcon string
onlyToken bool
formatter = cliui.NewOutputFormatter(
// Text formatter should be human readable.
cliui.ChangeFormatterData(cliui.TextFormat(), func(data any) (any, error) {
response, ok := data.(codersdk.CreateWorkspaceProxyResponse)
@ -94,11 +92,9 @@ func (r *RootCmd) createProxy() *clibase.Cmd {
Handler: func(inv *clibase.Invocation) error {
ctx := inv.Context()
resp, err := client.CreateWorkspaceProxy(ctx, codersdk.CreateWorkspaceProxyRequest{
Name: proxyName,
DisplayName: displayName,
Icon: proxyIcon,
URL: proxyURL,
WildcardHostname: proxyWildcardHostname,
Name: proxyName,
DisplayName: displayName,
Icon: proxyIcon,
})
if err != nil {
return xerrors.Errorf("create workspace proxy: %w", err)
@ -136,16 +132,6 @@ func (r *RootCmd) createProxy() *clibase.Cmd {
Description: "Display icon of the proxy.",
Value: clibase.StringOf(&proxyIcon),
},
clibase.Option{
Flag: "access-url",
Description: "Access URL of the proxy.",
Value: clibase.StringOf(&proxyURL),
},
clibase.Option{
Flag: "wildcard-access-url",
Description: "(Optional) Access url of the proxy for subdomain based apps.",
Value: clibase.StringOf(&proxyWildcardHostname),
},
clibase.Option{
Flag: "only-token",
Description: "Only print the token. This is useful for scripting.",

View File

@ -49,7 +49,6 @@ func Test_ProxyCRUD(t *testing.T) {
"--name", expectedName,
"--display-name", "Test Proxy",
"--icon", "/emojis/1f4bb.png",
"--access-url", "http://localhost:3010",
"--only-token",
)
@ -99,7 +98,6 @@ func Test_ProxyCRUD(t *testing.T) {
Name: expectedName,
DisplayName: "Test Proxy",
Icon: "/emojis/us.png",
URL: "http://localhost:3010",
})
require.NoError(t, err, "failed to create workspace proxy")

View File

@ -108,10 +108,8 @@ func NewWorkspaceProxy(t *testing.T, coderdAPI *coderd.API, owner *codersdk.Clie
}
proxyRes, err := owner.CreateWorkspaceProxy(ctx, codersdk.CreateWorkspaceProxyRequest{
Name: options.Name,
Icon: "/emojis/flag.png",
URL: accessURL.String(),
WildcardHostname: options.AppHostname,
Name: options.Name,
Icon: "/emojis/flag.png",
})
require.NoError(t, err, "failed to create workspace proxy")

View File

@ -91,24 +91,6 @@ func (api *API) postWorkspaceProxy(rw http.ResponseWriter, r *http.Request) {
return
}
if err := validateProxyURL(req.URL); err != nil {
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
Message: "URL is invalid.",
Detail: err.Error(),
})
return
}
if req.WildcardHostname != "" {
if _, err := httpapi.CompileHostnamePattern(req.WildcardHostname); err != nil {
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
Message: "Wildcard URL is invalid.",
Detail: err.Error(),
})
return
}
}
id := uuid.New()
secret, err := cryptorand.HexString(64)
if err != nil {
@ -123,8 +105,6 @@ func (api *API) postWorkspaceProxy(rw http.ResponseWriter, r *http.Request) {
Name: req.Name,
DisplayName: req.DisplayName,
Icon: req.Icon,
Url: req.URL,
WildcardHostname: req.WildcardHostname,
TokenHashedSecret: hashedSecret[:],
CreatedAt: database.Now(),
UpdatedAt: database.Now(),

View File

@ -52,10 +52,8 @@ func TestWorkspaceProxyCRUD(t *testing.T) {
})
ctx := testutil.Context(t, testutil.WaitLong)
proxyRes, err := client.CreateWorkspaceProxy(ctx, codersdk.CreateWorkspaceProxyRequest{
Name: namesgenerator.GetRandomName(1),
Icon: "/emojis/flag.png",
URL: "https://" + namesgenerator.GetRandomName(1) + ".com",
WildcardHostname: "*.sub.example.com",
Name: namesgenerator.GetRandomName(1),
Icon: "/emojis/flag.png",
})
require.NoError(t, err)
@ -87,10 +85,8 @@ func TestWorkspaceProxyCRUD(t *testing.T) {
})
ctx := testutil.Context(t, testutil.WaitLong)
proxyRes, err := client.CreateWorkspaceProxy(ctx, codersdk.CreateWorkspaceProxyRequest{
Name: namesgenerator.GetRandomName(1),
Icon: "/emojis/flag.png",
URL: "https://" + namesgenerator.GetRandomName(1) + ".com",
WildcardHostname: "*.sub.example.com",
Name: namesgenerator.GetRandomName(1),
Icon: "/emojis/flag.png",
})
require.NoError(t, err)
@ -156,10 +152,8 @@ func TestIssueSignedAppToken(t *testing.T) {
createProxyCtx := testutil.Context(t, testutil.WaitLong)
proxyRes, err := client.CreateWorkspaceProxy(createProxyCtx, codersdk.CreateWorkspaceProxyRequest{
Name: namesgenerator.GetRandomName(1),
Icon: "/emojis/flag.png",
URL: "https://" + namesgenerator.GetRandomName(1) + ".com",
WildcardHostname: "*.sub.example.com",
Name: namesgenerator.GetRandomName(1),
Icon: "/emojis/flag.png",
})
require.NoError(t, err)

View File

@ -183,7 +183,7 @@ fatal() {
# Attempt to delete the proxy first, in case it already exists.
"${CODER_DEV_SHIM}" proxy delete local-proxy || true
# Create the proxy
proxy_session_token=$("${CODER_DEV_SHIM}" proxy create --name=local-proxy --display-name="Local Proxy" --icon="/emojis/1f4bb.png" --access-url=http://localhost:3010 --only-token)
proxy_session_token=$("${CODER_DEV_SHIM}" proxy create --name=local-proxy --display-name="Local Proxy" --icon="/emojis/1f4bb.png" --only-token)
# Start the proxy
start_cmd PROXY "" "${CODER_DEV_SHIM}" proxy server --http-address=localhost:3010 --proxy-session-token="${proxy_session_token}" --primary-access-url=http://localhost:3000
) || echo "Failed to create workspace proxy. No workspace proxy created."

View File

@ -260,8 +260,6 @@ export interface CreateWorkspaceProxyRequest {
readonly name: string
readonly display_name: string
readonly icon: string
readonly url: string
readonly wildcard_hostname: string
}
// From codersdk/workspaceproxy.go