From 29fc613c376fe38055fa907c5bbd293ea6e4408f Mon Sep 17 00:00:00 2001 From: Craig Furman Date: Wed, 24 Jul 2024 21:09:09 +0100 Subject: [PATCH] chore(appliance): expose status in config package (#64032) So that other appliance subpackages (notably reconciler) can import it without risking a circular dependency. Relates to https://linear.app/sourcegraph/issue/REL-78/when-sourcegraph-frontend-is-down-a-user-trying-to-access-sourcegraph but does not close it. Bottom of a stack, likely more PRs incoming today. ## Test plan This is a refactor, all tests continue to pass. ## Changelog --- internal/appliance/appliance.go | 6 +++--- internal/appliance/config/annotations.go | 15 +++++++++++++++ internal/appliance/json.go | 3 ++- internal/appliance/status.go | 17 ----------------- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/internal/appliance/appliance.go b/internal/appliance/appliance.go index c3f169ef3e5..68f2bf4ee42 100644 --- a/internal/appliance/appliance.go +++ b/internal/appliance/appliance.go @@ -25,7 +25,7 @@ type Appliance struct { client client.Client namespace string - status Status + status config.Status sourcegraph *config.Sourcegraph releaseRegistryClient *releaseregistry.Client latestSupportedVersion string @@ -58,7 +58,7 @@ func NewAppliance( releaseRegistryClient: relregClient, latestSupportedVersion: latestSupportedVersion, namespace: namespace, - status: StatusInstall, + status: config.StatusInstall, sourcegraph: &config.Sourcegraph{}, logger: logger, } @@ -138,7 +138,7 @@ func (a *Appliance) GetCurrentVersion(ctx context.Context) string { return a.sourcegraph.Status.CurrentVersion } -func (a *Appliance) GetCurrentStatus(ctx context.Context) Status { +func (a *Appliance) GetCurrentStatus(ctx context.Context) config.Status { return a.status } diff --git a/internal/appliance/config/annotations.go b/internal/appliance/config/annotations.go index 7b086678f34..c1f1f3e22b5 100644 --- a/internal/appliance/config/annotations.go +++ b/internal/appliance/config/annotations.go @@ -1,5 +1,12 @@ package config +// Status is a point in the Appliance lifecycle that an Appliance can be in. +type Status string + +func (s Status) String() string { + return string(s) +} + const ( ConfigmapName = "sourcegraph-appliance" @@ -8,4 +15,12 @@ const ( AnnotationKeyCurrentVersion = "appliance.sourcegraph.com/currentVersion" AnnotationKeyConfigHash = "appliance.sourcegraph.com/configHash" AnnotationKeyShouldTakeOwnership = "appliance.sourcegraph.com/adopted" + + StatusUnknown Status = "unknown" + StatusInstall Status = "install" + StatusInstalling Status = "installing" + StatusIdle Status = "idle" + StatusUpgrading Status = "upgrading" + StatusWaitingForAdmin Status = "wait-for-admin" + StatusRefresh Status = "refresh" ) diff --git a/internal/appliance/json.go b/internal/appliance/json.go index 1792dfd6854..40970a0f243 100644 --- a/internal/appliance/json.go +++ b/internal/appliance/json.go @@ -9,6 +9,7 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/sourcegraph/sourcegraph/internal/appliance/config" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -162,6 +163,6 @@ func (a *Appliance) postStatusJSONHandler() http.Handler { a.serverErrorResponse(w, r, err) } - a.status = StatusInstalling + a.status = config.StatusInstalling }) } diff --git a/internal/appliance/status.go b/internal/appliance/status.go index 3bb3d1fd0ac..cf74098d415 100644 --- a/internal/appliance/status.go +++ b/internal/appliance/status.go @@ -10,23 +10,6 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) -const ( - StatusUnknown Status = "unknown" - StatusInstall Status = "install" - StatusInstalling Status = "installing" - StatusIdle Status = "idle" - StatusUpgrading Status = "upgrading" - StatusWaitingForAdmin Status = "wait-for-admin" - StatusRefresh Status = "refresh" -) - -// Status is a point in the Appliance lifecycle that an Appliance can be in. -type Status string - -func (s Status) String() string { - return string(s) -} - // Task is a task that some states may have to complete to exit. type Task struct { Title string `json:"title"`