Plumbing for showing a maintenance page when SQS is required but missing.
This commit is contained in:
parent
9a9ac12ee5
commit
a268e55607
|
@ -71,6 +71,10 @@
|
|||
await auth.getSelf()
|
||||
await admin.init()
|
||||
|
||||
if ($admin.maintenance.length > 0) {
|
||||
$redirect("./maintenance")
|
||||
}
|
||||
|
||||
if ($auth.user) {
|
||||
await licensing.init()
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
<script>
|
||||
import { Page, Layout, Heading, Body, Link } from "@budibase/bbui"
|
||||
import { MaintenanceType } from "@budibase/types"
|
||||
import { admin } from "stores/portal"
|
||||
import BudibaseLogo from "../portal/_components/BudibaseLogo.svelte"
|
||||
</script>
|
||||
|
||||
{#each $admin.maintenance as maintenance}
|
||||
{#if maintenance.type === MaintenanceType.SQS_MISSING}
|
||||
<Page>
|
||||
<Layout>
|
||||
<BudibaseLogo />
|
||||
<Heading>Please upgrade your Budibase installation</Heading>
|
||||
<Body>
|
||||
We've detected that the version of Budibase you're using depends on a
|
||||
more recent version of the CouchDB database than what you have
|
||||
installed.
|
||||
</Body>
|
||||
<Body>
|
||||
To resolve this, you can either rollback to a previous version of
|
||||
Budibase, or follow the migration guide <Link href="#">here</Link>
|
||||
to update to a later version of CouchDB.
|
||||
</Body>
|
||||
</Layout>
|
||||
</Page>
|
||||
{/if}
|
||||
{/each}
|
|
@ -0,0 +1,13 @@
|
|||
<script>
|
||||
import Logo from "assets/bb-emblem.svg"
|
||||
import { goto } from "@roxi/routify"
|
||||
</script>
|
||||
|
||||
<img src={Logo} alt="Budibase Logo" on:click={() => $goto("./apps")} />
|
||||
|
||||
<style>
|
||||
img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
</style>
|
|
@ -17,6 +17,7 @@ export const DEFAULT_CONFIG = {
|
|||
adminUser: { checked: false },
|
||||
sso: { checked: false },
|
||||
},
|
||||
maintenance: [],
|
||||
offlineMode: false,
|
||||
}
|
||||
|
||||
|
@ -48,6 +49,7 @@ export function createAdminStore() {
|
|||
store.isDev = environment.isDev
|
||||
store.baseUrl = environment.baseUrl
|
||||
store.offlineMode = environment.offlineMode
|
||||
store.maintenance = environment.maintenance
|
||||
return store
|
||||
})
|
||||
}
|
||||
|
|
|
@ -2,3 +2,7 @@ export enum ServiceType {
|
|||
WORKER = "worker",
|
||||
APPS = "apps",
|
||||
}
|
||||
|
||||
export enum MaintenanceType {
|
||||
SQS_MISSING = "sqs_missing",
|
||||
}
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
import { Ctx } from "@budibase/types"
|
||||
import { Ctx, MaintenanceType } from "@budibase/types"
|
||||
import env from "../../../environment"
|
||||
import { env as coreEnv } from "@budibase/backend-core"
|
||||
import nodeFetch from "node-fetch"
|
||||
|
||||
// When we come to move to SQS fully and move away from Clouseau, we will need
|
||||
// to flip this to true (or remove it entirely). This will then be used to
|
||||
// determine if we should show the maintenance page that links to the SQS
|
||||
// migration docs.
|
||||
const sqsRequired = false
|
||||
|
||||
let sqsAvailable: boolean
|
||||
async function isSqsAvailable() {
|
||||
// We cache this value for the duration of the Node process because we don't
|
||||
// want every page load to be making this relatively expensive check.
|
||||
if (sqsAvailable !== undefined) {
|
||||
return sqsAvailable
|
||||
}
|
||||
|
@ -21,6 +29,10 @@ async function isSqsAvailable() {
|
|||
}
|
||||
}
|
||||
|
||||
async function isSqsMissing() {
|
||||
return sqsRequired && !(await isSqsAvailable())
|
||||
}
|
||||
|
||||
export const fetch = async (ctx: Ctx) => {
|
||||
ctx.body = {
|
||||
multiTenancy: !!env.MULTI_TENANCY,
|
||||
|
@ -33,8 +45,9 @@ export const fetch = async (ctx: Ctx) => {
|
|||
}
|
||||
|
||||
if (env.SELF_HOSTED) {
|
||||
ctx.body.infrastructure = {
|
||||
sqs: await isSqsAvailable(),
|
||||
ctx.body.maintenance = []
|
||||
if (await isSqsMissing()) {
|
||||
ctx.body.maintenance.push({ type: MaintenanceType.SQS_MISSING })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,9 +40,7 @@ describe("/api/system/environment", () => {
|
|||
multiTenancy: true,
|
||||
baseUrl: "http://localhost:10000",
|
||||
offlineMode: false,
|
||||
infrastructure: {
|
||||
sqs: false,
|
||||
},
|
||||
maintenance: [],
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue