mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
chore: use static params when dynamic param metadata is missing (#17836)
Existing template versions do not have the metadata (modules + plan) in the db. So revert to using static parameter information from the original template import. This data will still be served over the websocket.
This commit is contained in:
@ -1597,7 +1597,7 @@ type API struct {
|
||||
// passed to dbauthz.
|
||||
AccessControlStore *atomic.Pointer[dbauthz.AccessControlStore]
|
||||
PortSharer atomic.Pointer[portsharing.PortSharer]
|
||||
FileCache files.Cache
|
||||
FileCache *files.Cache
|
||||
PrebuildsClaimer atomic.Pointer[prebuilds.Claimer]
|
||||
PrebuildsReconciler atomic.Pointer[prebuilds.ReconciliationOrchestrator]
|
||||
|
||||
@ -1722,13 +1722,30 @@ func compressHandler(h http.Handler) http.Handler {
|
||||
return cmp.Handler(h)
|
||||
}
|
||||
|
||||
type MemoryProvisionerDaemonOption func(*memoryProvisionerDaemonOptions)
|
||||
|
||||
func MemoryProvisionerWithVersionOverride(version string) MemoryProvisionerDaemonOption {
|
||||
return func(opts *memoryProvisionerDaemonOptions) {
|
||||
opts.versionOverride = version
|
||||
}
|
||||
}
|
||||
|
||||
type memoryProvisionerDaemonOptions struct {
|
||||
versionOverride string
|
||||
}
|
||||
|
||||
// CreateInMemoryProvisionerDaemon is an in-memory connection to a provisionerd.
|
||||
// Useful when starting coderd and provisionerd in the same process.
|
||||
func (api *API) CreateInMemoryProvisionerDaemon(dialCtx context.Context, name string, provisionerTypes []codersdk.ProvisionerType) (client proto.DRPCProvisionerDaemonClient, err error) {
|
||||
return api.CreateInMemoryTaggedProvisionerDaemon(dialCtx, name, provisionerTypes, nil)
|
||||
}
|
||||
|
||||
func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, name string, provisionerTypes []codersdk.ProvisionerType, provisionerTags map[string]string) (client proto.DRPCProvisionerDaemonClient, err error) {
|
||||
func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, name string, provisionerTypes []codersdk.ProvisionerType, provisionerTags map[string]string, opts ...MemoryProvisionerDaemonOption) (client proto.DRPCProvisionerDaemonClient, err error) {
|
||||
options := &memoryProvisionerDaemonOptions{}
|
||||
for _, opt := range opts {
|
||||
opt(options)
|
||||
}
|
||||
|
||||
tracer := api.TracerProvider.Tracer(tracing.TracerName)
|
||||
clientSession, serverSession := drpcsdk.MemTransportPipe()
|
||||
defer func() {
|
||||
@ -1755,6 +1772,12 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
|
||||
return nil, xerrors.Errorf("failed to parse built-in provisioner key ID: %w", err)
|
||||
}
|
||||
|
||||
apiVersion := proto.CurrentVersion.String()
|
||||
if options.versionOverride != "" && flag.Lookup("test.v") != nil {
|
||||
// This should only be usable for unit testing. To fake a different provisioner version
|
||||
apiVersion = options.versionOverride
|
||||
}
|
||||
|
||||
//nolint:gocritic // in-memory provisioners are owned by system
|
||||
daemon, err := api.Database.UpsertProvisionerDaemon(dbauthz.AsSystemRestricted(dialCtx), database.UpsertProvisionerDaemonParams{
|
||||
Name: name,
|
||||
@ -1764,7 +1787,7 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
|
||||
Tags: provisionersdk.MutateTags(uuid.Nil, provisionerTags),
|
||||
LastSeenAt: sql.NullTime{Time: dbtime.Now(), Valid: true},
|
||||
Version: buildinfo.Version(),
|
||||
APIVersion: proto.CurrentVersion.String(),
|
||||
APIVersion: apiVersion,
|
||||
KeyID: keyID,
|
||||
})
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user