mirror of
https://github.com/siderolabs/omni.git
synced 2025-08-06 17:46:59 +02:00
docs: update doc urls
Fixes: #543 Signed-off-by: Justin Garrison <justin.garrison@siderolabs.com>
This commit is contained in:
parent
daa6d26b03
commit
a173c8ae87
@ -33,7 +33,7 @@ Boot from an Omni image. Click to allocate to a cluster. That’s 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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
Loading…
Reference in New Issue
Block a user