From a433bede96a51c7ac07c3e35272e26ce15e00245 Mon Sep 17 00:00:00 2001 From: Gabriel Adrian Samfira Date: Fri, 31 Mar 2023 14:47:27 +0000 Subject: [PATCH] Return only enabled pools Signed-off-by: Gabriel Adrian Samfira --- database/sql/repositories.go | 12 ++++++++---- runner/pool/pool.go | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/database/sql/repositories.go b/database/sql/repositories.go index c57b7548..33e6011a 100644 --- a/database/sql/repositories.go +++ b/database/sql/repositories.go @@ -303,14 +303,14 @@ func (s *sqlDatabase) findPoolByTags(id, poolType string, tags []string) (params return params.Pool{}, errors.Wrap(runnerErrors.ErrBadRequest, "parsing id") } - var pool Pool - where := fmt.Sprintf("tags.name in ? and %s = ?", poolType) + var pools []Pool + where := fmt.Sprintf("tags.name in ? and %s = ? and enabled = true", poolType) q := s.conn.Joins("JOIN pool_tags on pool_tags.pool_id=pools.id"). Joins("JOIN tags on tags.id=pool_tags.tag_id"). Group("pools.id"). Preload("Tags"). Having("count(1) = ?", len(tags)). - Where(where, tags, u).First(&pool) + Where(where, tags, u).Find(&pools) if q.Error != nil { if errors.Is(q.Error, gorm.ErrRecordNotFound) { @@ -319,7 +319,11 @@ func (s *sqlDatabase) findPoolByTags(id, poolType string, tags []string) (params return params.Pool{}, errors.Wrap(q.Error, "fetching pool") } - return s.sqlToCommonPool(pool), nil + if len(pools) == 0 { + return params.Pool{}, runnerErrors.ErrNotFound + } + + return s.sqlToCommonPool(pools[0]), nil } func (s *sqlDatabase) getRepoPoolByUniqueFields(ctx context.Context, repoID string, provider, image, flavor string) (Pool, error) { diff --git a/runner/pool/pool.go b/runner/pool/pool.go index 195306c6..c800797f 100644 --- a/runner/pool/pool.go +++ b/runner/pool/pool.go @@ -364,6 +364,7 @@ func (r *basePoolManager) acquireNewInstance(job params.WorkflowJob) error { pool, err := r.helper.FindPoolByTags(requestedLabels) if err != nil { if errors.Is(err, runnerErrors.ErrNotFound) { + log.Printf("failed to find an enabled pool with required labels: %s", strings.Join(requestedLabels, ", ")) return nil } return errors.Wrap(err, "fetching suitable pool")