(w http.ResponseWriter, r *http.Request)
| 110 | } |
| 111 | |
| 112 | func (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") |
nothing calls this directly
no test coverage detected