Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion @xen-orchestra/web-core/lib/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
"action:create-bonded-network": "Create bonded network",
"action:create-internal-network": "Create internal network",
"action:create-network": "Create network",
"action:create-new-cluster": "Create new cluster",
"action:create-traffic-rule": "Create traffic rule",
"action:create-vdi": "Create VDI",
"action:create-vif": "Create VIF",
Expand Down Expand Up @@ -277,6 +278,7 @@
"cloud-init-config": "Cloud-init config",
"cluster": "Cluster",
"cluster-class": "Cluster class",
"cluster-name": "Cluster name",
"clusters": "Clusters",
"color-mode:auto": "Automatic mode",
"coming-soon!": "Coming soon!",
Expand Down Expand Up @@ -309,7 +311,9 @@
"container-name": "Container name",
"control-domain-memory": "Control domain memory",
"control-plane-initialized": "Control plane initialized",
"control-plane-ip": "Control plane IP",
"control-plane-replicas": "Control plane replicas",
"control-plane-replicas-hint": "Recommended control plane nodes: 1 for no fault tolerance, 3 for 1 failure, 5 for 2 failures, 7 for 3 failures.",
"cp-endpoint": "CP endpoint",
"copied": "Copied",
"copy-host-bios-strings": "Copy host BIOS strings to VM (only for BIOS VM).",
Expand Down Expand Up @@ -430,6 +434,7 @@
"force-shutdown-blocked": "Force shutdown Blocked",
"form:error:field-required": "{field} is required",
"form:error:integer": "Must be an integer",
"form:error:invalid-tag-syntax": "Invalid tag syntax",
"form:error:required": "This field is required",
"form:warning:out-of-range": "Should be between {min} and {max}",
"format": "Format",
Expand Down Expand Up @@ -515,6 +520,7 @@
"job:arg:direction-required": "Direction is required",
"job:arg:file-required": "File is required",
"job:arg:host-required": "Host is required",
"job:arg:ip-address-required": "@:ip-address-required",
"job:arg:ip-range-required": "IP range is required",
"job:arg:missing-payload": "Payload is missing",
"job:arg:name-required": "@:name-required",
Expand All @@ -532,6 +538,7 @@
"job:arg:vdi-id-required": "VDI ID is required",
"job:arg:vlan-required": "@:vlan-required",
"job:arg:vm-id-required": "VM ID is required",
"job:arg:vm-name-prefix-required": "VM name prefix is required",
"job:backup-repository-benchmark:in-progress": "Backup repository benchmark in progress…",
"job:backup-repository-benchmark:missing-backup-repository": "Missing backup repository",
"job:backup-repository-benchmark:repository-disabled": "Backup repository disabled",
Expand Down Expand Up @@ -810,6 +817,7 @@
"networking": "Networking",
"networks": "Networks",
"new": "New",
"new-cluster": "New cluster",
"new-features-are-coming!": "New features are coming soon!",
"new-network:add": "Add new network",
"new-network:add-bonded": "Add new bonded network",
Expand Down Expand Up @@ -905,6 +913,7 @@
"ok": "OK",
"on": "On",
"on-object": "on {object}",
"one-by-default": "1 by default.",
"operation:clean-reboot": "Rebooting",
"operation:clean-shutdown": "Shutting down",
"operation:destroy": "Deleting",
Expand Down Expand Up @@ -948,8 +957,8 @@
"path-in-bucket": "Path in bucket",
"path-on-share": "Path on share",
"pause": "Pause",
"paused": "Paused",
"pause-blocked": "Pause Blocked",
"paused": "Paused",
"pbd-details": "Physical Block Device (PBD) details",
"pending": "Pending",
"phase": "Phase",
Expand Down Expand Up @@ -1064,6 +1073,7 @@
"relative-time:year": "1 year | {n} years",
"remaining-space": "Remaining space",
"remote-syslog": "Remote syslog",
"replicas": "replicas",
"report-recipients": "Report recipients",
"report-when": "Report when",
"report-when:always": "Always",
Expand Down Expand Up @@ -1196,6 +1206,7 @@
"table-selection:n-objects-selected.": "0 selected. | {objects} selected. | {objects} selected.",
"table-selection:watch-out!": "Watch out!",
"tags": "Tags",
"tags-syntax-hint": "Use key=value pairs separated by commas (e.g. env=prod, team=infra)",
"target": "Target",
"task": "Task",
"task-type": "Task type",
Expand Down Expand Up @@ -1264,6 +1275,7 @@
"unable-to-connect-to": "Unable to connect to {ip}",
"unable-to-connect-to-the-pool": "Unable to connect to the pool",
"unable-to-connect-to-xo-server": "Unable to connect to XO server.",
"unable-to-create-cluster": "Unable to create cluster",
"unable-to-create-new-bonded-network": "Unable to create new bonded network",
"unable-to-create-new-internal-network": "Unable to create new internal network",
"unable-to-create-new-network": "Unable to create new network",
Expand Down Expand Up @@ -1343,6 +1355,7 @@
"vm-limit-topology": "VM limit topology",
"vm-management": "VM management",
"vm-name": "VM name",
"vm-name-prefix": "VM name prefix",
"vm-name-required": "VM name is required.",
"vm-not-running": "VM not running",
"vm-off": "This virtual machine is powered off.",
Expand Down
23 changes: 18 additions & 5 deletions @xen-orchestra/web-core/lib/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
"action:create-bonded-network": "Créer un réseau lié",
"action:create-internal-network": "Créer un réseau interne",
"action:create-network": "Créer un réseau",
"action:create-new-cluster": "Créer un nouveau cluster",
"action:create-traffic-rule": "Créer une règle de trafic",
"action:create-vdi": "Créer un VDI",
"action:create-vif": "Créer un VIF",
Expand Down Expand Up @@ -277,6 +278,7 @@
"cloud-init-config": "Configuration Cloud-init",
"cluster": "Cluster",
"cluster-class": "Cluster class",
"cluster-name": "Nom du cluster",
"clusters": "Clusters",
"color-mode:auto": "Mode automatique",
"coming-soon!": "Bientôt disponible !",
Expand Down Expand Up @@ -308,8 +310,10 @@
"console-unavailable-reason": "La console est actuellement indisponible car {type} est éteint.",
"container-name": "Nom du conteneur",
"control-domain-memory": "Mémoire du domaine de contrôle",
"control-plane-initialized": "Control plane initialisé",
"control-plane-replicas": "Control plane replicas",
"control-plane-initialized": "Plan de contrôle initialisé",
"control-plane-ip": "IP du plan de contrôle",
"control-plane-replicas": "Réplicas de plan de contrôle",
"control-plane-replicas-hint": "Réplicas de plan de contrôle recommandés : 1 sans tolérance aux pannes, 3 pour 1 panne, 5 pour 2 pannes, 7 pour 3 pannes.",
"cp-endpoint": "CP endpoint",
"copied": "Copié",
"copy-host-bios-strings": "Copier les BIOS strings de l'hôte à la VM (uniquement pour les VM BIOS).",
Expand Down Expand Up @@ -360,7 +364,7 @@
"deploy-xoa-status:waiting": "En attente de réponse de la XOA…",
"descending": "descendant",
"description": "Description",
"desired": "Désiré",
"desired": "Souhaité",
"destination-sr": "SR de destination",
"destination-sr-mandatory": "Le SR de destination est obligatoire.",
"device": "Appareil",
Expand Down Expand Up @@ -430,6 +434,7 @@
"force-shutdown-blocked": "Arrêt forcé bloqué",
"form:error:field-required": "Le champ {field} est requis",
"form:error:integer": "Doit être un entier",
"form:error:invalid-tag-syntax": "Syntaxe de tag invalide",
"form:error:required": "Ce champ est requis",
"form:warning:out-of-range": "Devrait être compris entre {min} et {max}",
"format": "Format",
Expand Down Expand Up @@ -515,6 +520,7 @@
"job:arg:direction-required": "La direction est obligatoire",
"job:arg:file-required": "Le fichier est obligatoire",
"job:arg:host-required": "L'hôte est requis",
"job:arg:ip-address-required": "@:ip-address-required",
"job:arg:ip-range-required": "L'adresse IP est obligatoire",
"job:arg:missing-payload": "Aucune donnée fournie pour l'execution du job",
"job:arg:name-required": "@:name-required",
Expand All @@ -532,6 +538,7 @@
"job:arg:vdi-id-required": "L'ID du VDI est obligatoire",
"job:arg:vlan-required": "@:vlan-required",
"job:arg:vm-id-required": "L'ID de la VM est obligatoire",
"job:arg:vm-name-prefix-required": "Le préfixe de nom de VM est obligatoire",
"job:backup-repository-benchmark:in-progress": "Test de performance du dépôt de sauvegarde en cours…",
"job:backup-repository-benchmark:missing-backup-repository": "Aucun dépôt de sauvegarde",
"job:backup-repository-benchmark:repository-disabled": "Dépôt de sauvegarde désactivé",
Expand Down Expand Up @@ -810,6 +817,7 @@
"networking": "Mise en réseau",
"networks": "Réseaux",
"new": "Nouveau",
"new-cluster": "Nouveau cluster",
"new-features-are-coming!": "De nouvelles fonctionnalités arrivent bientôt !",
"new-network:add": "Ajouter un nouveau réseau",
"new-network:add-bonded": "Ajouter un nouveau réseau lié",
Expand Down Expand Up @@ -905,6 +913,7 @@
"ok": "OK",
"on": "Allumé",
"on-object": "sur {object}",
"one-by-default": "1 par défaut.",
"operation:clean-reboot": "Redémarrage",
"operation:clean-shutdown": "Arrêt",
"operation:destroy": "Suppression",
Expand Down Expand Up @@ -948,8 +957,8 @@
"path-in-bucket": "Chemin dans le bucket",
"path-on-share": "Chemin de partage",
"pause": "Pause",
"paused": "En pause",
"pause-blocked": "Mise en pause bloquée",
"paused": "En pause",
"pbd-details": "Détails du périphérique de bloc physique (PBD)",
"pending": "En cours",
"phase": "Phase",
Expand Down Expand Up @@ -1064,6 +1073,7 @@
"relative-time:year": "1 an | {n} ans",
"remaining-space": "Espace restant",
"remote-syslog": "Syslog distant",
"replicas": "réplicas",
"report-recipients": "Destinataires du rapport",
"report-when": "Rapporter quand",
"report-when:always": "Toujours",
Expand Down Expand Up @@ -1196,6 +1206,7 @@
"table-selection:n-objects-selected.": "0 sélectionné. | {objects} sélectionné. | {objects} sélectionnés.",
"table-selection:watch-out!": "Attention !",
"tags": "Tags",
"tags-syntax-hint": "Utilisez des paires clé=valeur séparées par des virgules (ex. env=prod, team=infra)",
"target": "Cible",
"task": "Tâche",
"task-type": "Type de tâche",
Expand Down Expand Up @@ -1264,6 +1275,7 @@
"unable-to-connect-to": "Impossible de se connecter à {ip}",
"unable-to-connect-to-the-pool": "Impossible de se connecter au Pool",
"unable-to-connect-to-xo-server": "Impossible de se connecter au serveur XO.",
"unable-to-create-cluster": "Impossible de créer le cluster",
"unable-to-create-new-bonded-network": "Impossible de créer un nouveau réseau lié",
"unable-to-create-new-internal-network": "Impossible de créer un nouveau réseau interne",
"unable-to-create-new-network": "Impossible de créer un nouveau réseau",
Expand Down Expand Up @@ -1343,6 +1355,7 @@
"vm-limit-topology": "Limite de topologie physique des VMs",
"vm-management": "Gestion de la VM",
"vm-name": "Nom de la VM",
"vm-name-prefix": "Préfixe de nom de VM",
"vm-name-required": "Le nom de la VM est requis.",
"vm-not-running": "VM non démarrée",
"vm-off": "Cette machine virtuelle est éteinte.",
Expand Down Expand Up @@ -1385,7 +1398,7 @@
"what-is-an-unreachable-pool-tip": "Pour rétablir l'accès, vérifiez que le pool est en cours d'exécution, contrôlez votre connexion et assurez-vous que vos identifiants sont à jour.",
"what-is-an-unreachable-pool?": "Qu'est-ce qu'un pool injoignable ?",
"with-memory": "Avec mémoire",
"worker-replicas": "Worker replicas",
"worker-replicas": "Réplicas de nœuds de travail",
"write": "Écriture",
"writing-speed": "Vitesse d'écriture",
"xcp-ng": "XCP-ng",
Expand Down
2 changes: 1 addition & 1 deletion @xen-orchestra/web-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
"@floating-ui/vue": "^1.1.6",
"@fontsource/poppins": "^5.2.5",
"@fortawesome/fontawesome-common-types": "^7.3.1",
"@fortawesome/free-brands-svg-icons": "^7.3.1",
"@fortawesome/free-regular-svg-icons": "^7.3.1",
"@fortawesome/free-solid-svg-icons": "^7.3.1",
"@fortawesome/free-brands-svg-icons": "^7.3.1",
"@novnc/novnc": "~1.5.0",
"@regle/core": "^1.26.0",
"@regle/rules": "^1.26.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
<template>
<UiHeadBar icon="object:kubernetes">
{{ KUBERNETES_NAME }}
<template #actions>
<CreateClusterButton />
</template>
</UiHeadBar>
<TabList>
<RouterLink v-slot="{ isExactActive, href }" :to="{ name: '/kubernetes/clusters' }" custom>
Expand All @@ -12,6 +15,7 @@
</template>

