From 9c51d46d39c1a2614aafca02bf1f3376a88e0280 Mon Sep 17 00:00:00 2001 From: Jaime Martinez Date: Mon, 30 Nov 2020 11:09:30 +1100 Subject: Add Reconfigure to serving and VFS interfaces --- internal/serving/disk/serving.go | 6 ++++++ internal/serving/disk/zip/serving.go | 12 +++++++++--- internal/serving/serverless/serverless.go | 6 ++++++ internal/serving/serving.go | 3 +++ 4 files changed, 24 insertions(+), 3 deletions(-) (limited to 'internal/serving') diff --git a/internal/serving/disk/serving.go b/internal/serving/disk/serving.go index 30c821ea..fbcdf9f2 100644 --- a/internal/serving/disk/serving.go +++ b/internal/serving/disk/serving.go @@ -3,6 +3,7 @@ package disk import ( "os" + "gitlab.com/gitlab-org/gitlab-pages/internal/config" "gitlab.com/gitlab-org/gitlab-pages/internal/httperrors" "gitlab.com/gitlab-org/gitlab-pages/internal/serving" "gitlab.com/gitlab-org/gitlab-pages/internal/vfs" @@ -40,6 +41,11 @@ func (s *Disk) ServeNotFoundHTTP(h serving.Handler) { httperrors.Serve404(h.Writer) } +// Reconfigure VFS +func (s *Disk) Reconfigure(cfg *config.Config) error { + return s.reader.vfs.Reconfigure(cfg) +} + // New returns a serving instance that is capable of reading files // from the VFS func New(vfs vfs.VFS) serving.Serving { diff --git a/internal/serving/disk/zip/serving.go b/internal/serving/disk/zip/serving.go index 61d186da..b31d9090 100644 --- a/internal/serving/disk/zip/serving.go +++ b/internal/serving/disk/zip/serving.go @@ -3,6 +3,8 @@ package zip import ( "sync" + "gitlab.com/gitlab-org/labkit/log" + "gitlab.com/gitlab-org/gitlab-pages/internal/config" "gitlab.com/gitlab-org/gitlab-pages/internal/serving" "gitlab.com/gitlab-org/gitlab-pages/internal/serving/disk" @@ -10,14 +12,18 @@ import ( "gitlab.com/gitlab-org/gitlab-pages/internal/vfs/zip" ) -var instance serving.Serving -var once sync.Once +var ( + once sync.Once + instance = disk.New(vfs.Instrumented(zip.New(config.Default.Zip))) +) // Instance returns a serving instance that is capable of reading files // from a zip archives opened from a URL, most likely stored in object storage func Instance() serving.Serving { once.Do(func() { - instance = disk.New(vfs.Instrumented(zip.New(config.Default.Zip))) + if err := instance.Reconfigure(config.Default); err != nil { + log.WithError(err).Fatal("failed to reconfigure zip serving") + } }) return instance diff --git a/internal/serving/serverless/serverless.go b/internal/serving/serverless/serverless.go index e1881362..f8bd4e87 100644 --- a/internal/serving/serverless/serverless.go +++ b/internal/serving/serverless/serverless.go @@ -4,6 +4,7 @@ import ( "errors" "net/http/httputil" + "gitlab.com/gitlab-org/gitlab-pages/internal/config" "gitlab.com/gitlab-org/gitlab-pages/internal/httperrors" "gitlab.com/gitlab-org/gitlab-pages/internal/serving" "gitlab.com/gitlab-org/gitlab-pages/internal/source/gitlab/api" @@ -65,3 +66,8 @@ func (s *Serverless) ServeFileHTTP(h serving.Handler) bool { func (s *Serverless) ServeNotFoundHTTP(h serving.Handler) { httperrors.Serve404(h.Writer) } + +// Reconfigure noop +func (s *Serverless) Reconfigure(*config.Config) error { + return nil +} diff --git a/internal/serving/serving.go b/internal/serving/serving.go index 6fde8216..786ee569 100644 --- a/internal/serving/serving.go +++ b/internal/serving/serving.go @@ -1,7 +1,10 @@ package serving +import "gitlab.com/gitlab-org/gitlab-pages/internal/config" + // Serving is an interface used to define a serving driver type Serving interface { ServeFileHTTP(Handler) bool ServeNotFoundHTTP(Handler) + Reconfigure(config *config.Config) error } -- cgit v1.2.3