feat: add dynamic parameters websocket endpoint (#17165)

This commit is contained in:
ケイラ
2025-04-10 14:08:50 -06:00
committed by GitHub
parent c9682cb6cf
commit 859dd2fc3f
19 changed files with 2291 additions and 347 deletions
+36 -2
View File
@@ -211,6 +211,8 @@ type Responses struct {
// transition responses. They are prioritized over the generic responses.
ProvisionApplyMap map[proto.WorkspaceTransition][]*proto.Response
ProvisionPlanMap map[proto.WorkspaceTransition][]*proto.Response
ExtraFiles map[string][]byte
}
// Tar returns a tar archive of responses to provisioner operations.
@@ -226,8 +228,12 @@ func TarWithOptions(ctx context.Context, logger slog.Logger, responses *Response
if responses == nil {
responses = &Responses{
ParseComplete, ApplyComplete, PlanComplete,
nil, nil,
Parse: ParseComplete,
ProvisionApply: ApplyComplete,
ProvisionPlan: PlanComplete,
ProvisionApplyMap: nil,
ProvisionPlanMap: nil,
ExtraFiles: nil,
}
}
if responses.ProvisionPlan == nil {
@@ -327,6 +333,25 @@ func TarWithOptions(ctx context.Context, logger slog.Logger, responses *Response
}
}
}
for name, content := range responses.ExtraFiles {
logger.Debug(ctx, "extra file", slog.F("name", name))
err := writer.WriteHeader(&tar.Header{
Name: name,
Size: int64(len(content)),
Mode: 0o644,
})
if err != nil {
return nil, err
}
n, err := writer.Write(content)
if err != nil {
return nil, err
}
logger.Debug(context.Background(), "extra file written", slog.F("name", name), slog.F("bytes_written", n))
}
// `writer.Close()` function flushes the writer buffer, and adds extra padding to create a legal tarball.
err := writer.Close()
if err != nil {
@@ -347,3 +372,12 @@ func WithResources(resources []*proto.Resource) *Responses {
}}}},
}
}
func WithExtraFiles(extraFiles map[string][]byte) *Responses {
return &Responses{
Parse: ParseComplete,
ProvisionApply: ApplyComplete,
ProvisionPlan: PlanComplete,
ExtraFiles: extraFiles,
}
}