MCPcopy Index your code
hub / github.com/coder/coder / CreateInMemoryTaggedProvisionerDaemon

Method CreateInMemoryTaggedProvisionerDaemon

coderd/coderd.go:2399–2527  ·  view source on GitHub ↗
(dialCtx context.Context, name string, provisionerTypes []codersdk.ProvisionerType, provisionerTags map[string]string, opts ...MemoryProvisionerDaemonOption)

Source from the content-addressed store, hash-verified

2397}
2398
2399func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, name string, provisionerTypes []codersdk.ProvisionerType, provisionerTags map[string]string, opts ...MemoryProvisionerDaemonOption) (client proto.DRPCProvisionerDaemonClient, err error) {
2400 options := &memoryProvisionerDaemonOptions{}
2401 for _, opt := range opts {
2402 opt(options)
2403 }
2404
2405 tracer := api.TracerProvider.Tracer(tracing.TracerName)
2406 clientSession, serverSession := drpcsdk.MemTransportPipe()
2407 defer func() {
2408 if err != nil {
2409 _ = clientSession.Close()
2410 _ = serverSession.Close()
2411 }
2412 }()
2413
2414 // All in memory provisioners will be part of the default org for now.
2415 //nolint:gocritic // in-memory provisioners are owned by system
2416 defaultOrg, err := api.Database.GetDefaultOrganization(dbauthz.AsSystemRestricted(dialCtx))
2417 if err != nil {
2418 return nil, xerrors.Errorf("unable to fetch default org for in memory provisioner: %w", err)
2419 }
2420
2421 dbTypes := make([]database.ProvisionerType, 0, len(provisionerTypes))
2422 for _, tp := range provisionerTypes {
2423 dbTypes = append(dbTypes, database.ProvisionerType(tp))
2424 }
2425
2426 keyID, err := uuid.Parse(string(codersdk.ProvisionerKeyIDBuiltIn))
2427 if err != nil {
2428 return nil, xerrors.Errorf("failed to parse built-in provisioner key ID: %w", err)
2429 }
2430
2431 apiVersion := proto.CurrentVersion.String()
2432 if options.versionOverride != "" && flag.Lookup("test.v") != nil {
2433 // This should only be usable for unit testing. To fake a different provisioner version
2434 apiVersion = options.versionOverride
2435 }
2436
2437 //nolint:gocritic // in-memory provisioners are owned by system
2438 daemon, err := api.Database.UpsertProvisionerDaemon(dbauthz.AsSystemRestricted(dialCtx), database.UpsertProvisionerDaemonParams{
2439 Name: name,
2440 OrganizationID: defaultOrg.ID,
2441 CreatedAt: dbtime.Now(),
2442 Provisioners: dbTypes,
2443 Tags: provisionersdk.MutateTags(uuid.Nil, provisionerTags),
2444 LastSeenAt: sql.NullTime{Time: dbtime.Now(), Valid: true},
2445 Version: buildinfo.Version(),
2446 APIVersion: apiVersion,
2447 KeyID: keyID,
2448 })
2449 if err != nil {
2450 return nil, xerrors.Errorf("failed to create in-memory provisioner daemon: %w", err)
2451 }
2452
2453 mux := drpcmux.New()
2454 api.Logger.Debug(dialCtx, "starting in-memory provisioner daemon", slog.F("name", name))
2455 logger := api.Logger.Named(fmt.Sprintf("inmem-provisionerd-%s", name))
2456 srv, err := provisionerdserver.NewServer(

Callers 2

Calls 15

MemTransportPipeFunction · 0.92
AsSystemRestrictedFunction · 0.92
ProvisionerTypeTypeAlias · 0.92
NowFunction · 0.92
MutateTagsFunction · 0.92
VersionFunction · 0.92
NewServerFunction · 0.92
TagsTypeAlias · 0.92
DefaultDRPCOptionsFunction · 0.92
TracerMethod · 0.80

Tested by

no test coverage detected