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

Method paramsWorkflowJobToParamsJob

runner/pool/pool.go:1164–1204  ·  view source on GitHub ↗

paramsWorkflowJobToParamsJob returns a params.Job from a params.WorkflowJob, and aditionally determines if the runner belongs to this pool or not. It will always return a valid params.Job, even if it errs out. This allows us to still update the job in the database, even if we determined that it wasn

(job params.WorkflowJob)

Source from the content-addressed store, hash-verified

1162// decissions based on the status of saved jobs. A "queued" job will prompt garm to search for an appropriate pool
1163// and spin up a runner there if no other idle runner exists to pick it up.
1164func (r *basePoolManager) paramsWorkflowJobToParamsJob(job params.WorkflowJob) (params.Job, error) {
1165 asUUID, err := uuid.Parse(r.ID())
1166 if err != nil {
1167 return params.Job{}, fmt.Errorf("error parsing pool ID as UUID: %w", err)
1168 }
1169
1170 jobParams := params.Job{
1171 WorkflowJobID: job.WorkflowJob.ID,
1172 Action: job.Action,
1173 RunID: job.WorkflowJob.RunID,
1174 Status: job.WorkflowJob.Status,
1175 Conclusion: job.WorkflowJob.Conclusion,
1176 StartedAt: job.WorkflowJob.StartedAt,
1177 CompletedAt: job.WorkflowJob.CompletedAt,
1178 Name: job.WorkflowJob.Name,
1179 GithubRunnerID: job.WorkflowJob.RunnerID,
1180 RunnerName: job.WorkflowJob.RunnerName,
1181 RunnerGroupID: job.WorkflowJob.RunnerGroupID,
1182 RunnerGroupName: job.WorkflowJob.RunnerGroupName,
1183 RepositoryName: job.Repository.Name,
1184 RepositoryOwner: job.Repository.Owner.Login,
1185 Labels: job.WorkflowJob.Labels,
1186 }
1187
1188 if job.Repository.HTMLURL != "" && job.WorkflowJob.RunID != 0 {
1189 jobParams.WorkflowRunURL = fmt.Sprintf("%s/actions/runs/%d", strings.TrimRight(job.Repository.HTMLURL, "/"), job.WorkflowJob.RunID)
1190 }
1191
1192 switch r.entity.EntityType {
1193 case params.ForgeEntityTypeEnterprise:
1194 jobParams.EnterpriseID = &asUUID
1195 case params.ForgeEntityTypeRepository:
1196 jobParams.RepoID = &asUUID
1197 case params.ForgeEntityTypeOrganization:
1198 jobParams.OrgID = &asUUID
1199 default:
1200 return jobParams, fmt.Errorf("unknown pool type: %s", r.entity.EntityType)
1201 }
1202
1203 return jobParams, nil
1204}
1205
1206func (r *basePoolManager) poolLabel(poolID string) string {
1207 return fmt.Sprintf("%s=%s", poolIDLabelprefix, poolID)

Callers 1

HandleWorkflowJobMethod · 0.95

Calls 1

IDMethod · 0.95

Tested by

no test coverage detected