diff options
| author | Max Resnick <max@ofmax.li> | 2024-04-15 20:54:53 -0700 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2024-06-01 22:38:22 -0700 |
| commit | 31fbde46fab0dbed8c572573dfbc75593d9b3702 (patch) | |
| tree | bd4863297bc7aa32cf97d7bfbe53db9d14dc5b05 /internal | |
| parent | b8584fec70bd6810fa2392deadc69595b3e94cfa (diff) | |
| download | go-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.go | 8 | ||||
| -rw-r--r-- | internal/admin/middleware_test.go | 5 | ||||
| -rw-r--r-- | internal/admin/model.go | 20 |
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 |