Skip to content

Commit d63d483

Browse files
feat: apply exit hooks via yaml spec
1 parent 022b980 commit d63d483

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

cmd/ctrlc/root/apply/deployment.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ func processDeployment(
3232
body.JobAgentConfig = &deployment.JobAgent.Config
3333
}
3434

35+
if deployment.ExitHooks != nil {
36+
exitHooks := []api.ExitHook{}
37+
for _, exitHook := range *deployment.ExitHooks {
38+
jobAgentUUID, err := uuid.Parse(exitHook.JobAgent.Id)
39+
if err != nil {
40+
log.Error("Failed to parse job agent ID as UUID", "id", exitHook.JobAgent.Id, "error", err)
41+
return
42+
}
43+
exitHooks = append(exitHooks, api.ExitHook{
44+
Name: exitHook.Name,
45+
JobAgentId: jobAgentUUID,
46+
JobAgentConfig: exitHook.JobAgent.Config,
47+
})
48+
}
49+
body.ExitHooks = &exitHooks
50+
}
51+
3552
id, err := upsertDeployment(ctx, client, body)
3653
if err != nil {
3754
log.Error("Failed to create deployment", "name", deployment.Name, "error", err)

cmd/ctrlc/root/apply/types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ type DeploymentVariable struct {
4444
Values []DeploymentVariableValue `yaml:"values"`
4545
}
4646

47+
type ExitHook struct {
48+
Name string `yaml:"name"`
49+
JobAgent *JobAgent `yaml:"jobAgent"`
50+
}
51+
4752
type Deployment struct {
4853
Slug string `yaml:"slug"`
4954
Name string `yaml:"name"`
@@ -52,6 +57,7 @@ type Deployment struct {
5257
ResourceSelector *map[string]any `yaml:"resourceSelector,omitempty"`
5358
Metadata *map[string]string `yaml:"metadata,omitempty"`
5459
Variables *[]DeploymentVariable `yaml:"variables,omitempty"`
60+
ExitHooks *[]ExitHook `yaml:"exitHooks,omitempty"`
5561
}
5662

5763
type JobAgent struct {

internal/api/client.gen.go

Lines changed: 15 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)