initial implementation #1

Merged
lerentis merged 7 commits from init into main 2023-11-04 11:17:41 +00:00
2 changed files with 21 additions and 8 deletions
Showing only changes of commit b313c1b5aa - Show all commits

View File

@ -29,7 +29,7 @@ package models
}
*/
type PendingInformation struct {
type JobInformation struct {
ID int `json:"id"`
Data string `json:"data"`
Labels map[string]string `json:"labels"`
@ -48,9 +48,9 @@ type Stats struct {
}
type QueueInfo struct {
Pending []PendingInformation `json:"pending,omitempty"`
Pending []JobInformation `json:"pending,omitempty"`
WaitingOnDeps string `json:"-"` // dont need those
Running int `json:"running,omitempty"`
Running []JobInformation `json:"running,omitempty"`
Stats Stats `json:"stats"`
Paused bool `json:"paused"`
}

View File

@ -64,14 +64,27 @@ func CheckPending(cfg *config.Config) (bool, error) {
}
func CheckRunning(cfg *config.Config) (bool, error) {
expectedKV := strings.Split(cfg.WoodpeckerLabelSelector, "=")
queueInfo := new(models.QueueInfo)
err := QueueInfo(cfg, queueInfo)
if err != nil {
return false, errors.New(fmt.Sprintf("Error from QueueInfo: %s", err.Error()))
}
// TODO: create and parse running object. there may be jobs that are not for us
if queueInfo.Stats.RunningCount > 0 {
for _, runningJobs := range queueInfo.Running {
val, exists := runningJobs.Labels[expectedKV[0]]
if exists && val == expectedKV[1] {
log.WithFields(log.Fields{
"Caller": "CheckRunning",
}).Info("Found running job for us")
return true, nil
} else {
log.WithFields(log.Fields{
"Caller": "CheckRunning",
}).Info("No running job for us")
return false, nil
}
}
}
return false, nil
}