Thanks to visit codestin.com
Credit goes to github.com

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)