MCPcopy Create free account
hub / github.com/cloudbase/garm / GenerateSystemdUnitFile

Method GenerateSystemdUnitFile

runner/metadata.go:474–520  ·  view source on GitHub ↗
(ctx context.Context, runAsUser string)

Source from the content-addressed store, hash-verified

472}
473
474func (r *Runner) GenerateSystemdUnitFile(ctx context.Context, runAsUser string) ([]byte, error) {
475 entity, err := auth.InstanceEntity(ctx)
476 if err != nil {
477 slog.ErrorContext(r.ctx, "failed to get entity", "error", err)
478 return nil, runnerErrors.ErrUnauthorized
479 }
480
481 serviceName, err := r.getServiceNameForEntity(entity)
482 if err != nil {
483 slog.ErrorContext(r.ctx, "failed to get service name", "error", err)
484 return nil, fmt.Errorf("error fetching service name: %w", err)
485 }
486
487 var unitTemplate *template.Template
488 switch entity.Credentials.ForgeType {
489 case params.GithubEndpointType:
490 unitTemplate, err = template.New("").Parse(githubSystemdUnitTemplate)
491 case params.GiteaEndpointType:
492 unitTemplate, err = template.New("").Parse(giteaSystemdUnitTemplate)
493 default:
494 slog.ErrorContext(r.ctx, "unknown forge type", "forge_type", entity.Credentials.ForgeType)
495 return nil, errors.New("unknown forge type")
496 }
497 if err != nil {
498 slog.ErrorContext(r.ctx, "failed to parse template", "error", err)
499 return nil, fmt.Errorf("error parsing template: %w", err)
500 }
501
502 if runAsUser == "" {
503 runAsUser = defaults.DefaultUser
504 }
505
506 data := struct {
507 ServiceName string
508 RunAsUser string
509 }{
510 ServiceName: serviceName,
511 RunAsUser: runAsUser,
512 }
513
514 var unitFile bytes.Buffer
515 if err := unitTemplate.Execute(&unitFile, data); err != nil {
516 slog.ErrorContext(r.ctx, "failed to execute template", "error", err)
517 return nil, fmt.Errorf("error executing template: %w", err)
518 }
519 return unitFile.Bytes(), nil
520}
521
522func (r *Runner) GetJITConfigFile(ctx context.Context, file string) ([]byte, error) {
523 if !auth.InstanceHasJITConfig(ctx) {

Calls 2

InstanceEntityFunction · 0.92