aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2024-04-15 20:54:53 -0700
committerMax Resnick <max@ofmax.li>2024-06-01 22:38:22 -0700
commit31fbde46fab0dbed8c572573dfbc75593d9b3702 (patch)
treebd4863297bc7aa32cf97d7bfbe53db9d14dc5b05 /internal
parentb8584fec70bd6810fa2392deadc69595b3e94cfa (diff)
downloadgo-git-server-31fbde46fab0dbed8c572573dfbc75593d9b3702.tar.gz
feat: kubernetes deployment manifests
adds deployment manifests for cgit and go-git-server
Diffstat (limited to 'internal')
-rw-r--r--internal/admin/middleware.go8
-rw-r--r--internal/admin/middleware_test.go5
-rw-r--r--internal/admin/model.go20
3 files changed, 18 insertions, 15 deletions
diff --git a/internal/admin/middleware.go b/internal/admin/middleware.go
index 0dcf558..90560fa 100644
--- a/internal/admin/middleware.go
+++ b/internal/admin/middleware.go
@@ -1,17 +1,19 @@
package admin
import (
- "fmt"
+ "log/slog"
"net/http"
)
// Hooks middleware to handle requests to the admin repo.
func Hooks(adminSvc *Servicer, next http.Handler) http.Handler {
- repoUpdatePath := fmt.Sprintf("/%s/git-receive-pack", mgmtRepoName)
+ repoUpdatePath := "/mgmt/git-receive-pack"
return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
next.ServeHTTP(rw, req)
+ slog.Debug("hooks middleware", "url", req.URL.Path)
if req.URL.Path == repoUpdatePath && req.Method == http.MethodPost {
- adminSvc.Reload()
+ slog.Debug("hook firing reload")
+ go adminSvc.Reload()
}
})
}
diff --git a/internal/admin/middleware_test.go b/internal/admin/middleware_test.go
index a50d02d..ffc2e2c 100644
--- a/internal/admin/middleware_test.go
+++ b/internal/admin/middleware_test.go
@@ -8,6 +8,7 @@ import (
"os"
"path/filepath"
"testing"
+ "time"
"github.com/go-git/go-billy/v5/util"
"github.com/go-git/go-git/v5"
@@ -88,13 +89,15 @@ func TestHooks(t *testing.T) {
if err != nil {
t.Fatal("couldn't commit file", err)
}
- req := httptest.NewRequest(http.MethodPost, "http://localhost:3456/mgmt.git/git-receive-pack", bytes.NewBuffer([]byte("stuff")))
+ req := httptest.NewRequest(http.MethodPost, "http://localhost:3456/mgmt/git-receive-pack", bytes.NewBuffer([]byte("stuff")))
recorder := httptest.NewRecorder()
adminHandler := Hooks(adminService, junkTestHandler())
adminHandler.ServeHTTP(recorder, req)
result := recorder.Result()
defer result.Body.Close()
found := false
+ // wait for bg job to complete
+ time.Sleep(1 * time.Second)
for _, v := range adminService.Conf.Repos {
if v.Name == newTestConfigRepo.Name {
found = true
diff --git a/internal/admin/model.go b/internal/admin/model.go
index 079496e..a797bbd 100644
--- a/internal/admin/model.go
+++ b/internal/admin/model.go
@@ -99,6 +99,7 @@ type ServerRepos struct {
func loadConfigFromGit(baseDir, filePath string) ([]byte, error) {
mgmtPath := filepath.Join(baseDir, mgmtRepoName)
+ slog.Info("loading server config", "configPath", mgmtPath)
_, err := os.Stat(mgmtPath)
if errors.Is(err, os.ErrNotExist) {
return []byte(""), ErrMgmtRepoNotFound
@@ -115,15 +116,6 @@ func loadConfigFromGit(baseDir, filePath string) ([]byte, error) {
if err != nil {
return []byte(""), fmt.Errorf("couldn't clone mgmt repo %s %w", repoURI, err)
}
- files, err := fs.ReadDir("/")
- if err != nil {
- log.Fatal(err)
- }
- for _, file := range files {
- fmt.Println(file)
-
- }
-
file, err := fs.Open(filePath)
if err != nil {
return []byte(""), fmt.Errorf("couldn't open file in repo %w", err)
@@ -204,10 +196,15 @@ func (s *ServerRepos) ServerPolicies() [][]string {
// ConfigureRepos run reconciler for all repos
func (s *ServerRepos) ConfigureRepos() error {
+ slog.Info("configuring repos", "toBeConfigured", len(s.Repos))
+ var errs []error
for _, repo := range s.Repos {
- return repo.ReconcileRepo(s.basePath)
+ if err := repo.ReconcileRepo(s.basePath); err != nil {
+ slog.Error("error reconcile", "repo", repo.Name, "err", err)
+ errs = append(errs, err)
+ }
}
- return nil
+ return errors.Join(errs...)
}
func readOnlyPaths(role, repoName string) [][]string {
@@ -250,6 +247,7 @@ func (r *GitRepo) CasbinPolicies() [][]string {
func (r *GitRepo) ReconcileRepo(basePath string) error {
// if exist -> continue
repoBase := filepath.Join(basePath, fmt.Sprintf("%s.git", r.Name))
+ slog.Info("reconciling repo", "repoPath", repoBase)
_, err := os.Stat(repoBase)
if errors.Is(err, fs.ErrNotExist) {
// if no exist -> init bare