Skip to content

Commit b48f3f8

Browse files
committed
Revert "duplicate everything"
This reverts commit 827233c.
1 parent ad074f5 commit b48f3f8

3 files changed

Lines changed: 92 additions & 253 deletions

File tree

apiserver/controllers/common.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package controllers
2+
3+
import (
4+
"encoding/json"
5+
"log/slog"
6+
"net/http"
7+
8+
apiParams "github.com/cloudbase/garm/apiserver/params"
9+
"github.com/cloudbase/garm/params"
10+
"github.com/gorilla/mux"
11+
)
12+
13+
func (a *APIController) GetRepository(w http.ResponseWriter, r *http.Request) (params.Repository, bool) {
14+
vars := mux.Vars(r)
15+
owner, hasOwner := vars["owner"]
16+
repo, hasRepo := vars["repo"]
17+
if !(hasOwner && hasRepo) {
18+
w.WriteHeader(http.StatusBadRequest)
19+
if err := json.NewEncoder(w).Encode(apiParams.APIErrorResponse{
20+
Error: "Bad Request",
21+
Details: "No repo ID specified",
22+
}); err != nil {
23+
slog.With(slog.Any("error", err)).ErrorContext(r.Context(), "failed to encode response")
24+
}
25+
return params.Repository{}, false
26+
}
27+
repoObj, err := a.r.ResolveRepository(r.Context(), owner, repo, r.URL.Query().Get("endpointName"))
28+
if err != nil {
29+
slog.With(slog.Any("error", err)).ErrorContext(r.Context(), "listing pools")
30+
handleError(r.Context(), w, err)
31+
return params.Repository{}, false
32+
}
33+
return repoObj, true
34+
}
35+
36+
func (a *APIController) GetRepositoryID(w http.ResponseWriter, r *http.Request) (string, bool) {
37+
vars := mux.Vars(r)
38+
owner, hasOwner := vars["owner"]
39+
repo, hasRepo := vars["repo"]
40+
if !(hasOwner && hasRepo) {
41+
w.WriteHeader(http.StatusBadRequest)
42+
if err := json.NewEncoder(w).Encode(apiParams.APIErrorResponse{
43+
Error: "Bad Request",
44+
Details: "No repo ID specified",
45+
}); err != nil {
46+
slog.With(slog.Any("error", err)).ErrorContext(r.Context(), "failed to encode response")
47+
}
48+
return "", false
49+
}
50+
repoObj, err := a.r.ResolveRepository(r.Context(), owner, repo, r.URL.Query().Get("endpointName"))
51+
if err != nil {
52+
slog.With(slog.Any("error", err)).ErrorContext(r.Context(), "listing pools")
53+
handleError(r.Context(), w, err)
54+
return "", false
55+
}
56+
return repoObj.ID, true
57+
}

apiserver/controllers/instances.go

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424

2525
gErrors "github.com/cloudbase/garm-provider-common/errors"
2626
"github.com/cloudbase/garm/apiserver/params"
27-
apiParams "github.com/cloudbase/garm/apiserver/params"
2827
runnerParams "github.com/cloudbase/garm/params"
2928
)
3029

@@ -283,26 +282,10 @@ func (a *APIController) ListRepoInstancesHandler(w http.ResponseWriter, r *http.
283282
func (a *APIController) ListRepoByNameInstancesHandler(w http.ResponseWriter, r *http.Request) {
284283
ctx := r.Context()
285284

286-
vars := mux.Vars(r)
287-
owner, hasOwner := vars["owner"]
288-
repo, hasRepo := vars["repo"]
289-
if !(hasOwner && hasRepo) {
290-
w.WriteHeader(http.StatusBadRequest)
291-
if err := json.NewEncoder(w).Encode(apiParams.APIErrorResponse{
292-
Error: "Bad Request",
293-
Details: "No repo ID specified",
294-
}); err != nil {
295-
slog.With(slog.Any("error", err)).ErrorContext(r.Context(), "failed to encode response")
296-
}
297-
return
298-
}
299-
repoObj, err := a.r.ResolveRepository(r.Context(), owner, repo, r.URL.Query().Get("endpointName"))
300-
if err != nil {
301-
slog.With(slog.Any("error", err)).ErrorContext(r.Context(), "listing pools")
302-
handleError(r.Context(), w, err)
285+
repoID, ok := a.GetRepositoryID(w, r)
286+
if !ok {
303287
return
304288
}
305-
repoID := repoObj.ID
306289

307290
instances, err := a.r.ListRepoInstances(ctx, repoID)
308291
if err != nil {

0 commit comments

Comments
 (0)