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

Function newProvisionerDaemon

cli/server.go:1560–1682  ·  view source on GitHub ↗

nolint:revive

(
	ctx context.Context,
	coderAPI *coderd.API,
	metrics provisionerd.Metrics,
	logger slog.Logger,
	cfg *codersdk.DeploymentValues,
	cacheDir string,
	errCh chan error,
	wg *sync.WaitGroup,
	name string,
	provisionerTypes []codersdk.ProvisionerType,
)

Source from the content-addressed store, hash-verified

1558
1559// nolint:revive
1560func newProvisionerDaemon(
1561 ctx context.Context,
1562 coderAPI *coderd.API,
1563 metrics provisionerd.Metrics,
1564 logger slog.Logger,
1565 cfg *codersdk.DeploymentValues,
1566 cacheDir string,
1567 errCh chan error,
1568 wg *sync.WaitGroup,
1569 name string,
1570 provisionerTypes []codersdk.ProvisionerType,
1571) (srv *provisionerd.Server, err error) {
1572 ctx, cancel := context.WithCancel(ctx)
1573 defer func() {
1574 if err != nil {
1575 cancel()
1576 }
1577 }()
1578
1579 err = os.MkdirAll(cacheDir, 0o700)
1580 if err != nil {
1581 return nil, xerrors.Errorf("mkdir %q: %w", cacheDir, err)
1582 }
1583
1584 workDir := filepath.Join(cacheDir, "work")
1585 err = os.MkdirAll(workDir, 0o700)
1586 if err != nil {
1587 return nil, xerrors.Errorf("mkdir work dir: %w", err)
1588 }
1589
1590 // Omit any duplicates
1591 provisionerTypes = slice.Unique(provisionerTypes)
1592 provisionerLogger := logger.Named(fmt.Sprintf("provisionerd-%s", name))
1593
1594 // Populate the connector with the supported types.
1595 connector := provisionerd.LocalProvisioners{}
1596 for _, provisionerType := range provisionerTypes {
1597 switch provisionerType {
1598 case codersdk.ProvisionerTypeEcho:
1599 echoClient, echoServer := drpcsdk.MemTransportPipe()
1600 wg.Add(1)
1601 go func() {
1602 defer wg.Done()
1603 <-ctx.Done()
1604 _ = echoClient.Close()
1605 _ = echoServer.Close()
1606 }()
1607 wg.Add(1)
1608 go func() {
1609 defer wg.Done()
1610 defer cancel()
1611
1612 err := echo.Serve(ctx, &provisionersdk.ServeOptions{
1613 Listener: echoServer,
1614 WorkDirectory: workDir,
1615 Logger: logger.Named("echo"),
1616 })
1617 if err != nil {

Callers 1

ServerMethod · 0.85

Calls 15

UniqueFunction · 0.92
MemTransportPipeFunction · 0.92
ServeFunction · 0.92
GoFunction · 0.92
ServiceFunction · 0.92
ServeFunction · 0.92
NewFunction · 0.92
MkdirAllMethod · 0.80
NamedMethod · 0.80
TracerMethod · 0.80
AddMethod · 0.65

Tested by

no test coverage detected