Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite87f31d

Browse files
committed
The full end-to-end operation works
1 parent0a83477 commite87f31d

File tree

14 files changed

+258
-29
lines changed

14 files changed

+258
-29
lines changed

‎.github/workflows/coder.yaml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ jobs:
151151
-run:go install gotest.tools/gotestsum@latest
152152

153153
-uses:hashicorp/setup-terraform@v1
154-
if:runner.os == 'Linux'
155154
with:
156155
terraform_version:1.1.2
157156
terraform_wrapper:false

‎.vscode/settings.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"coderdtest",
2929
"codersdk",
3030
"drpc",
31+
"drpcconn",
3132
"drpcmux",
3233
"drpcserver",
3334
"goleak",
@@ -44,6 +45,8 @@
4445
"retrier",
4546
"sdkproto",
4647
"stretchr",
48+
"tfexec",
49+
"tfstate",
4750
"unconvert",
4851
"xerrors",
4952
"yamux"

‎coderd/cmd/root.go‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"cdr.dev/slog"
1212
"cdr.dev/slog/sloggers/sloghuman"
1313
"github.com/coder/coder/coderd"
14+
"github.com/coder/coder/database"
1415
"github.com/coder/coder/database/databasefake"
1516
)
1617

@@ -24,6 +25,7 @@ func Root() *cobra.Command {
2425
handler:=coderd.New(&coderd.Options{
2526
Logger:slog.Make(sloghuman.Sink(os.Stderr)),
2627
Database:databasefake.New(),
28+
Pubsub:database.NewPubsubInMemory(),
2729
})
2830

2931
listener,err:=net.Listen("tcp",address)

‎coderd/coderdtest/coderdtest.go‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,15 @@ func (s *Server) AddProvisionerd(t *testing.T) io.Closer {
7878
ServeOptions:&provisionersdk.ServeOptions{
7979
Listener:tfServer,
8080
},
81+
Logger:slogtest.Make(t,nil).Named("terraform-provisioner").Leveled(slog.LevelDebug),
8182
})
8283
require.NoError(t,err)
8384
}()
8485