<script setup lang="ts">
import CreateClusterButton from '@/modules/kubernetes/components/actions/create-cluster/CreateClusterButton.vue'
import { KUBERNETES_NAME } from '@/shared/constants.ts'
import TabList from '@core/components/tab-list/TabList.vue'
import UiHeadBar from '@core/components/ui/head-bar/UiHeadBar.vue'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@
</template>

<script setup lang="ts">
import type { KubernetesClusterStatus, KubernetesClusterPhase } from '@/modules/kubernetes/types/xo-kubernetes.type.ts'
import type { KubernetesStatus } from '@/modules/kubernetes/types/xo-kubernetes.type.ts'
import UiInfo, { type InfoAccent } from '@core/components/ui/info/UiInfo.vue'
import { vTooltip } from '@core/directives/tooltip.directive.ts'
import { useMapper } from '@core/packages/mapper'
import { useI18n } from 'vue-i18n'

export type KubernetesStatus = KubernetesClusterStatus | KubernetesClusterPhase | true | false

const { status } = defineProps<{
status: KubernetesStatus
iconOnly?: boolean
Expand All @@ -35,8 +33,8 @@ const currentStatus = useMapper<KubernetesStatus, { text: string; accent: InfoAc
['Deleted', { text: t('deleted'), accent: 'danger' }],
['Deleting', { text: t('deleting'), accent: 'info' }],
['Unknown', { text: t('unknown'), accent: 'muted' }],
[true, { text: t('ready'), accent: 'success' }],
[false, { text: t('not-ready'), accent: 'muted' }],
[true, { text: t('enabled'), accent: 'success' }],
[false, { text: t('disabled'), accent: 'muted' }],
],
false
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<template>
<CreateClusterMenuItem />
</template>

<script setup lang="ts">
import CreateClusterMenuItem from '@/modules/kubernetes/components/actions/create-cluster/CreateClusterMenuItem.vue'
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<template>
<UiButton
size="medium"
variant="secondary"
accent="brand"
left-icon="action:add"
:busy="isCreatingCluster"
@click="openCreateClusterDrawer()"
>
{{ label }}
</UiButton>
</template>

<script lang="ts" setup>
import { useCreateKubernetesClusterDrawer } from '@/modules/kubernetes/composables/use-create-kubernetes-cluster-drawer.composable.ts'
import UiButton from '@core/components/ui/button/UiButton.vue'
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'

const { fullLabel = true } = defineProps<{
fullLabel?: boolean
}>()

const { t } = useI18n()

const label = computed(() => {
if (fullLabel) {
return t('new-cluster')
}
return t('new')
})

const { openDrawer: openCreateClusterDrawer, isRunning: isCreatingCluster } = useCreateKubernetesClusterDrawer()
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<template>
<MenuItem
icon="action:add"
accent="neutral"
class="typo-body-bold-small"
:busy="isCreatingCluster"
@click="openCreateClusterDrawer()"
>
{{ t('new-cluster') }}
</MenuItem>
</template>

<script lang="ts" setup>
import { useCreateKubernetesClusterDrawer } from '@/modules/kubernetes/composables/use-create-kubernetes-cluster-drawer.composable.ts'
import MenuItem from '@core/components/menu/MenuItem.vue'
import { useI18n } from 'vue-i18n'

const { t } = useI18n()

const { openDrawer: openCreateClusterDrawer, isRunning: isCreatingCluster } = useCreateKubernetesClusterDrawer()
</script>
Loading
Loading