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, )
| 1558 | |
| 1559 | // nolint:revive |
| 1560 | func 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 { |
no test coverage detected