diff --git a/.golangci.yaml b/.golangci.yaml index 52945243f2772..db3f8b6acc3d1 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -103,7 +103,7 @@ linters-settings: settings: ruleguard: failOn: all - rules: rules.go + rules: '${configDir}/scripts/rules.go' staticcheck: # https://staticcheck.io/docs/options#checks diff --git a/cli/cliui/provisionerjob.go b/cli/cliui/provisionerjob.go index a5ece8c22aa63..4255fba43c539 100644 --- a/cli/cliui/provisionerjob.go +++ b/cli/cliui/provisionerjob.go @@ -12,7 +12,6 @@ import ( "github.com/google/uuid" "golang.org/x/xerrors" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -165,16 +164,16 @@ func ProvisionerJob(ctx context.Context, writer io.Writer, opts ProvisionerJobOp } output := "" switch log.Level { - case database.LogLevelTrace, database.LogLevelDebug: + case codersdk.LogLevelTrace, codersdk.LogLevelDebug: if !opts.Verbose { continue } output = Styles.Placeholder.Render(log.Output) - case database.LogLevelError: + case codersdk.LogLevelError: output = defaultStyles.Error.Render(log.Output) - case database.LogLevelWarn: + case codersdk.LogLevelWarn: output = Styles.Warn.Render(log.Output) - case database.LogLevelInfo: + case codersdk.LogLevelInfo: output = log.Output } jobMutex.Lock() diff --git a/cli/cliui/resources.go b/cli/cliui/resources.go index de60466f3e472..d6d047dc33af8 100644 --- a/cli/cliui/resources.go +++ b/cli/cliui/resources.go @@ -41,7 +41,7 @@ func WorkspaceResources(writer io.Writer, resources []codersdk.WorkspaceResource // Address on stop indexes whether a resource still exists when in the stopped transition. addressOnStop := map[string]codersdk.WorkspaceResource{} for _, resource := range resources { - if resource.Transition != database.WorkspaceTransitionStop { + if resource.Transition != codersdk.WorkspaceTransitionStop { continue } addressOnStop[resource.Type+"."+resource.Name] = resource diff --git a/cli/cliui/resources_test.go b/cli/cliui/resources_test.go index 3a782321a7a9c..e06b91545232b 100644 --- a/cli/cliui/resources_test.go +++ b/cli/cliui/resources_test.go @@ -22,7 +22,7 @@ func TestWorkspaceResources(t *testing.T) { err := cliui.WorkspaceResources(ptty.Output(), []codersdk.WorkspaceResource{{ Type: "google_compute_instance", Name: "dev", - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Agents: []codersdk.WorkspaceAgent{{ Name: "dev", Status: codersdk.WorkspaceAgentConnected, @@ -46,15 +46,15 @@ func TestWorkspaceResources(t *testing.T) { done := make(chan struct{}) go func() { err := cliui.WorkspaceResources(ptty.Output(), []codersdk.WorkspaceResource{{ - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Type: "google_compute_disk", Name: "root", }, { - Transition: database.WorkspaceTransitionStop, + Transition: codersdk.WorkspaceTransitionStop, Type: "google_compute_disk", Name: "root", }, { - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Type: "google_compute_instance", Name: "dev", Agents: []codersdk.WorkspaceAgent{{ @@ -65,7 +65,7 @@ func TestWorkspaceResources(t *testing.T) { Architecture: "amd64", }}, }, { - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Type: "kubernetes_pod", Name: "dev", Agents: []codersdk.WorkspaceAgent{{ diff --git a/cli/configssh.go b/cli/configssh.go index d63892f97aa9b..ed8f785b178de 100644 --- a/cli/configssh.go +++ b/cli/configssh.go @@ -15,7 +15,6 @@ import ( "github.com/coder/coder/cli/cliflag" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -86,7 +85,7 @@ func configSSH() *cobra.Command { return err } for _, resource := range resources { - if resource.Transition != database.WorkspaceTransitionStart { + if resource.Transition != codersdk.WorkspaceTransitionStart { continue } for _, agent := range resource.Agents { diff --git a/cli/create.go b/cli/create.go index aa6930e8151f6..cbfa5ec9f4713 100644 --- a/cli/create.go +++ b/cli/create.go @@ -10,7 +10,6 @@ import ( "github.com/coder/coder/cli/cliflag" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -134,8 +133,8 @@ func create() *cobra.Command { parameters = append(parameters, codersdk.CreateParameterRequest{ Name: parameterSchema.Name, SourceValue: value, - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationScheme(parameterSchema.DefaultDestinationScheme), + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: parameterSchema.DefaultDestinationScheme, }) } _, _ = fmt.Fprintln(cmd.OutOrStdout()) diff --git a/cli/delete.go b/cli/delete.go index 0f795c06c5435..8d1de59c2e653 100644 --- a/cli/delete.go +++ b/cli/delete.go @@ -6,7 +6,6 @@ import ( "github.com/spf13/cobra" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -33,7 +32,7 @@ func delete() *cobra.Command { } before := time.Now() build, err := client.CreateWorkspaceBuild(cmd.Context(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ - Transition: database.WorkspaceTransitionDelete, + Transition: codersdk.WorkspaceTransitionDelete, }) if err != nil { return err diff --git a/cli/list.go b/cli/list.go index 23454bc85674e..4d4b95fc6bc93 100644 --- a/cli/list.go +++ b/cli/list.go @@ -11,7 +11,6 @@ import ( "github.com/coder/coder/cli/cliui" "github.com/coder/coder/coderd/autobuild/schedule" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -66,17 +65,17 @@ func list() *cobra.Command { } switch workspace.LatestBuild.Transition { - case database.WorkspaceTransitionStart: + case codersdk.WorkspaceTransitionStart: status = "Running" if inProgress { status = "Starting" } - case database.WorkspaceTransitionStop: + case codersdk.WorkspaceTransitionStop: status = "Stopped" if inProgress { status = "Stopping" } - case database.WorkspaceTransitionDelete: + case codersdk.WorkspaceTransitionDelete: status = "Deleted" if inProgress { status = "Deleting" diff --git a/cli/portforward.go b/cli/portforward.go index 51206687f9cdb..d0e1897802f95 100644 --- a/cli/portforward.go +++ b/cli/portforward.go @@ -18,7 +18,6 @@ import ( coderagent "github.com/coder/coder/agent" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -80,7 +79,7 @@ func portForward() *cobra.Command { if err != nil { return err } - if workspace.LatestBuild.Transition != database.WorkspaceTransitionStart { + if workspace.LatestBuild.Transition != codersdk.WorkspaceTransitionStart { return xerrors.New("workspace must be in start transition to port-forward") } if workspace.LatestBuild.Job.CompletedAt == nil { diff --git a/cli/server.go b/cli/server.go index d00d24a8cb54d..6c861c116e87e 100644 --- a/cli/server.go +++ b/cli/server.go @@ -395,7 +395,7 @@ func server() *cobra.Command { for _, workspace := range workspaces { before := time.Now() build, err := client.CreateWorkspaceBuild(cmd.Context(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ - Transition: database.WorkspaceTransitionDelete, + Transition: codersdk.WorkspaceTransitionDelete, }) if err != nil { return xerrors.Errorf("delete workspace: %w", err) diff --git a/cli/ssh.go b/cli/ssh.go index 4dfd68463aa64..119d28446611c 100644 --- a/cli/ssh.go +++ b/cli/ssh.go @@ -22,7 +22,6 @@ import ( "github.com/coder/coder/cli/cliui" "github.com/coder/coder/coderd/autobuild/notify" "github.com/coder/coder/coderd/autobuild/schedule" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" "github.com/coder/coder/cryptorand" ) @@ -193,7 +192,7 @@ func getWorkspaceAndAgent(cmd *cobra.Command, client *codersdk.Client, orgID uui } } - if workspace.LatestBuild.Transition != database.WorkspaceTransitionStart { + if workspace.LatestBuild.Transition != codersdk.WorkspaceTransitionStart { return codersdk.Workspace{}, codersdk.WorkspaceAgent{}, xerrors.New("workspace must be in start transition to ssh") } if workspace.LatestBuild.Job.CompletedAt == nil { @@ -202,7 +201,7 @@ func getWorkspaceAndAgent(cmd *cobra.Command, client *codersdk.Client, orgID uui return codersdk.Workspace{}, codersdk.WorkspaceAgent{}, err } } - if workspace.LatestBuild.Transition == database.WorkspaceTransitionDelete { + if workspace.LatestBuild.Transition == codersdk.WorkspaceTransitionDelete { return codersdk.Workspace{}, codersdk.WorkspaceAgent{}, xerrors.Errorf("workspace %q is being deleted", workspace.Name) } diff --git a/cli/start.go b/cli/start.go index 223731045e38f..1c562ddd9d093 100644 --- a/cli/start.go +++ b/cli/start.go @@ -6,7 +6,6 @@ import ( "github.com/spf13/cobra" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -31,7 +30,7 @@ func start() *cobra.Command { } before := time.Now() build, err := client.CreateWorkspaceBuild(cmd.Context(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, }) if err != nil { return err diff --git a/cli/stop.go b/cli/stop.go index 1125901608413..af1f44da58af0 100644 --- a/cli/stop.go +++ b/cli/stop.go @@ -6,7 +6,6 @@ import ( "github.com/spf13/cobra" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -31,7 +30,7 @@ func stop() *cobra.Command { } before := time.Now() build, err := client.CreateWorkspaceBuild(cmd.Context(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ - Transition: database.WorkspaceTransitionStop, + Transition: codersdk.WorkspaceTransitionStop, }) if err != nil { return err diff --git a/cli/templatecreate.go b/cli/templatecreate.go index 0f6977a674a8e..a0def78e72c07 100644 --- a/cli/templatecreate.go +++ b/cli/templatecreate.go @@ -128,9 +128,9 @@ func templateCreate() *cobra.Command { func createValidTemplateVersion(cmd *cobra.Command, client *codersdk.Client, organization codersdk.Organization, provisioner database.ProvisionerType, hash string, parameters ...codersdk.CreateParameterRequest) (*codersdk.TemplateVersion, []codersdk.CreateParameterRequest, error) { before := time.Now() version, err := client.CreateTemplateVersion(cmd.Context(), organization.ID, codersdk.CreateTemplateVersionRequest{ - StorageMethod: database.ProvisionerStorageMethodFile, + StorageMethod: codersdk.ProvisionerStorageMethodFile, StorageSource: hash, - Provisioner: provisioner, + Provisioner: codersdk.ProvisionerType(provisioner), ParameterValues: parameters, }) if err != nil { @@ -192,8 +192,8 @@ func createValidTemplateVersion(cmd *cobra.Command, client *codersdk.Client, org parameters = append(parameters, codersdk.CreateParameterRequest{ Name: parameterSchema.Name, SourceValue: value, - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationScheme(parameterSchema.DefaultDestinationScheme), + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: parameterSchema.DefaultDestinationScheme, }) _, _ = fmt.Fprintln(cmd.OutOrStdout()) } diff --git a/cli/templateupdate.go b/cli/templateupdate.go index 892e99feb6160..70c2611cea687 100644 --- a/cli/templateupdate.go +++ b/cli/templateupdate.go @@ -10,7 +10,6 @@ import ( "golang.org/x/xerrors" "github.com/coder/coder/cli/cliui" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" "github.com/coder/coder/provisionersdk" ) @@ -68,9 +67,9 @@ func templateUpdate() *cobra.Command { before := time.Now() templateVersion, err := client.CreateTemplateVersion(cmd.Context(), organization.ID, codersdk.CreateTemplateVersionRequest{ TemplateID: template.ID, - StorageMethod: database.ProvisionerStorageMethodFile, + StorageMethod: codersdk.ProvisionerStorageMethodFile, StorageSource: resp.Hash, - Provisioner: database.ProvisionerType(provisioner), + Provisioner: codersdk.ProvisionerType(provisioner), }) if err != nil { return err diff --git a/cmd/cliui/main.go b/cmd/cliui/main.go index d02b7cd60c1da..52203893f2bf4 100644 --- a/cmd/cliui/main.go +++ b/cmd/cliui/main.go @@ -118,7 +118,7 @@ func main() { log := codersdk.ProvisionerJobLog{ CreatedAt: time.Now(), Output: fmt.Sprintf("Some log %d", count), - Level: database.LogLevelInfo, + Level: codersdk.LogLevelInfo, } switch { case count == 10: @@ -133,7 +133,7 @@ func main() { log.Stage = "Cleaning Up" } if count%5 == 0 { - log.Level = database.LogLevelWarn + log.Level = codersdk.LogLevelWarn } count++ if log.Output == "" && log.Stage == "" { @@ -188,15 +188,15 @@ func main() { RunE: func(cmd *cobra.Command, args []string) error { disconnected := database.Now().Add(-4 * time.Second) return cliui.WorkspaceResources(cmd.OutOrStdout(), []codersdk.WorkspaceResource{{ - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Type: "google_compute_disk", Name: "root", }, { - Transition: database.WorkspaceTransitionStop, + Transition: codersdk.WorkspaceTransitionStop, Type: "google_compute_disk", Name: "root", }, { - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Type: "google_compute_instance", Name: "dev", Agents: []codersdk.WorkspaceAgent{{ @@ -207,7 +207,7 @@ func main() { Architecture: "amd64", }}, }, { - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, Type: "kubernetes_pod", Name: "dev", Agents: []codersdk.WorkspaceAgent{{ diff --git a/coderd/autobuild/executor/lifecycle_executor_test.go b/coderd/autobuild/executor/lifecycle_executor_test.go index 812ce633cd88d..96a7660e4f8a7 100644 --- a/coderd/autobuild/executor/lifecycle_executor_test.go +++ b/coderd/autobuild/executor/lifecycle_executor_test.go @@ -56,7 +56,7 @@ func TestExecutorAutostartOK(t *testing.T) { ws := mustWorkspace(t, client, workspace.ID) require.NotEqual(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected a workspace build to occur") require.Equal(t, codersdk.ProvisionerJobSucceeded, ws.LatestBuild.Job.Status, "expected provisioner job to have succeeded") - require.Equal(t, database.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected latest transition to be start") + require.Equal(t, codersdk.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected latest transition to be start") } func TestExecutorAutostartTemplateUpdated(t *testing.T) { @@ -107,7 +107,7 @@ func TestExecutorAutostartTemplateUpdated(t *testing.T) { ws := mustWorkspace(t, client, workspace.ID) require.NotEqual(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected a workspace build to occur") require.Equal(t, codersdk.ProvisionerJobSucceeded, ws.LatestBuild.Job.Status, "expected provisioner job to have succeeded") - require.Equal(t, database.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected latest transition to be start") + require.Equal(t, codersdk.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected latest transition to be start") require.Equal(t, workspace.LatestBuild.TemplateVersionID, ws.LatestBuild.TemplateVersionID, "expected workspace build to be using the old template version") } @@ -126,7 +126,7 @@ func TestExecutorAutostartAlreadyRunning(t *testing.T) { ) // Given: we ensure the workspace is running - require.Equal(t, database.WorkspaceTransitionStart, workspace.LatestBuild.Transition) + require.Equal(t, codersdk.WorkspaceTransitionStart, workspace.LatestBuild.Transition) // Given: the workspace initially has autostart disabled require.Empty(t, workspace.AutostartSchedule) @@ -148,7 +148,7 @@ func TestExecutorAutostartAlreadyRunning(t *testing.T) { <-time.After(5 * time.Second) ws := mustWorkspace(t, client, workspace.ID) require.Equal(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected no further workspace builds to occur") - require.Equal(t, database.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected workspace to be running") + require.Equal(t, codersdk.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected workspace to be running") } func TestExecutorAutostartNotEnabled(t *testing.T) { @@ -196,7 +196,7 @@ func TestExecutorAutostopOK(t *testing.T) { workspace = mustProvisionWorkspace(t, client) ) // Given: workspace is running - require.Equal(t, database.WorkspaceTransitionStart, workspace.LatestBuild.Transition) + require.Equal(t, codersdk.WorkspaceTransitionStart, workspace.LatestBuild.Transition) // Given: the workspace initially has autostop disabled require.Empty(t, workspace.AutostopSchedule) @@ -219,7 +219,7 @@ func TestExecutorAutostopOK(t *testing.T) { ws := mustWorkspace(t, client, workspace.ID) require.NotEqual(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected a workspace build to occur") require.Equal(t, codersdk.ProvisionerJobSucceeded, ws.LatestBuild.Job.Status, "expected provisioner job to have succeeded") - require.Equal(t, database.WorkspaceTransitionStop, ws.LatestBuild.Transition, "expected workspace not to be running") + require.Equal(t, codersdk.WorkspaceTransitionStop, ws.LatestBuild.Transition, "expected workspace not to be running") } func TestExecutorAutostopAlreadyStopped(t *testing.T) { @@ -259,7 +259,7 @@ func TestExecutorAutostopAlreadyStopped(t *testing.T) { <-time.After(5 * time.Second) ws := mustWorkspace(t, client, workspace.ID) require.Equal(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected no further workspace builds to occur") - require.Equal(t, database.WorkspaceTransitionStop, ws.LatestBuild.Transition, "expected workspace not to be running") + require.Equal(t, codersdk.WorkspaceTransitionStop, ws.LatestBuild.Transition, "expected workspace not to be running") } func TestExecutorAutostopNotEnabled(t *testing.T) { @@ -275,7 +275,7 @@ func TestExecutorAutostopNotEnabled(t *testing.T) { ) // Given: workspace is running - require.Equal(t, database.WorkspaceTransitionStart, workspace.LatestBuild.Transition) + require.Equal(t, codersdk.WorkspaceTransitionStart, workspace.LatestBuild.Transition) // Given: the workspace has autostop disabled require.Empty(t, workspace.AutostopSchedule) @@ -290,7 +290,7 @@ func TestExecutorAutostopNotEnabled(t *testing.T) { <-time.After(5 * time.Second) ws := mustWorkspace(t, client, workspace.ID) require.Equal(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected no further workspace builds to occur") - require.Equal(t, database.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected workspace to be running") + require.Equal(t, codersdk.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected workspace to be running") } func TestExecutorWorkspaceDeleted(t *testing.T) { @@ -330,7 +330,7 @@ func TestExecutorWorkspaceDeleted(t *testing.T) { <-time.After(5 * time.Second) ws := mustWorkspace(t, client, workspace.ID) require.Equal(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected no further workspace builds to occur") - require.Equal(t, database.WorkspaceTransitionDelete, ws.LatestBuild.Transition, "expected workspace to be deleted") + require.Equal(t, codersdk.WorkspaceTransitionDelete, ws.LatestBuild.Transition, "expected workspace to be deleted") } func TestExecutorWorkspaceTooEarly(t *testing.T) { @@ -369,7 +369,7 @@ func TestExecutorWorkspaceTooEarly(t *testing.T) { <-time.After(5 * time.Second) ws := mustWorkspace(t, client, workspace.ID) require.Equal(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected no further workspace builds to occur") - require.Equal(t, database.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected workspace to be running") + require.Equal(t, codersdk.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected workspace to be running") } func TestExecutorAutostartMultipleOK(t *testing.T) { @@ -419,13 +419,13 @@ func TestExecutorAutostartMultipleOK(t *testing.T) { ws := mustWorkspace(t, client, workspace.ID) require.NotEqual(t, workspace.LatestBuild.ID, ws.LatestBuild.ID, "expected a workspace build to occur") require.Equal(t, codersdk.ProvisionerJobSucceeded, ws.LatestBuild.Job.Status, "expected provisioner job to have succeeded") - require.Equal(t, database.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected latest transition to be start") + require.Equal(t, codersdk.WorkspaceTransitionStart, ws.LatestBuild.Transition, "expected latest transition to be start") builds, err := client.WorkspaceBuilds(ctx, codersdk.WorkspaceBuildsRequest{WorkspaceID: ws.ID}) require.NoError(t, err, "fetch list of workspace builds from primary") // One build to start, one stop transition, and one autostart. No more. - require.Equal(t, database.WorkspaceTransitionStart, builds[0].Transition) - require.Equal(t, database.WorkspaceTransitionStop, builds[1].Transition) - require.Equal(t, database.WorkspaceTransitionStart, builds[2].Transition) + require.Equal(t, codersdk.WorkspaceTransitionStart, builds[0].Transition) + require.Equal(t, codersdk.WorkspaceTransitionStop, builds[1].Transition) + require.Equal(t, codersdk.WorkspaceTransitionStart, builds[2].Transition) require.Len(t, builds, 3, "unexpected number of builds for workspace from primary") // Builds are returned most recent first. @@ -450,21 +450,21 @@ func mustTransitionWorkspace(t *testing.T, client *codersdk.Client, workspaceID ctx := context.Background() workspace, err := client.Workspace(ctx, workspaceID) require.NoError(t, err, "unexpected error fetching workspace") - require.Equal(t, workspace.LatestBuild.Transition, from, "expected workspace state: %s got: %s", from, workspace.LatestBuild.Transition) + require.Equal(t, workspace.LatestBuild.Transition, codersdk.WorkspaceTransition(from), "expected workspace state: %s got: %s", from, workspace.LatestBuild.Transition) template, err := client.Template(ctx, workspace.TemplateID) require.NoError(t, err, "fetch workspace template") build, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{ TemplateVersionID: template.ActiveVersionID, - Transition: to, + Transition: codersdk.WorkspaceTransition(to), }) require.NoError(t, err, "unexpected error transitioning workspace to %s", to) _ = coderdtest.AwaitWorkspaceBuildJob(t, client, build.ID) updated := mustWorkspace(t, client, workspace.ID) - require.Equal(t, to, updated.LatestBuild.Transition, "expected workspace to be in state %s but got %s", to, updated.LatestBuild.Transition) + require.Equal(t, codersdk.WorkspaceTransition(to), updated.LatestBuild.Transition, "expected workspace to be in state %s but got %s", to, updated.LatestBuild.Transition) return updated } diff --git a/coderd/coderd.go b/coderd/coderd.go index fedecf252c79f..3680040d0578f 100644 --- a/coderd/coderd.go +++ b/coderd/coderd.go @@ -325,6 +325,9 @@ func New(options *Options) (http.Handler, func()) { r.Get("/state", api.workspaceBuildState) }) }) + + var _ = xerrors.New("test") + r.NotFound(site.DefaultHandler().ServeHTTP) return r, func() { api.websocketWaitMutex.Lock() diff --git a/coderd/coderdtest/coderdtest.go b/coderd/coderdtest/coderdtest.go index f8e222f73a81d..caffdf0fabf98 100644 --- a/coderd/coderdtest/coderdtest.go +++ b/coderd/coderdtest/coderdtest.go @@ -288,8 +288,8 @@ func CreateTemplateVersion(t *testing.T, client *codersdk.Client, organizationID require.NoError(t, err) templateVersion, err := client.CreateTemplateVersion(context.Background(), organizationID, codersdk.CreateTemplateVersionRequest{ StorageSource: file.Hash, - StorageMethod: database.ProvisionerStorageMethodFile, - Provisioner: database.ProvisionerTypeEcho, + StorageMethod: codersdk.ProvisionerStorageMethodFile, + Provisioner: codersdk.ProvisionerTypeEcho, }) require.NoError(t, err) return templateVersion @@ -302,7 +302,7 @@ func CreateWorkspaceBuild( workspace codersdk.Workspace, transition database.WorkspaceTransition) codersdk.WorkspaceBuild { req := codersdk.CreateWorkspaceBuildRequest{ - Transition: transition, + Transition: codersdk.WorkspaceTransition(transition), } build, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, req) require.NoError(t, err) @@ -331,8 +331,8 @@ func UpdateTemplateVersion(t *testing.T, client *codersdk.Client, organizationID templateVersion, err := client.CreateTemplateVersion(context.Background(), organizationID, codersdk.CreateTemplateVersionRequest{ TemplateID: templateID, StorageSource: file.Hash, - StorageMethod: database.ProvisionerStorageMethodFile, - Provisioner: database.ProvisionerTypeEcho, + StorageMethod: codersdk.ProvisionerStorageMethodFile, + Provisioner: codersdk.ProvisionerTypeEcho, }) require.NoError(t, err) return templateVersion diff --git a/coderd/parameters.go b/coderd/parameters.go index 7a13172ec448e..0f8afcbb2da60 100644 --- a/coderd/parameters.go +++ b/coderd/parameters.go @@ -49,9 +49,9 @@ func (api *api) postParameter(rw http.ResponseWriter, r *http.Request) { UpdatedAt: database.Now(), Scope: scope, ScopeID: scopeID, - SourceScheme: createRequest.SourceScheme, + SourceScheme: database.ParameterSourceScheme(createRequest.SourceScheme), SourceValue: createRequest.SourceValue, - DestinationScheme: createRequest.DestinationScheme, + DestinationScheme: database.ParameterDestinationScheme(createRequest.DestinationScheme), }) if err != nil { httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{ @@ -140,10 +140,10 @@ func convertParameterSchema(parameterSchema database.ParameterSchema) (codersdk. JobID: parameterSchema.JobID, Name: parameterSchema.Name, Description: parameterSchema.Description, - DefaultSourceScheme: string(parameterSchema.DefaultSourceScheme), + DefaultSourceScheme: codersdk.ParameterSourceScheme(parameterSchema.DefaultSourceScheme), DefaultSourceValue: parameterSchema.DefaultSourceValue, AllowOverrideSource: parameterSchema.AllowOverrideSource, - DefaultDestinationScheme: string(parameterSchema.DefaultDestinationScheme), + DefaultDestinationScheme: codersdk.ParameterDestinationScheme(parameterSchema.DefaultDestinationScheme), AllowOverrideDestination: parameterSchema.AllowOverrideDestination, DefaultRefresh: parameterSchema.DefaultRefresh, RedisplayValue: parameterSchema.RedisplayValue, @@ -163,8 +163,8 @@ func convertParameterValue(parameterValue database.ParameterValue) codersdk.Para Scope: codersdk.ParameterScope(parameterValue.Scope), ScopeID: parameterValue.ScopeID, Name: parameterValue.Name, - SourceScheme: parameterValue.SourceScheme, - DestinationScheme: parameterValue.DestinationScheme, + SourceScheme: codersdk.ParameterSourceScheme(parameterValue.SourceScheme), + DestinationScheme: codersdk.ParameterDestinationScheme(parameterValue.DestinationScheme), } } diff --git a/coderd/parameters_test.go b/coderd/parameters_test.go index 2c2f292c0e3fd..a35ab6d65dd58 100644 --- a/coderd/parameters_test.go +++ b/coderd/parameters_test.go @@ -8,7 +8,6 @@ import ( "github.com/stretchr/testify/require" "github.com/coder/coder/coderd/coderdtest" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" ) @@ -21,8 +20,8 @@ func TestPostParameter(t *testing.T) { _, err := client.CreateParameter(context.Background(), codersdk.ParameterScope("something"), user.OrganizationID, codersdk.CreateParameterRequest{ Name: "example", SourceValue: "tomato", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }) var apiErr *codersdk.Error require.ErrorAs(t, err, &apiErr) @@ -36,8 +35,8 @@ func TestPostParameter(t *testing.T) { _, err := client.CreateParameter(context.Background(), codersdk.ParameterOrganization, user.OrganizationID, codersdk.CreateParameterRequest{ Name: "example", SourceValue: "tomato", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }) require.NoError(t, err) }) @@ -49,16 +48,16 @@ func TestPostParameter(t *testing.T) { _, err := client.CreateParameter(context.Background(), codersdk.ParameterOrganization, user.OrganizationID, codersdk.CreateParameterRequest{ Name: "example", SourceValue: "tomato", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }) require.NoError(t, err) _, err = client.CreateParameter(context.Background(), codersdk.ParameterOrganization, user.OrganizationID, codersdk.CreateParameterRequest{ Name: "example", SourceValue: "tomato", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }) var apiErr *codersdk.Error require.ErrorAs(t, err, &apiErr) @@ -82,8 +81,8 @@ func TestParameters(t *testing.T) { _, err := client.CreateParameter(context.Background(), codersdk.ParameterOrganization, user.OrganizationID, codersdk.CreateParameterRequest{ Name: "example", SourceValue: "tomato", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }) require.NoError(t, err) params, err := client.Parameters(context.Background(), codersdk.ParameterOrganization, user.OrganizationID) @@ -110,8 +109,8 @@ func TestDeleteParameter(t *testing.T) { param, err := client.CreateParameter(context.Background(), codersdk.ParameterOrganization, user.OrganizationID, codersdk.CreateParameterRequest{ Name: "example", SourceValue: "tomato", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }) require.NoError(t, err) err = client.DeleteParameter(context.Background(), codersdk.ParameterOrganization, user.OrganizationID, param.Name) diff --git a/coderd/provisionerdaemons_test.go b/coderd/provisionerdaemons_test.go index 647045f7296a7..5e6bf0b37624c 100644 --- a/coderd/provisionerdaemons_test.go +++ b/coderd/provisionerdaemons_test.go @@ -11,7 +11,6 @@ import ( "github.com/stretchr/testify/require" "github.com/coder/coder/coderd/coderdtest" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" "github.com/coder/coder/provisionersdk" ) @@ -34,9 +33,9 @@ func TestProvisionerDaemons(t *testing.T) { t.Log(resp.Hash) version, err := client.CreateTemplateVersion(context.Background(), user.OrganizationID, codersdk.CreateTemplateVersionRequest{ - StorageMethod: database.ProvisionerStorageMethodFile, + StorageMethod: codersdk.ProvisionerStorageMethodFile, StorageSource: resp.Hash, - Provisioner: database.ProvisionerTypeEcho, + Provisioner: codersdk.ProvisionerTypeEcho, }) require.NoError(t, err) require.Eventually(t, func() bool { diff --git a/coderd/provisionerjobs.go b/coderd/provisionerjobs.go index 2b69b39104423..8c8ded3620f2f 100644 --- a/coderd/provisionerjobs.go +++ b/coderd/provisionerjobs.go @@ -244,8 +244,8 @@ func convertProvisionerJobLog(provisionerJobLog database.ProvisionerJobLog) code return codersdk.ProvisionerJobLog{ ID: provisionerJobLog.ID, CreatedAt: provisionerJobLog.CreatedAt, - Source: provisionerJobLog.Source, - Level: provisionerJobLog.Level, + Source: codersdk.LogSource(provisionerJobLog.Source), + Level: codersdk.LogLevel(provisionerJobLog.Level), Stage: provisionerJobLog.Stage, Output: provisionerJobLog.Output, } diff --git a/coderd/templates.go b/coderd/templates.go index 4d719e3d85b25..87cbc7874d1df 100644 --- a/coderd/templates.go +++ b/coderd/templates.go @@ -158,9 +158,9 @@ func (api *api) postTemplateByOrganization(rw http.ResponseWriter, r *http.Reque UpdatedAt: database.Now(), Scope: database.ParameterScopeTemplate, ScopeID: dbTemplate.ID, - SourceScheme: parameterValue.SourceScheme, + SourceScheme: database.ParameterSourceScheme(parameterValue.SourceScheme), SourceValue: parameterValue.SourceValue, - DestinationScheme: parameterValue.DestinationScheme, + DestinationScheme: database.ParameterDestinationScheme(parameterValue.DestinationScheme), }) if err != nil { return xerrors.Errorf("insert parameter value: %w", err) @@ -278,7 +278,7 @@ func convertTemplate(template database.Template, workspaceOwnerCount uint32) cod UpdatedAt: template.UpdatedAt, OrganizationID: template.OrganizationID, Name: template.Name, - Provisioner: template.Provisioner, + Provisioner: codersdk.ProvisionerType(template.Provisioner), ActiveVersionID: template.ActiveVersionID, WorkspaceOwnerCount: workspaceOwnerCount, Description: template.Description, diff --git a/coderd/templateversions.go b/coderd/templateversions.go index 35e362527e4b6..560281908d728 100644 --- a/coderd/templateversions.go +++ b/coderd/templateversions.go @@ -324,9 +324,9 @@ func (api *api) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht UpdatedAt: database.Now(), Scope: database.ParameterScopeImportJob, ScopeID: jobID, - SourceScheme: parameterValue.SourceScheme, + SourceScheme: database.ParameterSourceScheme(parameterValue.SourceScheme), SourceValue: parameterValue.SourceValue, - DestinationScheme: parameterValue.DestinationScheme, + DestinationScheme: database.ParameterDestinationScheme(parameterValue.DestinationScheme), }) if err != nil { return xerrors.Errorf("insert parameter value: %w", err) @@ -339,7 +339,7 @@ func (api *api) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht UpdatedAt: database.Now(), OrganizationID: organization.ID, InitiatorID: apiKey.UserID, - Provisioner: req.Provisioner, + Provisioner: database.ProvisionerType(req.Provisioner), StorageMethod: database.ProvisionerStorageMethodFile, StorageSource: file.Hash, Type: database.ProvisionerJobTypeTemplateVersionImport, diff --git a/coderd/templateversions_test.go b/coderd/templateversions_test.go index edf0efb9d315a..de945adec2a36 100644 --- a/coderd/templateversions_test.go +++ b/coderd/templateversions_test.go @@ -11,7 +11,6 @@ import ( "github.com/stretchr/testify/require" "github.com/coder/coder/coderd/coderdtest" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" "github.com/coder/coder/provisioner/echo" "github.com/coder/coder/provisionersdk/proto" @@ -38,9 +37,9 @@ func TestPostTemplateVersionsByOrganization(t *testing.T) { templateID := uuid.New() _, err := client.CreateTemplateVersion(context.Background(), user.OrganizationID, codersdk.CreateTemplateVersionRequest{ TemplateID: templateID, - StorageMethod: database.ProvisionerStorageMethodFile, + StorageMethod: codersdk.ProvisionerStorageMethodFile, StorageSource: "hash", - Provisioner: database.ProvisionerTypeEcho, + Provisioner: codersdk.ProvisionerTypeEcho, }) var apiErr *codersdk.Error require.ErrorAs(t, err, &apiErr) @@ -52,9 +51,9 @@ func TestPostTemplateVersionsByOrganization(t *testing.T) { client := coderdtest.New(t, nil) user := coderdtest.CreateFirstUser(t, client) _, err := client.CreateTemplateVersion(context.Background(), user.OrganizationID, codersdk.CreateTemplateVersionRequest{ - StorageMethod: database.ProvisionerStorageMethodFile, + StorageMethod: codersdk.ProvisionerStorageMethodFile, StorageSource: "hash", - Provisioner: database.ProvisionerTypeEcho, + Provisioner: codersdk.ProvisionerTypeEcho, }) var apiErr *codersdk.Error require.ErrorAs(t, err, &apiErr) @@ -74,14 +73,14 @@ func TestPostTemplateVersionsByOrganization(t *testing.T) { file, err := client.Upload(context.Background(), codersdk.ContentTypeTar, data) require.NoError(t, err) _, err = client.CreateTemplateVersion(context.Background(), user.OrganizationID, codersdk.CreateTemplateVersionRequest{ - StorageMethod: database.ProvisionerStorageMethodFile, + StorageMethod: codersdk.ProvisionerStorageMethodFile, StorageSource: file.Hash, - Provisioner: database.ProvisionerTypeEcho, + Provisioner: codersdk.ProvisionerTypeEcho, ParameterValues: []codersdk.CreateParameterRequest{{ Name: "example", SourceValue: "value", - SourceScheme: database.ParameterSourceSchemeData, - DestinationScheme: database.ParameterDestinationSchemeProvisionerVariable, + SourceScheme: codersdk.ParameterSourceSchemeData, + DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable, }}, }) require.NoError(t, err) @@ -480,8 +479,8 @@ func TestPaginatedTemplateVersions(t *testing.T) { templateVersion, err := client.CreateTemplateVersion(ctx, user.OrganizationID, codersdk.CreateTemplateVersionRequest{ TemplateID: template.ID, StorageSource: file.Hash, - StorageMethod: database.ProvisionerStorageMethodFile, - Provisioner: database.ProvisionerTypeEcho, + StorageMethod: codersdk.ProvisionerStorageMethodFile, + Provisioner: codersdk.ProvisionerTypeEcho, }) require.NoError(t, err) diff --git a/coderd/workspacebuilds.go b/coderd/workspacebuilds.go index 3ee251c2c424e..d142ea4221c8c 100644 --- a/coderd/workspacebuilds.go +++ b/coderd/workspacebuilds.go @@ -153,9 +153,9 @@ func (api *api) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) { // Rbac action depends on the transition var action rbac.Action switch createBuild.Transition { - case database.WorkspaceTransitionDelete: + case codersdk.WorkspaceTransitionDelete: action = rbac.ActionDelete - case database.WorkspaceTransitionStart, database.WorkspaceTransitionStop: + case codersdk.WorkspaceTransitionStart, codersdk.WorkspaceTransitionStop: action = rbac.ActionUpdate default: httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{ @@ -291,7 +291,7 @@ func (api *api) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) { Name: namesgenerator.GetRandomName(1), ProvisionerState: state, InitiatorID: apiKey.UserID, - Transition: createBuild.Transition, + Transition: database.WorkspaceTransition(createBuild.Transition), JobID: provisionerJob.ID, }) if err != nil { @@ -442,7 +442,7 @@ func convertWorkspaceBuild(workspaceBuild database.WorkspaceBuild, job codersdk. TemplateVersionID: workspaceBuild.TemplateVersionID, BuildNumber: workspaceBuild.BuildNumber, Name: workspaceBuild.Name, - Transition: workspaceBuild.Transition, + Transition: codersdk.WorkspaceTransition(workspaceBuild.Transition), InitiatorID: workspaceBuild.InitiatorID, Job: job, } @@ -453,7 +453,7 @@ func convertWorkspaceResource(resource database.WorkspaceResource, agents []code ID: resource.ID, CreatedAt: resource.CreatedAt, JobID: resource.JobID, - Transition: resource.Transition, + Transition: codersdk.WorkspaceTransition(resource.Transition), Type: resource.Type, Name: resource.Name, Agents: agents, diff --git a/coderd/workspaces.go b/coderd/workspaces.go index c41de082f1c1e..471560c4d921d 100644 --- a/coderd/workspaces.go +++ b/coderd/workspaces.go @@ -445,9 +445,9 @@ func (api *api) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Req UpdatedAt: database.Now(), Scope: database.ParameterScopeWorkspace, ScopeID: workspace.ID, - SourceScheme: parameterValue.SourceScheme, + SourceScheme: database.ParameterSourceScheme(parameterValue.SourceScheme), SourceValue: parameterValue.SourceValue, - DestinationScheme: parameterValue.DestinationScheme, + DestinationScheme: database.ParameterDestinationScheme(parameterValue.DestinationScheme), }) if err != nil { return xerrors.Errorf("insert parameter value: %w", err) diff --git a/coderd/workspaces_test.go b/coderd/workspaces_test.go index 984c39216b84a..af43c6efdfd0d 100644 --- a/coderd/workspaces_test.go +++ b/coderd/workspaces_test.go @@ -14,7 +14,6 @@ import ( "github.com/coder/coder/coderd/autobuild/schedule" "github.com/coder/coder/coderd/coderdtest" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/codersdk" "github.com/coder/coder/provisioner/echo" "github.com/coder/coder/provisionersdk/proto" @@ -55,7 +54,7 @@ func TestWorkspace(t *testing.T) { // Delete the workspace build, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ - Transition: database.WorkspaceTransitionDelete, + Transition: codersdk.WorkspaceTransitionDelete, }) require.NoError(t, err, "delete the workspace") coderdtest.AwaitWorkspaceBuildJob(t, client, build.ID) @@ -271,7 +270,7 @@ func TestPostWorkspaceBuild(t *testing.T) { workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID) _, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ TemplateVersionID: uuid.New(), - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, }) require.Error(t, err) var apiErr *codersdk.Error @@ -311,7 +310,7 @@ func TestPostWorkspaceBuild(t *testing.T) { workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID) _, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ TemplateVersionID: template.ActiveVersionID, - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, }) require.Error(t, err) var apiErr *codersdk.Error @@ -331,7 +330,7 @@ func TestPostWorkspaceBuild(t *testing.T) { coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID) build, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ TemplateVersionID: template.ActiveVersionID, - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, }) require.NoError(t, err) require.Equal(t, workspace.LatestBuild.BuildNumber+1, build.BuildNumber) @@ -351,7 +350,7 @@ func TestPostWorkspaceBuild(t *testing.T) { wantState := []byte("something") build, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ TemplateVersionID: template.ActiveVersionID, - Transition: database.WorkspaceTransitionStart, + Transition: codersdk.WorkspaceTransitionStart, ProvisionerState: wantState, }) require.NoError(t, err) @@ -371,7 +370,7 @@ func TestPostWorkspaceBuild(t *testing.T) { workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID) coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID) build, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{ - Transition: database.WorkspaceTransitionDelete, + Transition: codersdk.WorkspaceTransitionDelete, }) require.NoError(t, err) require.Equal(t, workspace.LatestBuild.BuildNumber+1, build.BuildNumber) diff --git a/codersdk/organizations.go b/codersdk/organizations.go index 7ebb16aedca97..d5b8d2f3ba2ee 100644 --- a/codersdk/organizations.go +++ b/codersdk/organizations.go @@ -9,8 +9,19 @@ import ( "github.com/google/uuid" "golang.org/x/xerrors" +) + +type ProvisionerStorageMethod string + +const ( + ProvisionerStorageMethodFile ProvisionerStorageMethod = "file" +) + +type ProvisionerType string - "github.com/coder/coder/coderd/database" +const ( + ProvisionerTypeEcho ProvisionerType = "echo" + ProvisionerTypeTerraform ProvisionerType = "terraform" ) // Organization is the JSON representation of a Coder organization. @@ -26,9 +37,9 @@ type CreateTemplateVersionRequest struct { // TemplateID optionally associates a version with a template. TemplateID uuid.UUID `json:"template_id,omitempty"` - StorageMethod database.ProvisionerStorageMethod `json:"storage_method" validate:"oneof=file,required"` - StorageSource string `json:"storage_source" validate:"required"` - Provisioner database.ProvisionerType `json:"provisioner" validate:"oneof=terraform echo,required"` + StorageMethod ProvisionerStorageMethod `json:"storage_method" validate:"oneof=file,required"` + StorageSource string `json:"storage_source" validate:"required"` + Provisioner ProvisionerType `json:"provisioner" validate:"oneof=terraform echo,required"` // ParameterValues allows for additional parameters to be provided // during the dry-run provision stage. ParameterValues []CreateParameterRequest `json:"parameter_values,omitempty"` diff --git a/codersdk/parameters.go b/codersdk/parameters.go index 78b0d84588e59..bf9d9874b83dc 100644 --- a/codersdk/parameters.go +++ b/codersdk/parameters.go @@ -9,8 +9,6 @@ import ( "time" "github.com/google/uuid" - - "github.com/coder/coder/coderd/database" ) type ParameterScope string @@ -22,35 +20,57 @@ const ( ParameterWorkspace ParameterScope = "workspace" ) +type ParameterSourceScheme string + +const ( + ParameterSourceSchemeNone ParameterSourceScheme = "none" + ParameterSourceSchemeData ParameterSourceScheme = "data" +) + +type ParameterDestinationScheme string + +const ( + ParameterDestinationSchemeNone ParameterDestinationScheme = "none" + ParameterDestinationSchemeEnvironmentVariable ParameterDestinationScheme = "environment_variable" + ParameterDestinationSchemeProvisionerVariable ParameterDestinationScheme = "provisioner_variable" +) + +type ParameterTypeSystem string + +const ( + ParameterTypeSystemNone ParameterTypeSystem = "none" + ParameterTypeSystemHCL ParameterTypeSystem = "hcl" +) + // Parameter represents a set value for the scope. type Parameter struct { - ID uuid.UUID `json:"id"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - Scope ParameterScope `json:"scope"` - ScopeID uuid.UUID `json:"scope_id"` - Name string `json:"name"` - SourceScheme database.ParameterSourceScheme `json:"source_scheme"` - DestinationScheme database.ParameterDestinationScheme `json:"destination_scheme"` + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + Scope ParameterScope `json:"scope"` + ScopeID uuid.UUID `json:"scope_id"` + Name string `json:"name"` + SourceScheme ParameterSourceScheme `json:"source_scheme"` + DestinationScheme ParameterDestinationScheme `json:"destination_scheme"` } type ParameterSchema struct { - ID uuid.UUID `json:"id"` - CreatedAt time.Time `json:"created_at"` - JobID uuid.UUID `json:"job_id"` - Name string `json:"name"` - Description string `json:"description"` - DefaultSourceScheme string `json:"default_source_scheme"` - DefaultSourceValue string `json:"default_source_value"` - AllowOverrideSource bool `json:"allow_override_source"` - DefaultDestinationScheme string `json:"default_destination_scheme"` - AllowOverrideDestination bool `json:"allow_override_destination"` - DefaultRefresh string `json:"default_refresh"` - RedisplayValue bool `json:"redisplay_value"` - ValidationError string `json:"validation_error"` - ValidationCondition string `json:"validation_condition"` - ValidationTypeSystem string `json:"validation_type_system"` - ValidationValueType string `json:"validation_value_type"` + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + JobID uuid.UUID `json:"job_id"` + Name string `json:"name"` + Description string `json:"description"` + DefaultSourceScheme ParameterSourceScheme `json:"default_source_scheme"` + DefaultSourceValue string `json:"default_source_value"` + AllowOverrideSource bool `json:"allow_override_source"` + DefaultDestinationScheme ParameterDestinationScheme `json:"default_destination_scheme"` + AllowOverrideDestination bool `json:"allow_override_destination"` + DefaultRefresh string `json:"default_refresh"` + RedisplayValue bool `json:"redisplay_value"` + ValidationError string `json:"validation_error"` + ValidationCondition string `json:"validation_condition"` + ValidationTypeSystem string `json:"validation_type_system"` + ValidationValueType string `json:"validation_value_type"` // This is a special array of items provided if the validation condition // explicitly states the value must be one of a set. @@ -59,10 +79,10 @@ type ParameterSchema struct { // CreateParameterRequest is used to create a new parameter value for a scope. type CreateParameterRequest struct { - Name string `json:"name" validate:"required"` - SourceValue string `json:"source_value" validate:"required"` - SourceScheme database.ParameterSourceScheme `json:"source_scheme" validate:"oneof=data,required"` - DestinationScheme database.ParameterDestinationScheme `json:"destination_scheme" validate:"oneof=environment_variable provisioner_variable,required"` + Name string `json:"name" validate:"required"` + SourceValue string `json:"source_value" validate:"required"` + SourceScheme ParameterSourceScheme `json:"source_scheme" validate:"oneof=data,required"` + DestinationScheme ParameterDestinationScheme `json:"destination_scheme" validate:"oneof=environment_variable provisioner_variable,required"` } func (c *Client) CreateParameter(ctx context.Context, scope ParameterScope, id uuid.UUID, req CreateParameterRequest) (Parameter, error) { diff --git a/codersdk/provisionerdaemons.go b/codersdk/provisionerdaemons.go index 1c906fa8c23b8..308e3a803f09c 100644 --- a/codersdk/provisionerdaemons.go +++ b/codersdk/provisionerdaemons.go @@ -2,6 +2,7 @@ package codersdk import ( "context" + "database/sql" "encoding/json" "fmt" "io" @@ -15,12 +16,35 @@ import ( "golang.org/x/xerrors" "nhooyr.io/websocket" - "github.com/coder/coder/coderd/database" "github.com/coder/coder/provisionerd/proto" "github.com/coder/coder/provisionersdk" ) -type ProvisionerDaemon database.ProvisionerDaemon +type LogSource string + +const ( + LogSourceProvisionerDaemon LogSource = "provisioner_daemon" + LogSourceProvisioner LogSource = "provisioner" +) + +type LogLevel string + +const ( + LogLevelTrace LogLevel = "trace" + LogLevelDebug LogLevel = "debug" + LogLevelInfo LogLevel = "info" + LogLevelWarn LogLevel = "warn" + LogLevelError LogLevel = "error" +) + +type ProvisionerDaemon struct { + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt sql.NullTime `json:"updated_at"` + OrganizationID uuid.NullUUID `json:"organization_id"` + Name string `json:"name"` + Provisioners []ProvisionerType `json:"provisioners"` +} // ProvisionerJobStaus represents the at-time state of a job. type ProvisionerJobStatus string @@ -54,12 +78,12 @@ type ProvisionerJob struct { } type ProvisionerJobLog struct { - ID uuid.UUID `json:"id"` - CreatedAt time.Time `json:"created_at"` - Source database.LogSource `json:"log_source"` - Level database.LogLevel `json:"log_level"` - Stage string `json:"stage"` - Output string `json:"output"` + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + Source LogSource `json:"log_source"` + Level LogLevel `json:"log_level"` + Stage string `json:"stage"` + Output string `json:"output"` } // ListenProvisionerDaemon returns the gRPC service for a provisioner daemon implementation. diff --git a/codersdk/templates.go b/codersdk/templates.go index 972a8a5b2b8dd..6ca9361ad89df 100644 --- a/codersdk/templates.go +++ b/codersdk/templates.go @@ -8,22 +8,20 @@ import ( "time" "github.com/google/uuid" - - "github.com/coder/coder/coderd/database" ) // Template is the JSON representation of a Coder template. This type matches the // database object for now, but is abstracted for ease of change later on. type Template struct { - ID uuid.UUID `json:"id"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - OrganizationID uuid.UUID `json:"organization_id"` - Name string `json:"name"` - Provisioner database.ProvisionerType `json:"provisioner"` - ActiveVersionID uuid.UUID `json:"active_version_id"` - WorkspaceOwnerCount uint32 `json:"workspace_owner_count"` - Description string `json:"description"` + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + OrganizationID uuid.UUID `json:"organization_id"` + Name string `json:"name"` + Provisioner ProvisionerType `json:"provisioner"` + ActiveVersionID uuid.UUID `json:"active_version_id"` + WorkspaceOwnerCount uint32 `json:"workspace_owner_count"` + Description string `json:"description"` } type UpdateActiveTemplateVersion struct { diff --git a/codersdk/templateversions.go b/codersdk/templateversions.go index 1c0e831779f2d..0c72b6d26385e 100644 --- a/codersdk/templateversions.go +++ b/codersdk/templateversions.go @@ -8,8 +8,6 @@ import ( "time" "github.com/google/uuid" - - "github.com/coder/coder/coderd/parameter" ) // TemplateVersion represents a single version of a template. @@ -24,7 +22,19 @@ type TemplateVersion struct { } // TemplateVersionParameter represents a computed parameter value. -type TemplateVersionParameter parameter.ComputedValue +type TemplateVersionParameter struct { + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + Scope ParameterScope `json:"scope"` + ScopeID uuid.UUID `json:"scope_id"` + Name string `json:"name"` + SourceScheme ParameterSourceScheme `json:"source_scheme"` + SourceValue string `json:"source_value"` + DestinationScheme ParameterDestinationScheme `json:"destination_scheme"` + SchemaID uuid.UUID `json:"schema_id"` + DefaultSourceValue bool `json:"default_source_value"` +} // TemplateVersion returns a template version by ID. func (c *Client) TemplateVersion(ctx context.Context, id uuid.UUID) (TemplateVersion, error) { diff --git a/codersdk/workspacebuilds.go b/codersdk/workspacebuilds.go index 83e2a4b535cf0..073fae6e88bf3 100644 --- a/codersdk/workspacebuilds.go +++ b/codersdk/workspacebuilds.go @@ -9,23 +9,29 @@ import ( "time" "github.com/google/uuid" +) + +type WorkspaceTransition string - "github.com/coder/coder/coderd/database" +const ( + WorkspaceTransitionStart WorkspaceTransition = "start" + WorkspaceTransitionStop WorkspaceTransition = "stop" + WorkspaceTransitionDelete WorkspaceTransition = "delete" ) // WorkspaceBuild is an at-point representation of a workspace state. // BuildNumbers start at 1 and increase by 1 for each subsequent build type WorkspaceBuild struct { - ID uuid.UUID `json:"id"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - WorkspaceID uuid.UUID `json:"workspace_id"` - TemplateVersionID uuid.UUID `json:"template_version_id"` - BuildNumber int32 `json:"build_number"` - Name string `json:"name"` - Transition database.WorkspaceTransition `json:"transition"` - InitiatorID uuid.UUID `json:"initiator_id"` - Job ProvisionerJob `json:"job"` + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + WorkspaceID uuid.UUID `json:"workspace_id"` + TemplateVersionID uuid.UUID `json:"template_version_id"` + BuildNumber int32 `json:"build_number"` + Name string `json:"name"` + Transition WorkspaceTransition `json:"transition"` + InitiatorID uuid.UUID `json:"initiator_id"` + Job ProvisionerJob `json:"job"` } // WorkspaceBuild returns a single workspace build for a workspace. diff --git a/codersdk/workspaceresources.go b/codersdk/workspaceresources.go index f1dc5d74a04f9..97ae03186cf39 100644 --- a/codersdk/workspaceresources.go +++ b/codersdk/workspaceresources.go @@ -8,8 +8,6 @@ import ( "time" "github.com/google/uuid" - - "github.com/coder/coder/coderd/database" ) type WorkspaceAgentStatus string @@ -21,13 +19,13 @@ const ( ) type WorkspaceResource struct { - ID uuid.UUID `json:"id"` - CreatedAt time.Time `json:"created_at"` - JobID uuid.UUID `json:"job_id"` - Transition database.WorkspaceTransition `json:"workspace_transition"` - Type string `json:"type"` - Name string `json:"name"` - Agents []WorkspaceAgent `json:"agents,omitempty"` + ID uuid.UUID `json:"id"` + CreatedAt time.Time `json:"created_at"` + JobID uuid.UUID `json:"job_id"` + Transition WorkspaceTransition `json:"workspace_transition"` + Type string `json:"type"` + Name string `json:"name"` + Agents []WorkspaceAgent `json:"agents,omitempty"` } type WorkspaceAgent struct { diff --git a/codersdk/workspaces.go b/codersdk/workspaces.go index 5c2855d3424da..d9080d876d03d 100644 --- a/codersdk/workspaces.go +++ b/codersdk/workspaces.go @@ -11,8 +11,6 @@ import ( "golang.org/x/xerrors" "nhooyr.io/websocket" "nhooyr.io/websocket/wsjson" - - "github.com/coder/coder/coderd/database" ) // Workspace is a deployment of a template. It references a specific @@ -34,10 +32,10 @@ type Workspace struct { // CreateWorkspaceBuildRequest provides options to update the latest workspace build. type CreateWorkspaceBuildRequest struct { - TemplateVersionID uuid.UUID `json:"template_version_id,omitempty"` - Transition database.WorkspaceTransition `json:"transition" validate:"oneof=create start stop delete,required"` - DryRun bool `json:"dry_run,omitempty"` - ProvisionerState []byte `json:"state,omitempty"` + TemplateVersionID uuid.UUID `json:"template_version_id,omitempty"` + Transition WorkspaceTransition `json:"transition" validate:"oneof=create start stop delete,required"` + DryRun bool `json:"dry_run,omitempty"` + ProvisionerState []byte `json:"state,omitempty"` } // Workspace returns a single workspace. diff --git a/rules.go b/rules.go deleted file mode 100644 index a81f59395e676..0000000000000 --- a/rules.go +++ /dev/null @@ -1,26 +0,0 @@ -package gorules - -import ( - "github.com/quasilyte/go-ruleguard/dsl" -) - -// Use xerrors everywhere! It provides additional stacktrace info! -//nolint:unused,deadcode,varnamelen -func xerrors(m dsl.Matcher) { - m.Import("errors") - m.Import("fmt") - m.Import("golang.org/x/xerrors") - - m.Match("fmt.Errorf($*args)"). - Suggest("xerrors.New($args)"). - Report("Use xerrors to provide additional stacktrace information!") - - m.Match("fmt.Errorf($*args)"). - Suggest("xerrors.Errorf($args)"). - Report("Use xerrors to provide additional stacktrace information!") - - m.Match("errors.New($msg)"). - Where(m["msg"].Type.Is("string")). - Suggest("xerrors.New($msg)"). - Report("Use xerrors to provide additional stacktrace information!") -} diff --git a/scripts/rules.go b/scripts/rules.go new file mode 100644 index 0000000000000..ef1c31da2c8ec --- /dev/null +++ b/scripts/rules.go @@ -0,0 +1,43 @@ +// Package gorules defines custom lint rules for ruleguard. +// +// golangci-lint runs these rules via go-critic, which includes support +// for ruleguard. All Go files in this directory define lint rules +// in the Ruleguard DSL; see: +// +// - https://go-ruleguard.github.io/by-example/ +// - https://pkg.go.dev/github.com/quasilyte/go-ruleguard/dsl +// +// You run one of the following commands to execute your go rules only: +// golangci-lint run +// golangci-lint run --disable-all --enable=gocritic +package gorules + +import ( + "github.com/quasilyte/go-ruleguard/dsl" +) + +// Use xerrors everywhere! It provides additional stacktrace info! +//nolint:unused,deadcode,varnamelen +func xerrors(m dsl.Matcher) { + m.Import("errors") + m.Import("fmt") + m.Import("golang.org/x/xerrors") + + m.Match("fmt.Errorf($*args)"). + Suggest("xerrors.New($args)"). + Report("Use xerrors to provide additional stacktrace information!") + + m.Match("errors.$_($msg)"). + Where(m["msg"].Type.Is("string")). + Suggest("xerrors.New($msg)"). + Report("Use xerrors to provide additional stacktrace information!") +} + +// databaseImport enforces not importing any database types into /codersdk. +//nolint:unused,deadcode,varnamelen +func databaseImport(m dsl.Matcher) { + m.Import("github.com/coder/coder/coderd/database") + m.Match("database.$_"). + Report("Do not import any database types into codersdk"). + Where(m.File().PkgPath.Matches("github.com/coder/coder/codersdk")) +} diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index f5dc8b8cf3e62..3a64d14942f97 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -49,17 +49,15 @@ export interface CreateOrganizationRequest { readonly name: string } -// From codersdk/parameters.go:61:6 +// From codersdk/parameters.go:81:6 export interface CreateParameterRequest { readonly name: string readonly source_value: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterSourceScheme") - readonly source_scheme: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterDestinationScheme") - readonly destination_scheme: string + readonly source_scheme: ParameterSourceScheme + readonly destination_scheme: ParameterDestinationScheme } -// From codersdk/organizations.go:38:6 +// From codersdk/organizations.go:49:6 export interface CreateTemplateRequest { readonly name: string readonly description?: string @@ -67,14 +65,12 @@ export interface CreateTemplateRequest { readonly parameter_values?: CreateParameterRequest[] } -// From codersdk/organizations.go:25:6 +// From codersdk/organizations.go:36:6 export interface CreateTemplateVersionRequest { readonly template_id?: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerStorageMethod") - readonly storage_method: string + readonly storage_method: ProvisionerStorageMethod readonly storage_source: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerType") - readonly provisioner: string + readonly provisioner: ProvisionerType readonly parameter_values?: CreateParameterRequest[] } @@ -86,16 +82,15 @@ export interface CreateUserRequest { readonly organization_id: string } -// From codersdk/workspaces.go:36:6 +// From codersdk/workspaces.go:34:6 export interface CreateWorkspaceBuildRequest { readonly template_version_id?: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.WorkspaceTransition") - readonly transition: string + readonly transition: WorkspaceTransition readonly dry_run?: boolean readonly state?: string } -// From codersdk/organizations.go:56:6 +// From codersdk/organizations.go:67:6 export interface CreateWorkspaceRequest { readonly template_id: string readonly name: string @@ -131,7 +126,7 @@ export interface LoginWithPasswordResponse { readonly session_token: string } -// From codersdk/organizations.go:17:6 +// From codersdk/organizations.go:28:6 export interface Organization { readonly id: string readonly name: string @@ -155,7 +150,7 @@ export interface Pagination { readonly offset?: number } -// From codersdk/parameters.go:26:6 +// From codersdk/parameters.go:46:6 export interface Parameter { readonly id: string readonly created_at: string @@ -163,48 +158,42 @@ export interface Parameter { readonly scope: ParameterScope readonly scope_id: string readonly name: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterSourceScheme") - readonly source_scheme: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterDestinationScheme") - readonly destination_scheme: string + readonly source_scheme: ParameterSourceScheme + readonly destination_scheme: ParameterDestinationScheme } -// From codersdk/parameters.go:37:6 +// From codersdk/parameters.go:57:6 export interface ParameterSchema { readonly id: string readonly created_at: string readonly job_id: string readonly name: string readonly description: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterSourceScheme") - readonly default_source_scheme: string + readonly default_source_scheme: ParameterSourceScheme readonly default_source_value: string readonly allow_override_source: boolean - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterDestinationScheme") - readonly default_destination_scheme: string + readonly default_destination_scheme: ParameterDestinationScheme readonly allow_override_destination: boolean readonly default_refresh: string readonly redisplay_value: boolean readonly validation_error: string readonly validation_condition: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterTypeSystem") readonly validation_type_system: string readonly validation_value_type: string readonly validation_contains: string[] } -// From codersdk/provisionerdaemons.go:23:6 +// From codersdk/provisionerdaemons.go:40:6 export interface ProvisionerDaemon { readonly id: string readonly created_at: string readonly updated_at?: string readonly organization_id?: string readonly name: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerType") - readonly provisioners: string[] + readonly provisioners: ProvisionerType[] } -// From codersdk/provisionerdaemons.go:46:6 +// From codersdk/provisionerdaemons.go:70:6 export interface ProvisionerJob { readonly id: string readonly created_at: string @@ -215,14 +204,12 @@ export interface ProvisionerJob { readonly worker_id?: string } -// From codersdk/provisionerdaemons.go:56:6 +// From codersdk/provisionerdaemons.go:80:6 export interface ProvisionerJobLog { readonly id: string readonly created_at: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.LogSource") - readonly log_source: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.LogLevel") - readonly log_level: string + readonly log_source: LogSource + readonly log_level: LogLevel readonly stage: string readonly output: string } @@ -233,21 +220,20 @@ export interface Role { readonly display_name: string } -// From codersdk/templates.go:17:6 +// From codersdk/templates.go:15:6 export interface Template { readonly id: string readonly created_at: string readonly updated_at: string readonly organization_id: string readonly name: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerType") - readonly provisioner: string + readonly provisioner: ProvisionerType readonly active_version_id: string readonly workspace_owner_count: number readonly description: string } -// From codersdk/templateversions.go:16:6 +// From codersdk/templateversions.go:14:6 export interface TemplateVersion { readonly id: string readonly template_id?: string @@ -258,21 +244,27 @@ export interface TemplateVersion { readonly readme: string } -// From codersdk/templateversions.go:27:6 +// From codersdk/templateversions.go:25:6 export interface TemplateVersionParameter { - // Named type "github.com/coder/coder/coderd/database.ParameterValue" unknown, using "any" - // eslint-disable-next-line @typescript-eslint/no-explicit-any - readonly ParameterValue: any + readonly id: string + readonly created_at: string + readonly updated_at: string + readonly scope: ParameterScope + readonly scope_id: string + readonly name: string + readonly source_scheme: ParameterSourceScheme + readonly source_value: string + readonly destination_scheme: ParameterDestinationScheme readonly schema_id: string readonly default_source_value: boolean } -// From codersdk/templates.go:75:6 +// From codersdk/templates.go:73:6 export interface TemplateVersionsByTemplateRequest extends Pagination { readonly template_id: string } -// From codersdk/templates.go:29:6 +// From codersdk/templates.go:27:6 export interface UpdateActiveTemplateVersion { readonly id: string } @@ -293,12 +285,12 @@ export interface UpdateUserProfileRequest { readonly username: string } -// From codersdk/workspaces.go:134:6 +// From codersdk/workspaces.go:141:6 export interface UpdateWorkspaceAutostartRequest { readonly schedule: string } -// From codersdk/workspaces.go:154:6 +// From codersdk/workspaces.go:161:6 export interface UpdateWorkspaceAutostopRequest { readonly schedule: string } @@ -353,7 +345,7 @@ export interface UsersRequest extends Pagination { readonly status?: string } -// From codersdk/workspaces.go:20:6 +// From codersdk/workspaces.go:18:6 export interface Workspace { readonly id: string readonly created_at: string @@ -369,7 +361,7 @@ export interface Workspace { readonly autostop_schedule: string } -// From codersdk/workspaceresources.go:33:6 +// From codersdk/workspaceresources.go:31:6 export interface WorkspaceAgent { readonly id: string readonly created_at: string @@ -393,7 +385,7 @@ export interface WorkspaceAgentAuthenticateResponse { readonly session_token: string } -// From codersdk/workspaceresources.go:59:6 +// From codersdk/workspaceresources.go:57:6 export interface WorkspaceAgentInstanceMetadata { readonly jail_orchestrator: string readonly operating_system: string @@ -406,7 +398,7 @@ export interface WorkspaceAgentInstanceMetadata { readonly vnc: boolean } -// From codersdk/workspaceresources.go:51:6 +// From codersdk/workspaceresources.go:49:6 export interface WorkspaceAgentResourceMetadata { readonly memory_total: number readonly disk_total: number @@ -415,7 +407,7 @@ export interface WorkspaceAgentResourceMetadata { readonly cpu_mhz: number } -// From codersdk/workspacebuilds.go:18:6 +// From codersdk/workspacebuilds.go:24:6 export interface WorkspaceBuild { readonly id: string readonly created_at: string @@ -424,43 +416,65 @@ export interface WorkspaceBuild { readonly template_version_id: string readonly build_number: number readonly name: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.WorkspaceTransition") - readonly transition: string + readonly transition: WorkspaceTransition readonly initiator_id: string readonly job: ProvisionerJob } -// From codersdk/workspaces.go:57:6 +// From codersdk/workspaces.go:64:6 export interface WorkspaceBuildsRequest extends Pagination { readonly WorkspaceID: string } -// From codersdk/workspaces.go:173:6 +// From codersdk/workspaces.go:180:6 export interface WorkspaceFilter { readonly OrganizationID: string readonly Owner: string } -// From codersdk/workspaceresources.go:23:6 +// From codersdk/workspaceresources.go:21:6 export interface WorkspaceResource { readonly id: string readonly created_at: string readonly job_id: string - // This is likely an enum in an external package ("github.com/coder/coder/coderd/database.WorkspaceTransition") - readonly workspace_transition: string + readonly workspace_transition: WorkspaceTransition readonly type: string readonly name: string readonly agents?: WorkspaceAgent[] } -// From codersdk/parameters.go:16:6 +// From codersdk/provisionerdaemons.go:30:6 +export type LogLevel = "debug" | "error" | "info" | "trace" | "warn" + +// From codersdk/provisionerdaemons.go:23:6 +export type LogSource = "provisioner" | "provisioner_daemon" + +// From codersdk/parameters.go:30:6 +export type ParameterDestinationScheme = "environment_variable" | "none" | "provisioner_variable" + +// From codersdk/parameters.go:14:6 export type ParameterScope = "organization" | "template" | "user" | "workspace" -// From codersdk/provisionerdaemons.go:26:6 +// From codersdk/parameters.go:23:6 +export type ParameterSourceScheme = "data" | "none" + +// From codersdk/parameters.go:38:6 +export type ParameterTypeSystem = "hcl" | "none" + +// From codersdk/provisionerdaemons.go:50:6 export type ProvisionerJobStatus = "canceled" | "canceling" | "failed" | "pending" | "running" | "succeeded" +// From codersdk/organizations.go:14:6 +export type ProvisionerStorageMethod = "file" + +// From codersdk/organizations.go:20:6 +export type ProvisionerType = "echo" | "terraform" + // From codersdk/users.go:17:6 export type UserStatus = "active" | "suspended" -// From codersdk/workspaceresources.go:15:6 +// From codersdk/workspaceresources.go:13:6 export type WorkspaceAgentStatus = "connected" | "connecting" | "disconnected" + +// From codersdk/workspacebuilds.go:14:6 +export type WorkspaceTransition = "delete" | "start" | "stop" diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 8387e6b7b671c..e34b268f22e7a 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -62,7 +62,7 @@ export const MockProvisioner: TypesGen.ProvisionerDaemon = { created_at: "", id: "test-provisioner", name: "Test Provisioner", - provisioners: [], + provisioners: ["echo"], } export const MockProvisionerJob: TypesGen.ProvisionerJob = { @@ -84,7 +84,7 @@ export const MockTemplate: TypesGen.Template = { updated_at: "2022-05-18T17:39:01.382927298Z", organization_id: MockOrganization.id, name: "Test Template", - provisioner: MockProvisioner.id, + provisioner: MockProvisioner.provisioners[0], active_version_id: "", workspace_owner_count: 1, description: "This is a test description.", @@ -122,13 +122,13 @@ export const MockWorkspaceBuild: TypesGen.WorkspaceBuild = { workspace_id: "test-workspace", } -export const MockWorkspaceBuildStop = { +export const MockWorkspaceBuildStop: TypesGen.WorkspaceBuild = { ...MockWorkspaceBuild, id: "2", transition: "stop", } -export const MockWorkspaceBuildDelete = { +export const MockWorkspaceBuildDelete: TypesGen.WorkspaceBuild = { ...MockWorkspaceBuild, id: "3", transition: "delete",