MCPcopy
hub / github.com/semaphoreui/semaphore / GetRunner

Method GetRunner

api/runners/runners.go:112–269  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

110}
111
112func (c *RunnerController) GetRunner(w http.ResponseWriter, r *http.Request) {
113 runner := helpers.GetFromContext(r, "runner").(db.Runner)
114
115 clearCache := false
116
117 if err := c.runnerRepo.TouchRunner(runner); err != nil {
118 log.WithFields(log.Fields{
119 "runner_id": runner.ID,
120 "context": "runner",
121 }).WithError(err).Error("runner touch failed")
122 helpers.WriteError(w, err)
123 return
124 }
125
126 if runner.CleaningRequested != nil && (runner.Touched == nil || runner.CleaningRequested.After(*runner.Touched)) {
127 clearCache = true
128 }
129
130 data := runners.RunnerState{
131 AccessKeys: make(map[int]db.AccessKey),
132 ClearCache: clearCache,
133 }
134
135 if clearCache {
136 data.CacheCleanProjectID = runner.ProjectID
137 }
138
139 tasks := c.taskPool.GetRunningTasks()
140
141 for _, tsk := range tasks {
142 if tsk.Task.RunnerID == nil || *tsk.Task.RunnerID != runner.ID {
143 continue
144 }
145
146 if tsk.Task.Status == task_logger.TaskStartingStatus {
147
148 data.NewJobs = append(data.NewJobs, runners.JobData{
149 Username: tsk.Username,
150 IncomingVersion: tsk.IncomingVersion,
151 Alias: tsk.Alias,
152 Task: tsk.Task,
153 Template: tsk.Template,
154 Inventory: tsk.Inventory,
155 InventoryRepository: tsk.Inventory.Repository,
156 Repository: tsk.Repository,
157 Environment: tsk.Environment,
158 })
159
160 if tsk.Inventory.SSHKeyID != nil {
161 err := c.encryptionService.DeserializeSecret(&tsk.Inventory.SSHKey)
162 if err != nil {
163 log.WithFields(log.Fields{
164 "runner_id": runner.ID,
165 "task_id": tsk.Task.ID,
166 "inventory_id": tsk.Inventory.ID,
167 "access_key_id": tsk.Inventory.SSHKey.ID,
168 "context": "runner",
169 }).WithError(err).Error("Failed to decrypt inventory key")

Callers

nothing calls this directly

Calls 12

GetFromContextFunction · 0.92
WriteErrorFunction · 0.92
WriteJSONFunction · 0.92
loadPublicKeyFunction · 0.85
chunkRSAEncryptFunction · 0.85
GetRunningTasksMethod · 0.80
MarshalMethod · 0.80
WriteMethod · 0.80
TouchRunnerMethod · 0.65
DeserializeSecretMethod · 0.65
appendFunction · 0.50
ErrorMethod · 0.45

Tested by

no test coverage detected