8586
closer:=provisionerd.New(s.Client.ProvisionerDaemonClient,&provisionerd.Options{
86-
Logger:slogtest.Make(t,nil).Named("provisionerd").Leveled(slog.LevelInfo),
87-
PollInterval:50*time.Millisecond,
87+
Logger:slogtest.Make(t,nil).Named("provisionerd").Leveled(slog.LevelInfo),
88+
PollInterval:50*time.Millisecond,
89+
UpdateInterval:50*time.Millisecond,
8890
Provisioners: provisionerd.Provisioners{
8991
string(database.ProvisionerTypeTerraform):proto.NewDRPCProvisionerClient(provisionersdk.Conn(tfClient)),
9092
},
@@ -101,6 +103,7 @@ func (s *Server) AddProvisionerd(t *testing.T) io.Closer {
101103
funcNew(t*testing.T)Server {
102104
// This can be hotswapped for a live database instance.
103105
db:=databasefake.New()
106+
pubsub:=database.NewPubsubInMemory()
104107
ifos.Getenv("DB")!="" {
105108
connectionURL,close,err:=postgres.Open()
106109
require.NoError(t,err)
@@ -113,11 +116,15 @@ func New(t *testing.T) Server {
113116
err=database.Migrate(sqlDB)
114117
require.NoError(t,err)
115118
db=database.New(sqlDB)
119+
120+
pubsub,err=database.NewPubsub(context.Background(),sqlDB,connectionURL)
121+
require.NoError(t,err)
116122
}
117123

118124
handler:=coderd.New(&coderd.Options{
119125
Logger:slogtest.Make(t,nil),
120126
Database:db,
127+
Pubsub:pubsub,
121128
})
122129
srv:=httptest.NewServer(handler)
123130
serverURL,err:=url.Parse(srv.URL)

‎coderd/provisionerdaemons.go‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func (api *api) provisionerDaemons(rw http.ResponseWriter, r *http.Request) {
3333
daemons,err:=api.Database.GetProvisionerDaemons(r.Context())
3434
iferrors.Is(err,sql.ErrNoRows) {
3535
err=nil
36+
daemons= []database.ProvisionerDaemon{}
3637
}
3738
iferr!=nil {
3839
httpapi.Write(rw,http.StatusInternalServerError, httpapi.Response{
@@ -76,9 +77,10 @@ func (api *api) provisionerDaemonsServe(rw http.ResponseWriter, r *http.Request)
7677
}
7778
mux:=drpcmux.New()
7879
err=proto.DRPCRegisterProvisionerDaemon(mux,&provisionerdServer{
79-
ID:daemon.ID,
80-
Database:api.Database,
81-
Pubsub:api.Pubsub,
80+
ID:daemon.ID,
81+
Database:api.Database,
82+
Pubsub:api.Pubsub,
83+
Provisioners:daemon.Provisioners,
8284
})
8385
iferr!=nil {
8486
_=conn.Close(websocket.StatusInternalError,fmt.Sprintf("drpc register provisioner daemon: %s",err))
@@ -103,9 +105,10 @@ type projectImportJob struct {
103105

104106
// Implementation of the provisioner daemon protobuf server.
105107
typeprovisionerdServerstruct {
106-
ID uuid.UUID
107-
Database database.Store
108-
Pubsub database.Pubsub
108+
ID uuid.UUID
109+
Provisioners []database.ProvisionerType
110+
Database database.Store
111+
Pubsub database.Pubsub
109112
}
110113

111114
// AcquireJob queries the database to lock a job.
@@ -120,7 +123,7 @@ func (server *provisionerdServer) AcquireJob(ctx context.Context, _ *proto.Empty
120123
UUID:server.ID,
121124
Valid:true,
122125
},
123-
Types:[]database.ProvisionerType{database.ProvisionerTypeTerraform},
126+
Types:server.Provisioners,
124127
})
125128
iferrors.Is(err,sql.ErrNoRows) {
126129
// The provisioner daemon assumes no jobs are available if

‎coderd/provisioners.go‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const (
1919
ProvisionerJobStatusPendingProvisionerJobStatus="pending"
2020
ProvisionerJobStatusRunningProvisionerJobStatus="running"
2121
ProvisionerJobStatusSucceededProvisionerJobStatus="succeeded"
22+
ProvisionerJobStatusCancelledProvisionerJobStatus="canceled"
2223
ProvisionerJobStatusFailedProvisionerJobStatus="failed"
2324
)
2425

@@ -41,6 +42,7 @@ func convertProvisionerJob(provisionerJob database.ProvisionerJob) ProvisionerJo
4142
Error:provisionerJob.Error.String,
4243
Provisioner:provisionerJob.Provisioner,
4344
}
45+
// Applying values optional to the struct.
4446
ifprovisionerJob.StartedAt.Valid {
4547
job.StartedAt=&provisionerJob.StartedAt.Time
4648
}
@@ -56,7 +58,7 @@ func convertProvisionerJob(provisionerJob database.ProvisionerJob) ProvisionerJo
5658

5759
switch {
5860
caseprovisionerJob.CancelledAt.Valid:
59-
job.Status=ProvisionerJobStatusFailed
61+
job.Status=ProvisionerJobStatusCancelled
6062
case!provisionerJob.StartedAt.Valid:
6163
job.Status=ProvisionerJobStatusPending
6264
caseprovisionerJob.CompletedAt.Valid:
@@ -68,5 +70,9 @@ func convertProvisionerJob(provisionerJob database.ProvisionerJob) ProvisionerJo
6870
job.Status=ProvisionerJobStatusRunning
6971
}
7072

73+
ifjob.Error!="" {
74+
job.Status=ProvisionerJobStatusFailed
75+
}
76+
7177
returnjob
7278
}

‎coderd/workspacehistory.go‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type WorkspaceHistory struct {
2727
ProjectHistoryID uuid.UUID`json:"project_history_id"`
2828
BeforeID uuid.UUID`json:"before_id"`
2929
AfterID uuid.UUID`json:"after_id"`
30+
Namestring`json:"name"`
3031
Transition database.WorkspaceTransition`json:"transition"`
3132
Initiatorstring`json:"initiator"`
3233
ProvisionProvisionerJob`json:"provision"`
@@ -144,7 +145,7 @@ func (api *api) postWorkspaceHistoryByUser(rw http.ResponseWriter, r *http.Reque
144145
}
145146

146147
workspaceHistory,err=db.InsertWorkspaceHistory(r.Context(), database.InsertWorkspaceHistoryParams{
147-
ID:uuid.New(),
148+
ID:workspaceHistoryID,
148149
CreatedAt:database.Now(),
149150
UpdatedAt:database.Now(),
150151
WorkspaceID:workspace.ID,
@@ -242,6 +243,7 @@ func convertWorkspaceHistory(workspaceHistory database.WorkspaceHistory, provisi
242243
ProjectHistoryID:workspaceHistory.ProjectHistoryID,
243244
BeforeID:workspaceHistory.BeforeID.UUID,
244245
AfterID:workspaceHistory.AfterID.UUID,
246+
Name:workspaceHistory.Name,
245247
Transition:workspaceHistory.Transition,
246248
Initiator:workspaceHistory.Initiator,
247249
Provision:convertProvisionerJob(provisionerJob),

‎coderd/workspacehistory_test.go‎

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,18 @@ func TestWorkspaceHistory(t *testing.T) {
3636
setupProjectHistory:=func(t*testing.T,client*codersdk.Client,user coderd.CreateInitialUserRequest,project coderd.Project,filesmap[string]string) coderd.ProjectHistory {
3737
varbuffer bytes.Buffer
3838
writer:=tar.NewWriter(&buffer)
39-
err:=writer.WriteHeader(&tar.Header{
40-
Name:"file",
41-
Size:1<<10,
42-
})
43-
require.NoError(t,err)
44-
_,err=writer.Write(make([]byte,1<<10))
39+
forpath,content:=rangefiles {
40+
err:=writer.WriteHeader(&tar.Header{
41+
Name:path,
42+
Size:int64(len(content)),
43+
})
44+
require.NoError(t,err)
45+
_,err=writer.Write([]byte(content))
46+
require.NoError(t,err)
47+
}
48+
err:=writer.Flush()
4549
require.NoError(t,err)
50+
4651
projectHistory,err:=client.CreateProjectHistory(context.Background(),user.Organization,project.Name, coderd.CreateProjectHistoryRequest{
4752
StorageMethod:database.ProjectStorageMethodInlineArchive,
4853
StorageSource:buffer.Bytes(),
@@ -65,7 +70,9 @@ func TestWorkspaceHistory(t *testing.T) {
6570
history,err:=server.Client.ListWorkspaceHistory(context.Background(),"",workspace.Name)
6671
require.NoError(t,err)
6772
require.Len(t,history,0)
68-
projectVersion:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
73+
projectVersion:=setupProjectHistory(t,server.Client,user,project,map[string]string{
74+
"example":"file",
75+
})
6976
_,err=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
7077
ProjectHistoryID:projectVersion.ID,
7178
Transition:database.WorkspaceTransitionCreate,
@@ -84,7 +91,9 @@ func TestWorkspaceHistory(t *testing.T) {
8491
project,workspace:=setupProjectAndWorkspace(t,server.Client,user)
8592
_,err:=server.Client.WorkspaceHistory(context.Background(),"",workspace.Name,"")
8693
require.Error(t,err)
87-
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
94+
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{
95+
"some":"file",
96+
})
8897
_,err=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
8998
ProjectHistoryID:projectHistory.ID,
9099
Transition:database.WorkspaceTransitionCreate,
@@ -100,12 +109,23 @@ func TestWorkspaceHistory(t *testing.T) {
100109
_=server.AddProvisionerd(t)
101110
user:=server.RandomInitialUser(t)
102111
project,workspace:=setupProjectAndWorkspace(t,server.Client,user)
103-
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
112+
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{
113+
"main.tf":`resource "null_resource" "example" {}`,
114+
})
104115
_,err:=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
105116
ProjectHistoryID:projectHistory.ID,
106117
Transition:database.WorkspaceTransitionCreate,
107118
})
108119
require.NoError(t,err)
120+
121+
varworkspaceHistory coderd.WorkspaceHistory
122+
require.Eventually(t,func()bool {
123+
workspaceHistory,err=server.Client.WorkspaceHistory(context.Background(),"",workspace.Name,"")
124+
require.NoError(t,err)
125+
returnworkspaceHistory.Provision.Status.Completed()
126+
},5*time.Second,50*time.Millisecond)
127+
require.Equal(t,"",workspaceHistory.Provision.Error)
128+
require.Equal(t,coderd.ProvisionerJobStatusSucceeded,workspaceHistory.Provision.Status)
109129
})
110130

111131
t.Run("CreateHistoryAlreadyInProgress",func(t*testing.T) {
@@ -114,7 +134,9 @@ func TestWorkspaceHistory(t *testing.T) {
114134
_=server.AddProvisionerd(t)
115135
user:=server.RandomInitialUser(t)
116136
project,workspace:=setupProjectAndWorkspace(t,server.Client,user)
117-
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
137+
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{
138+
"some":"content",
139+
})
118140

119141
_,err:=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
120142
ProjectHistoryID:projectHistory.ID,

‎codersdk/projects_test.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func TestProjects(t *testing.T) {
7171
require.NoError(t,err)
7272
})
7373

74-
t.Run("UnauthenticatedHistorys",func(t*testing.T) {
74+
t.Run("UnauthenticatedHistory",func(t*testing.T) {
7575
t.Parallel()
7676
server:=coderdtest.New(t)
7777
_,err:=server.Client.ListProjectHistory(context.Background(),"org","project")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp