mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: Force codersdk to not import anything from database (#1576)
* chore: Force codersdk to not import anything from database (linter rule) * chore: Move all database types in codersdk out
This commit is contained in:
+1
-1
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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{{
|
||||
|
||||
+1
-2
@@ -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 {
|
||||
|
||||
+2
-3
@@ -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())
|
||||
|
||||
+1
-2
@@ -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
|
||||
|
||||
+3
-4
@@ -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"
|
||||
|
||||
+1
-2
@@ -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 {
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+2
-3
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -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
|
||||
|
||||
+1
-2
@@ -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
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
+6
-6
@@ -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{{
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+12
-13
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
+3
-3
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -9,8 +9,19 @@ import (
|
||||
|
||||
"github.com/google/uuid"
|
||||
"golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
"github.com/coder/coder/coderd/database"
|
||||
type ProvisionerStorageMethod string
|
||||
|
||||
const (
|
||||
ProvisionerStorageMethodFile ProvisionerStorageMethod = "file"
|
||||
)
|
||||
|
||||
type ProvisionerType string
|
||||
|
||||
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"`
|
||||
|
||||
+50
-30
@@ -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) {
|
||||
|
||||
@@ -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.
|
||||
|
||||
+9
-11
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
+17
-11
@@ -9,23 +9,29 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
"github.com/coder/coder/coderd/database"
|
||||
type WorkspaceTransition string
|
||||
|
||||
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.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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!")
|
||||
}
|
||||
@@ -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"))
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user