docs: update doc urls

Fixes: #543

Signed-off-by: Justin Garrison <justin.garrison@siderolabs.com>
This commit is contained in:
Justin Garrison 2024-08-16 11:17:05 -07:00
parent daa6d26b03
commit a173c8ae87
No known key found for this signature in database
GPG Key ID: 86EC2A4776B60B45
4 changed files with 86 additions and 32 deletions

View File

@ -33,7 +33,7 @@ Boot from an Omni image. Click to allocate to a cluster. Thats it!
Omni is available via a [Business Source License](LICENSE) which allows free installations in non-production environments. If you would like to deploy Omni for production use please contact [Sidero sales](mailto:sales@siderolabs.com). If you would like to subscribe to the hosted version of Omni please see the [SaaS pricing](https://www.siderolabs.com/pricing/). Omni is available via a [Business Source License](LICENSE) which allows free installations in non-production environments. If you would like to deploy Omni for production use please contact [Sidero sales](mailto:sales@siderolabs.com). If you would like to subscribe to the hosted version of Omni please see the [SaaS pricing](https://www.siderolabs.com/pricing/).
If you would like to self-host Omni for non-production workloads please follow the [instructions in the documentation](https://omni.siderolabs.com/docs/how-to-guides/self-hosted/how-to-deploy-omni-on-prem/). If you would like to self-host Omni for non-production workloads please follow the [instructions in the documentation](https://omni.siderolabs.com/how-to-guides/self_hosted/index).
## Development ## Development

View File

@ -13,7 +13,7 @@ This respository contains client code and gRPC API definitions used to access Om
## Documentation ## Documentation
For instructions on using Omni, see the [Documentation](https://omni.siderolabs.com/docs/). For instructions on using Omni, see the [Documentation](https://omni.siderolabs.com/).
## Community ## Community

View File

@ -8,22 +8,33 @@ included in the LICENSE file.
<header class="t-header"> <header class="t-header">
<div class="t-header-nav-wrapper"> <div class="t-header-nav-wrapper">
<div class="t-header-logo-wrapper"> <div class="t-header-logo-wrapper">
<router-link to="/" class="flex items-center gap-1 text-lg text-naturals-N13 uppercase"> <router-link
<t-icon class="t-header-icon w-7 h-7" icon="logo"/> to="/"
class="flex items-center gap-1 text-lg text-naturals-N13 uppercase"
>
<t-icon class="t-header-icon w-7 h-7" icon="logo" />
<span class="font-bold">Sidero</span> <span class="font-bold">Sidero</span>
<span>Omni</span> <span>Omni</span>
</router-link> </router-link>
</div> </div>
<div class="t-header-nav"> <div class="t-header-nav">
<a href="https://omni.siderolabs.com/docs/" target="_blank" class="flex hover:text-naturals-N14 transition-colors"> <a
href="https://omni.siderolabs.com/"
target="_blank"
class="flex hover:text-naturals-N14 transition-colors"
>
<t-icon class="t-header-nav-icon" icon="info" /> <t-icon class="t-header-nav-icon" icon="info" />
<span class="t-header-nav-name max-sm:hidden">Documentation</span> <span class="t-header-nav-name max-sm:hidden">Documentation</span>
</a> </a>
<a href="https://github.com/siderolabs/omni/issues" target="_blank" class="flex hover:text-naturals-N14 transition-colors"> <a
href="https://github.com/siderolabs/omni/issues"
target="_blank"
class="flex hover:text-naturals-N14 transition-colors"
>
<t-icon class="t-header-nav-icon" icon="check-in-circle" /> <t-icon class="t-header-nav-icon" icon="check-in-circle" />
<span class="t-header-nav-name max-sm:hidden">Report an issue</span> <span class="t-header-nav-name max-sm:hidden">Report an issue</span>
</a> </a>
<ongoing-tasks/> <ongoing-tasks />
</div> </div>
</div> </div>
</header> </header>

View File

@ -7,14 +7,32 @@ included in the LICENSE file.
<template> <template>
<watch :opts="watchOverallStatusOpts" spinner noRecordsAlert errorsAlert> <watch :opts="watchOverallStatusOpts" spinner noRecordsAlert errorsAlert>
<template #default="overallStatus"> <template #default="overallStatus">
<t-alert v-if="overallStatus.items[0]?.spec?.configuration_error" type="warn" <t-alert
:title="`The backups storage is not properly configured: ${overallStatus.items[0]?.spec?.configuration_error}`"> v-if="overallStatus.items[0]?.spec?.configuration_error"
<div class="flex gap-1">Check the <t-button type="subtle" @click="openDocs">documentation</t-button> on how to configure s3 backups using CLI.</div> type="warn"
<div class="flex gap-1" v-if="canManageBackupStore">Or<t-button @click="$router.push({name: 'BackupStorage'})" type="subtle">configure backups in the UI.</t-button></div> :title="`The backups storage is not properly configured: ${overallStatus.items[0]?.spec?.configuration_error}`"
>
<div class="flex gap-1">
Check the
<t-button type="subtle" @click="openDocs">documentation</t-button> on
how to configure s3 backups using CLI.
</div>
<div class="flex gap-1" v-if="canManageBackupStore">
Or<t-button
@click="$router.push({ name: 'BackupStorage' })"
type="subtle"
>configure backups in the UI.</t-button
>
</div>
</t-alert> </t-alert>
<watch v-else :opts="watchStatusOpts" spinner noRecordsAlert errorsAlert> <watch v-else :opts="watchStatusOpts" spinner noRecordsAlert errorsAlert>
<template #default="status"> <template #default="status">
<t-list :opts="watchOpts" search :sortOptions="sortOptions" :key="status.items[0]?.metadata?.updated"> <t-list
:opts="watchOpts"
search
:sortOptions="sortOptions"
:key="status.items[0]?.metadata?.updated"
>
<template #default="{ items, searchQuery }"> <template #default="{ items, searchQuery }">
<div class="header"> <div class="header">
<div class="list-grid"> <div class="list-grid">
@ -25,18 +43,32 @@ included in the LICENSE file.
</div> </div>
</div> </div>
<t-list-item v-for="item in items" :key="item.metadata.id!"> <t-list-item v-for="item in items" :key="item.metadata.id!">
<div class="text-naturals-N12 relative pr-3" :class="{ 'pl-7': !item.spec.description }"> <div
class="text-naturals-N12 relative pr-3"
:class="{ 'pl-7': !item.spec.description }"
>
<div class="list-grid"> <div class="list-grid">
<WordHighlighter <WordHighlighter
:query="searchQuery" :query="searchQuery"
:textToHighlight="item.metadata.id" :textToHighlight="item.metadata.id"
highlightClass="bg-naturals-N14" highlightClass="bg-naturals-N14"
/> />
<div class="text-naturals-N14">{{ formatISO(item.spec.created_at as string, dateFormat) }}</div> <div class="text-naturals-N14">
<div class="text-naturals-N14">{{ formatBytes(parseInt(item.spec.size ?? '0')) }}</div> {{
formatISO(item.spec.created_at as string, dateFormat)
}}
</div>
<div class="text-naturals-N14">
{{ formatBytes(parseInt(item.spec.size ?? "0")) }}
</div>
<div class="text-naturals-N14 flex gap-2 items-center"> <div class="text-naturals-N14 flex gap-2 items-center">
{{ item.spec.snapshot }} {{ item.spec.snapshot }}
<icon-button icon="copy" @click="copyText(item.spec.snapshot, undefined, () => {})"/> <icon-button
icon="copy"
@click="
copyText(item.spec.snapshot, undefined, () => {})
"
/>
</div> </div>
</div> </div>
</div> </div>
@ -51,7 +83,15 @@ included in the LICENSE file.
<script setup lang="ts"> <script setup lang="ts">
import { Runtime } from "@/api/common/omni.pb"; import { Runtime } from "@/api/common/omni.pb";
import { ExternalNamespace, EtcdBackupType, LabelCluster, EtcdBackupStatusType, DefaultNamespace, EtcdBackupOverallStatusID, EtcdBackupOverallStatusType } from "@/api/resources"; import {
ExternalNamespace,
EtcdBackupType,
LabelCluster,
EtcdBackupStatusType,
DefaultNamespace,
EtcdBackupOverallStatusID,
EtcdBackupOverallStatusType,
} from "@/api/resources";
import { WatchOptions } from "@/api/watch"; import { WatchOptions } from "@/api/watch";
import { computed } from "vue"; import { computed } from "vue";
import { formatISO } from "@/methods/time"; import { formatISO } from "@/methods/time";
@ -72,8 +112,8 @@ const dateFormat = "HH:mm MMM d y";
const route = useRoute(); const route = useRoute();
const sortOptions = [ const sortOptions = [
{id: 'id', desc: 'Creation Time ⬇', descending: true}, { id: "id", desc: "Creation Time ⬇", descending: true },
{id: 'id', desc: 'Creation Time ⬆'}, { id: "id", desc: "Creation Time ⬆" },
]; ];
const watchStatusOpts = computed((): WatchOptions => { const watchStatusOpts = computed((): WatchOptions => {
@ -81,10 +121,10 @@ const watchStatusOpts = computed((): WatchOptions => {
resource: { resource: {
namespace: DefaultNamespace, namespace: DefaultNamespace,
type: EtcdBackupStatusType, type: EtcdBackupStatusType,
id: route.params.cluster as string id: route.params.cluster as string,
}, },
runtime: Runtime.Omni, runtime: Runtime.Omni,
} };
}); });
const watchOverallStatusOpts = computed((): WatchOptions => { const watchOverallStatusOpts = computed((): WatchOptions => {
@ -92,10 +132,10 @@ const watchOverallStatusOpts = computed((): WatchOptions => {
resource: { resource: {
namespace: DefaultNamespace, namespace: DefaultNamespace,
type: EtcdBackupOverallStatusType, type: EtcdBackupOverallStatusType,
id: EtcdBackupOverallStatusID id: EtcdBackupOverallStatusID,
}, },
runtime: Runtime.Omni, runtime: Runtime.Omni,
} };
}); });
const watchOpts = computed((): WatchOptions => { const watchOpts = computed((): WatchOptions => {
@ -105,15 +145,18 @@ const watchOpts = computed((): WatchOptions => {
type: EtcdBackupType, type: EtcdBackupType,
}, },
runtime: Runtime.Omni, runtime: Runtime.Omni,
selectors: [ selectors: [`${LabelCluster}=${route.params.cluster}`],
`${LabelCluster}=${route.params.cluster}` };
]
}
}); });
const openDocs = () => { const openDocs = () => {
window.open("https://omni.siderolabs.com/docs/how-to-guides/how-to-create-etcd-backups/#s3-configuration", "_blank")?.focus(); window
} .open(
"https://omni.siderolabs.com/how-to-guides/etcd-backups#s3-configuration",
"_blank"
)
?.focus();
};
</script> </script>
<style scoped> <style scoped>