Skip to content

Commit 04fd96a

Browse files
authored
feat(coderd): add provisioner_daemons to /debug/health endpoint (#11393)
Adds a healthcheck for provisioner daemons to /debug/health endpoint.
1 parent 31f8fac commit 04fd96a

File tree

23 files changed

+791
-94
lines changed

23 files changed

+791
-94
lines changed

coderd/apidoc/docs.go

Lines changed: 41 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 47 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/coderd.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,12 @@ func New(options *Options) *API {
440440
CurrentVersion: buildinfo.Version(),
441441
WorkspaceProxiesFetchUpdater: *(options.WorkspaceProxiesFetchUpdater).Load(),
442442
},
443+
ProvisionerDaemons: healthcheck.ProvisionerDaemonsReportDeps{
444+
CurrentVersion: buildinfo.Version(),
445+
CurrentAPIMajorVersion: provisionersdk.CurrentMajor,
446+
Store: options.Database,
447+
// TimeNow and StaleInterval set to defaults, see healthcheck/provisioner.go
448+
},
443449
})
444450
}
445451
}
@@ -1188,7 +1194,7 @@ func (api *API) CreateInMemoryProvisionerDaemon(ctx context.Context, name string
11881194
Tags: provisionersdk.MutateTags(uuid.Nil, nil),
11891195
LastSeenAt: sql.NullTime{Time: dbtime.Now(), Valid: true},
11901196
Version: buildinfo.Version(),
1191-
APIVersion: provisionersdk.APIVersionCurrent,
1197+
APIVersion: provisionersdk.VersionCurrent.String(),
11921198
})
11931199
if err != nil {
11941200
return nil, xerrors.Errorf("failed to create in-memory provisioner daemon: %w", err)

coderd/database/db2sdk/db2sdk.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,3 +416,19 @@ func Apps(dbApps []database.WorkspaceApp, agent database.WorkspaceAgent, ownerNa
416416
}
417417
return apps
418418
}
419+
420+
func ProvisionerDaemon(dbDaemon database.ProvisionerDaemon) codersdk.ProvisionerDaemon {
421+
result := codersdk.ProvisionerDaemon{
422+
ID: dbDaemon.ID,
423+
CreatedAt: dbDaemon.CreatedAt,
424+
LastSeenAt: codersdk.NullTime{NullTime: dbDaemon.LastSeenAt},
425+
Name: dbDaemon.Name,
426+
Tags: dbDaemon.Tags,
427+
Version: dbDaemon.Version,
428+
APIVersion: dbDaemon.APIVersion,
429+
}
430+
for _, provisionerType := range dbDaemon.Provisioners {
431+
result.Provisioners = append(result.Provisioners, codersdk.ProvisionerType(provisionerType))
432+
}
433+
return result
434+
}

coderd/database/dbpurge/dbpurge_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
218218
CreatedAt: now.Add(-14 * 24 * time.Hour),
219219
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-7 * 24 * time.Hour).Add(time.Minute)},
220220
Version: "1.0.0",
221-
APIVersion: provisionersdk.APIVersionCurrent,
221+
APIVersion: provisionersdk.VersionCurrent.String(),
222222
})
223223
require.NoError(t, err)
224224
_, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
@@ -229,7 +229,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
229229
CreatedAt: now.Add(-8 * 24 * time.Hour),
230230
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-8 * 24 * time.Hour).Add(time.Hour)},
231231
Version: "1.0.0",
232-
APIVersion: provisionersdk.APIVersionCurrent,
232+
APIVersion: provisionersdk.VersionCurrent.String(),
233233
})
234234
require.NoError(t, err)
235235
_, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
@@ -242,7 +242,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
242242
},
243243
CreatedAt: now.Add(-9 * 24 * time.Hour),
244244
Version: "1.0.0",
245-
APIVersion: provisionersdk.APIVersionCurrent,
245+
APIVersion: provisionersdk.VersionCurrent.String(),
246246
})
247247
require.NoError(t, err)
248248
_, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
@@ -256,7 +256,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
256256
CreatedAt: now.Add(-6 * 24 * time.Hour),
257257
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)},
258258
Version: "1.0.0",
259-
APIVersion: provisionersdk.APIVersionCurrent,
259+
APIVersion: provisionersdk.VersionCurrent.String(),
260260
})
261261
require.NoError(t, err)
262262

coderd/healthcheck/health/model.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ const (
3434

3535
CodeDERPNodeUsesWebsocket Code = `EDERP01`
3636
CodeDERPOneNodeUnhealthy Code = `EDERP02`
37+
38+
CodeProvisionerDaemonsNoProvisionerDaemons Code = `EPD01`
39+
CodeProvisionerDaemonVersionMismatch Code = `EPD02`
40+
CodeProvisionerDaemonAPIMajorVersionDeprecated Code = `EPD03`
3741
)
3842

3943
// @typescript-generate Severity

0 commit comments

Comments
 (0)