Skip to content

Commit a8d00d8

Browse files
committed
Move jobs to their own APIs
1 parent d2cbf36 commit a8d00d8

26 files changed

+1071
-802
lines changed

cli/projectcreate.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ func validateProjectVersionSource(cmd *cobra.Command, client *codersdk.Client, o
139139
return nil, err
140140
}
141141

142-
job, err := client.CreateProjectVersionImportProvisionerJob(cmd.Context(), organization.Name, coderd.CreateProjectImportJobRequest{
142+
before := time.Now()
143+
job, err := client.CreateProjectImportJob(cmd.Context(), organization.Name, coderd.CreateProjectImportJobRequest{
143144
StorageMethod: database.ProvisionerStorageMethodFile,
144145
StorageSource: resp.Hash,
145146
Provisioner: provisioner,
@@ -148,10 +149,8 @@ func validateProjectVersionSource(cmd *cobra.Command, client *codersdk.Client, o
148149
if err != nil {
149150
return nil, err
150151
}
151-
152152
spin.Suffix = " Waiting for the import to complete..."
153-
154-
logs, err := client.FollowProvisionerJobLogsAfter(cmd.Context(), organization.Name, job.ID, time.Time{})
153+
logs, err := client.ProjectImportJobLogsAfter(cmd.Context(), organization.Name, job.ID, before)
155154
if err != nil {
156155
return nil, err
157156
}
@@ -164,16 +163,15 @@ func validateProjectVersionSource(cmd *cobra.Command, client *codersdk.Client, o
164163
logBuffer = append(logBuffer, log)
165164
}
166165

167-
job, err = client.ProvisionerJob(cmd.Context(), organization.Name, job.ID)
166+
job, err = client.ProjectImportJob(cmd.Context(), organization.Name, job.ID)
168167
if err != nil {
169168
return nil, err
170169
}
171-
172-
parameterSchemas, err := client.ProvisionerJobParameterSchemas(cmd.Context(), organization.Name, job.ID)
170+
parameterSchemas, err := client.ProjectImportJobSchemas(cmd.Context(), organization.Name, job.ID)
173171
if err != nil {
174172
return nil, err
175173
}
176-
parameterValues, err := client.ProvisionerJobParameterValues(cmd.Context(), organization.Name, job.ID)
174+
parameterValues, err := client.ProjectImportJobParameters(cmd.Context(), organization.Name, job.ID)
177175
if err != nil {
178176
return nil, err
179177
}
@@ -218,7 +216,7 @@ func validateProjectVersionSource(cmd *cobra.Command, client *codersdk.Client, o
218216

219217
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "%s Successfully imported project source!\n", color.HiGreenString("✓"))
220218

221-
resources, err := client.ProvisionerJobResources(cmd.Context(), organization.Name, job.ID)
219+
resources, err := client.ProjectImportJobResources(cmd.Context(), organization.Name, job.ID)
222220
if err != nil {
223221
return nil, err
224222
}

cli/workspacecreate.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ func workspaceCreate() *cobra.Command {
6464
if err != nil {
6565
return err
6666
}
67-
parameterSchemas, err := client.ProvisionerJobParameterSchemas(cmd.Context(), organization.Name, projectVersion.ImportJobID)
67+
parameterSchemas, err := client.ProjectImportJobSchemas(cmd.Context(), organization.Name, projectVersion.ImportJobID)
6868
if err != nil {
6969
return err
7070
}
71-
parameterValues, err := client.ProvisionerJobParameterValues(cmd.Context(), organization.Name, projectVersion.ImportJobID)
71+
parameterValues, err := client.ProjectImportJobParameters(cmd.Context(), organization.Name, projectVersion.ImportJobID)
7272
if err != nil {
7373
return err
7474
}
75-
resources, err := client.ProvisionerJobResources(cmd.Context(), organization.Name, projectVersion.ImportJobID)
75+
resources, err := client.ProjectImportJobResources(cmd.Context(), organization.Name, projectVersion.ImportJobID)
7676
if err != nil {
7777
return err
7878
}
@@ -108,7 +108,7 @@ func workspaceCreate() *cobra.Command {
108108
return err
109109
}
110110

111-
logs, err := client.FollowProvisionerJobLogsAfter(cmd.Context(), organization.Name, history.ProvisionJobID, time.Time{})
111+
logs, err := client.WorkspaceProvisionJobLogsAfter(cmd.Context(), organization.Name, history.ProvisionJobID, time.Time{})
112112
if err != nil {
113113
return err
114114
}

cli/workspacecreate_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func TestWorkspaceCreate(t *testing.T) {
1717
client := coderdtest.New(t)
1818
user := coderdtest.CreateInitialUser(t, client)
1919
_ = coderdtest.NewProvisionerDaemon(t, client)
20-
job := coderdtest.CreateProjectImportProvisionerJob(t, client, user.Organization, &echo.Responses{
20+
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, &echo.Responses{
2121
Parse: echo.ParseComplete,
2222
Provision: []*proto.Provision_Response{{
2323
Type: &proto.Provision_Response_Complete{
@@ -30,7 +30,7 @@ func TestWorkspaceCreate(t *testing.T) {
3030
},
3131
}},
3232
})
33-
coderdtest.AwaitProvisionerJob(t, client, user.Organization, job.ID)
33+
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)
3434
project := coderdtest.CreateProject(t, client, user.Organization, job.ID)
3535
cmd, root := clitest.New(t, "workspaces", "create", project.Name)
3636
clitest.SetupConfig(t, client, root)

coderd/coderd.go

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -107,27 +107,38 @@ func New(options *Options) http.Handler {
107107
r.Post("/", api.postFiles)
108108
})
109109

110-
r.Route("/provisioners", func(r chi.Router) {
111-
r.Route("/daemons", func(r chi.Router) {
112-
r.Get("/", api.provisionerDaemons)
113-
r.Get("/serve", api.provisionerDaemonsServe)
110+
r.Route("/projectimport/{organization}", func(r chi.Router) {
111+
r.Use(
112+
httpmw.ExtractAPIKey(options.Database, nil),
113+
httpmw.ExtractOrganizationParam(options.Database),
114+
)
115+
r.Post("/", api.postProjectImportByOrganization)
116+
r.Route("/{provisionerjob}", func(r chi.Router) {
117+
r.Use(httpmw.ExtractProvisionerJobParam(options.Database))
118+
r.Get("/", api.provisionerJobByID)
119+
r.Get("/schemas", api.projectImportJobSchemasByID)
120+
r.Get("/parameters", api.projectImportJobParametersByID)
121+
r.Get("/resources", api.projectImportJobResourcesByID)
122+
r.Get("/logs", api.provisionerJobLogsByID)
114123
})
115-
r.Route("/jobs/{organization}", func(r chi.Router) {
116-
r.Use(
117-
httpmw.ExtractAPIKey(options.Database, nil),
118-
httpmw.ExtractOrganizationParam(options.Database),
119-
)
120-
r.Post("/import", api.postProvisionerImportJobByOrganization)
121-
r.Route("/{provisionerjob}", func(r chi.Router) {
122-
r.Use(httpmw.ExtractProvisionerJobParam(options.Database))
123-
r.Get("/", api.provisionerJobByOrganization)
124-
r.Get("/schemas", api.provisionerJobParameterSchemasByID)
125-
r.Get("/computed", api.provisionerJobComputedParametersByID)
126-
r.Get("/resources", api.provisionerJobResourcesByID)
127-
r.Get("/logs", api.provisionerJobLogsByID)
128-
})
124+
})
125+
126+
r.Route("/workspaceprovision/{organization}", func(r chi.Router) {
127+
r.Use(
128+
httpmw.ExtractAPIKey(options.Database, nil),
129+
httpmw.ExtractOrganizationParam(options.Database),
130+
)
131+
r.Route("/{provisionerjob}", func(r chi.Router) {
132+
r.Use(httpmw.ExtractProvisionerJobParam(options.Database))
133+
r.Get("/", api.provisionerJobByID)
134+
r.Get("/logs", api.provisionerJobLogsByID)
129135
})
130136
})
137+
138+
r.Route("/provisioners/daemons", func(r chi.Router) {
139+
r.Get("/", api.provisionerDaemons)
140+
r.Get("/serve", api.provisionerDaemonsServe)
141+
})
131142
})
132143
r.NotFound(site.Handler(options.Logger).ServeHTTP)
133144
return r

coderd/coderdtest/coderdtest.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ import (
2828
"github.com/coder/coder/provisionersdk/proto"
2929
)
3030

31-
// New constructs a new coderd test instance. This returned Server
32-
// should contain no side-effects.
31+
// New constructs an in-memory coderd instance and returns
32+
// the connected client.
3333
func New(t *testing.T) *codersdk.Client {
3434
// This can be hotswapped for a live database instance.
3535
db := databasefake.New()
@@ -121,15 +121,15 @@ func CreateInitialUser(t *testing.T, client *codersdk.Client) coderd.CreateIniti
121121
return req
122122
}
123123

124-
// CreateProjectImportProvisionerJob creates a project import provisioner job
124+
// CreateProjectImportJob creates a project import provisioner job
125125
// with the responses provided. It uses the "echo" provisioner for compatibility
126126
// with testing.
127-
func CreateProjectImportProvisionerJob(t *testing.T, client *codersdk.Client, organization string, res *echo.Responses) coderd.ProvisionerJob {
127+
func CreateProjectImportJob(t *testing.T, client *codersdk.Client, organization string, res *echo.Responses) coderd.ProvisionerJob {
128128
data, err := echo.Tar(res)
129129
require.NoError(t, err)
130130
file, err := client.UploadFile(context.Background(), codersdk.ContentTypeTar, data)
131131
require.NoError(t, err)
132-
job, err := client.CreateProjectVersionImportProvisionerJob(context.Background(), organization, coderd.CreateProjectImportJobRequest{
132+
job, err := client.CreateProjectImportJob(context.Background(), organization, coderd.CreateProjectImportJobRequest{
133133
StorageSource: file.Hash,
134134
StorageMethod: database.ProvisionerStorageMethodFile,
135135
Provisioner: database.ProvisionerTypeEcho,
@@ -149,12 +149,24 @@ func CreateProject(t *testing.T, client *codersdk.Client, organization string, j
149149
return project
150150
}
151151

152-
// AwaitProvisionerJob awaits for a job to reach completed status.
153-
func AwaitProvisionerJob(t *testing.T, client *codersdk.Client, organization string, job uuid.UUID) coderd.ProvisionerJob {
152+
// AwaitProjectImportJob awaits for an import job to reach completed status.
153+
func AwaitProjectImportJob(t *testing.T, client *codersdk.Client, organization string, job uuid.UUID) coderd.ProvisionerJob {
154154
var provisionerJob coderd.ProvisionerJob
155155
require.Eventually(t, func() bool {
156156
var err error
157-
provisionerJob, err = client.ProvisionerJob(context.Background(), organization, job)
157+
provisionerJob, err = client.ProjectImportJob(context.Background(), organization, job)
158+
require.NoError(t, err)
159+
return provisionerJob.Status.Completed()
160+
}, 3*time.Second, 25*time.Millisecond)
161+
return provisionerJob
162+
}
163+
164+
// AwaitWorkspaceProvisionJob awaits for a workspace provision job to reach completed status.
165+
func AwaitWorkspaceProvisionJob(t *testing.T, client *codersdk.Client, organization string, job uuid.UUID) coderd.ProvisionerJob {
166+
var provisionerJob coderd.ProvisionerJob
167+
require.Eventually(t, func() bool {
168+
var err error
169+
provisionerJob, err = client.WorkspaceProvisionJob(context.Background(), organization, job)
158170
require.NoError(t, err)
159171
return provisionerJob.Status.Completed()
160172
}, 3*time.Second, 25*time.Millisecond)

coderd/coderdtest/coderdtest_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ func TestNew(t *testing.T) {
2222
client := coderdtest.New(t)
2323
user := coderdtest.CreateInitialUser(t, client)
2424
closer := coderdtest.NewProvisionerDaemon(t, client)
25-
job := coderdtest.CreateProjectImportProvisionerJob(t, client, user.Organization, nil)
26-
coderdtest.AwaitProvisionerJob(t, client, user.Organization, job.ID)
25+
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, nil)
26+
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)
2727
project := coderdtest.CreateProject(t, client, user.Organization, job.ID)
2828
workspace := coderdtest.CreateWorkspace(t, client, "me", project.ID)
2929
history, err := client.CreateWorkspaceHistory(context.Background(), "me", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
3030
ProjectVersionID: project.ActiveVersionID,
3131
Transition: database.WorkspaceTransitionStart,
3232
})
3333
require.NoError(t, err)
34-
coderdtest.AwaitProvisionerJob(t, client, user.Organization, history.ProvisionJobID)
34+
coderdtest.AwaitWorkspaceProvisionJob(t, client, user.Organization, history.ProvisionJobID)
3535
closer.Close()
3636
}

coderd/parameters.go

Lines changed: 0 additions & 109 deletions
This file was deleted.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy