From 6d57e88db92596493494d51c52bd4e04a0810c6d Mon Sep 17 00:00:00 2001 From: "yaohua.wu" Date: Thu, 26 Feb 2026 18:29:58 +0800 Subject: [PATCH] [vm]: improve error messages for backup storage selection failures during ISO attach and VM creation When VM image or ISO backup storage selection fails, the error messages previously only stated that no suitable backup storage was found, without providing diagnostic details about the actual state of backup storage resources. 1. Why is this change necessary? Users encountering backup storage selection failures had no visibility into the root cause. The error messages did not indicate which backup storages the image/ISO was on, their connection status, or which backup storages were attached to the zone, making troubleshooting difficult. 2. How does it address the problem? Added diagnostic helper methods to both VmDownloadIsoFlow and VmImageSelectBackupStorageFlow that query and format backup storage state info. Error messages now include: (a) which backup storages hold the image/ISO with their status, (b) which backup storages are attached to the zone with their status, and (c) actionable suggestions. Also added dedicated error codes with i18n support for all 10 locales. 3. Are there any side effects? None. Changes only affect error-path diagnostics. Normal backup storage selection logic is unchanged. # Summary of changes (by module): - compute: add diagnostic info to error messages in VmDownloadIsoFlow and VmImageSelectBackupStorageFlow - conf/i18n: add 4 new error codes (10084-10087) across all 10 locale JSON files Related: ZSTAC-65467 Change-Id: Idbfdaa2b97792a46a29c25b077d990a51f6e1df8 --- .../zstack/compute/vm/VmDownloadIsoFlow.java | 51 +++++++++++- .../vm/VmImageSelectBackupStorageFlow.java | 79 ++++++++++++++++--- .../global-error-de-DE.json | 5 +- .../global-error-en_US.json | 5 +- .../global-error-fr-FR.json | 5 +- .../global-error-id-ID.json | 5 +- .../global-error-ja-JP.json | 5 +- .../global-error-ko-KR.json | 5 +- .../global-error-ru-RU.json | 5 +- .../global-error-th-TH.json | 5 +- .../global-error-zh_CN.json | 5 +- .../global-error-zh_TW.json | 5 +- 12 files changed, 156 insertions(+), 24 deletions(-) diff --git a/compute/src/main/java/org/zstack/compute/vm/VmDownloadIsoFlow.java b/compute/src/main/java/org/zstack/compute/vm/VmDownloadIsoFlow.java index aa9ccb65a2..2f471869a2 100755 --- a/compute/src/main/java/org/zstack/compute/vm/VmDownloadIsoFlow.java +++ b/compute/src/main/java/org/zstack/compute/vm/VmDownloadIsoFlow.java @@ -15,6 +15,7 @@ import org.zstack.header.image.ImageInventory; import org.zstack.header.image.ImageStatus; import org.zstack.header.message.MessageReply; +import org.zstack.header.storage.backup.BackupStorageStatus; import org.zstack.header.storage.primary.DownloadIsoToPrimaryStorageMsg; import org.zstack.header.storage.primary.DownloadIsoToPrimaryStorageReply; import org.zstack.header.storage.primary.PrimaryStorageConstant; @@ -24,7 +25,11 @@ import org.zstack.utils.CollectionUtils; import org.zstack.utils.function.Function; +import javax.persistence.Tuple; +import javax.persistence.TypedQuery; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static org.zstack.core.Platform.operr; import static org.zstack.utils.clouderrorcode.CloudOperationsErrorCode.*; @@ -41,6 +46,38 @@ public class VmDownloadIsoFlow extends NoRollbackFlow { @Autowired private ErrorFacade errf; + private String getImageBackupStorageInfo(String imageUuid) { + String sql = "select bs.name, bs.status" + + " from BackupStorageVO bs, ImageBackupStorageRefVO ref" + + " where bs.uuid = ref.backupStorageUuid" + + " and ref.imageUuid = :imageUuid"; + TypedQuery q = dbf.getEntityManager().createQuery(sql, Tuple.class); + q.setParameter("imageUuid", imageUuid); + List tuples = q.getResultList(); + if (tuples.isEmpty()) { + return "none"; + } + return tuples.stream() + .map(t -> String.format("%s(%s)", t.get(0, String.class), t.get(1, BackupStorageStatus.class))) + .collect(Collectors.joining(", ", "[", "]")); + } + + private String getZoneBackupStorageInfo(String zoneUuid) { + String sql = "select bs.name, bs.status" + + " from BackupStorageVO bs, BackupStorageZoneRefVO ref" + + " where bs.uuid = ref.backupStorageUuid" + + " and ref.zoneUuid = :zoneUuid"; + TypedQuery q = dbf.getEntityManager().createQuery(sql, Tuple.class); + q.setParameter("zoneUuid", zoneUuid); + List tuples = q.getResultList(); + if (tuples.isEmpty()) { + return "none"; + } + return tuples.stream() + .map(t -> String.format("%s(%s)", t.get(0, String.class), t.get(1, BackupStorageStatus.class))) + .collect(Collectors.joining(", ", "[", "]")); + } + @Override public void run(final FlowTrigger trigger, Map data) { final VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString()); @@ -59,10 +96,16 @@ public void run(final FlowTrigger trigger, Map data) { final String bsUuid = selector.select(); if (bsUuid == null) { - throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10084, "cannot find the iso[uuid:%s] in any connected backup storage attached to the zone[uuid:%s]. check below:\n" + - "1. if the backup storage is attached to the zone where the VM[name: %s, uuid:%s] is running\n" + - "2. if the backup storage is in connected status, if not, try reconnecting it", - iso.getUuid(), host.getZoneUuid(), spec.getVmInventory().getName(), spec.getVmInventory().getUuid()) + String isoBsInfo = getImageBackupStorageInfo(iso.getUuid()); + String zoneBsInfo = getZoneBackupStorageInfo(host.getZoneUuid()); + throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10084, + "cannot find the iso[name:%s, uuid:%s] in any connected backup storage" + + " attached to the zone[uuid:%s]." + + "\nISO is on backup storage: %s" + + "\nzone attached backup storage: %s" + + "\nsuggestion: attach the ISO's backup storage to the zone," + + " or ensure the backup storage is connected.", + iso.getName(), iso.getUuid(), host.getZoneUuid(), isoBsInfo, zoneBsInfo) ); } diff --git a/compute/src/main/java/org/zstack/compute/vm/VmImageSelectBackupStorageFlow.java b/compute/src/main/java/org/zstack/compute/vm/VmImageSelectBackupStorageFlow.java index 893020ea58..ffe8e4e7d2 100755 --- a/compute/src/main/java/org/zstack/compute/vm/VmImageSelectBackupStorageFlow.java +++ b/compute/src/main/java/org/zstack/compute/vm/VmImageSelectBackupStorageFlow.java @@ -14,6 +14,7 @@ import org.zstack.header.image.ImageBackupStorageRefInventory; import org.zstack.header.image.ImageConstant.ImageMediaType; import org.zstack.header.image.ImageStatus; +import org.zstack.header.storage.backup.BackupStorageStatus; import org.zstack.header.storage.primary.*; import org.zstack.header.vm.VmInstanceConstant; import org.zstack.header.vm.VmInstanceConstant.VmOperation; @@ -22,11 +23,14 @@ import org.zstack.utils.DebugUtils; import org.zstack.utils.function.Function; +import javax.persistence.Tuple; import javax.persistence.TypedQuery; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; import static org.zstack.core.Platform.operr; import static org.zstack.core.progress.ProgressReportService.taskProgress; @@ -76,17 +80,27 @@ private String findBackupStorage(VmInstanceSpec spec, String imageUuid) { } } + String imageName = spec.getImageSpec().getInventory().getName(); + String imageBsInfo = getImageBackupStorageInfo(imageUuid); if (spec.getVmInventory().getZoneUuid() != null) { - throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10085, "cannot find the image[uuid:%s] in any connected backup storage attached to the zone[uuid:%s]. check below:\n" + - "1. if the backup storage is attached to the zone where the VM[name: %s, uuid:%s] is in\n" + - "2. if the backup storage is in connected status, if not, try reconnecting it", - imageUuid, spec.getVmInventory().getZoneUuid(), spec.getVmInventory().getName(), spec.getVmInventory().getUuid()) + String zoneUuid = spec.getVmInventory().getZoneUuid(); + String zoneBsInfo = getZoneBackupStorageInfo(zoneUuid); + throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10085, + "cannot find the image[name:%s, uuid:%s] in any connected backup storage" + + " attached to the zone[uuid:%s]." + + "\nimage is on backup storage: %s" + + "\nzone attached backup storage: %s" + + "\nsuggestion: attach the image's backup storage to the zone," + + " or sync the image to an attached and connected backup storage.", + imageName, imageUuid, zoneUuid, imageBsInfo, zoneBsInfo) ); } else { - throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10086, "cannot find the image[uuid:%s] in any connected backup storage. check below:\n" + - "1. if the backup storage is attached to the zone where the VM[name: %s, uuid:%s] is in\n" + - "2. if the backup storage is in connected status, if not, try reconnecting it", - imageUuid, spec.getVmInventory().getName(), spec.getVmInventory().getUuid()) + throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10086, + "cannot find the image[name:%s, uuid:%s] in any connected backup storage." + + "\nimage is on backup storage: %s" + + "\nsuggestion: ensure the backup storage is connected," + + " or sync the image to a connected backup storage.", + imageName, imageUuid, imageBsInfo) ); } } @@ -126,13 +140,58 @@ private String findIsoBsUuidInTheZone(final String isoImageUuid, final String zo q.setMaxResults(1); List ret = q.getResultList(); if (ret.isEmpty()) { - throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10087, "no backup storage attached to the zone[uuid:%s] contains the ISO[uuid:%s]", - zoneUuid, isoImageUuid)); + String isoName = Optional.ofNullable((String) Q.New(org.zstack.header.image.ImageVO.class) + .eq(org.zstack.header.image.ImageVO_.uuid, isoImageUuid) + .select(org.zstack.header.image.ImageVO_.name) + .findValue()).orElse(isoImageUuid); + String isoBsInfo = getImageBackupStorageInfo(isoImageUuid); + String zoneBsInfo = getZoneBackupStorageInfo(zoneUuid); + throw new OperationFailureException(operr(ORG_ZSTACK_COMPUTE_VM_10087, + "no backup storage attached to the zone[uuid:%s] contains the ISO[name:%s, uuid:%s]." + + "\nISO is on backup storage: %s" + + "\nzone attached backup storage: %s" + + "\nsuggestion: attach the ISO's backup storage to the zone," + + " or sync the ISO to an attached backup storage.", + zoneUuid, isoName, isoImageUuid, isoBsInfo, zoneBsInfo)); } return ret.get(0); } + @Transactional(readOnly = true) + private String getImageBackupStorageInfo(String imageUuid) { + String sql = "select bs.name, bs.status" + + " from BackupStorageVO bs, ImageBackupStorageRefVO ref" + + " where bs.uuid = ref.backupStorageUuid" + + " and ref.imageUuid = :imageUuid"; + TypedQuery q = dbf.getEntityManager().createQuery(sql, Tuple.class); + q.setParameter("imageUuid", imageUuid); + List tuples = q.getResultList(); + if (tuples.isEmpty()) { + return "none"; + } + return tuples.stream() + .map(t -> String.format("%s(%s)", t.get(0, String.class), t.get(1, BackupStorageStatus.class))) + .collect(Collectors.joining(", ", "[", "]")); + } + + @Transactional(readOnly = true) + private String getZoneBackupStorageInfo(String zoneUuid) { + String sql = "select bs.name, bs.status" + + " from BackupStorageVO bs, BackupStorageZoneRefVO ref" + + " where bs.uuid = ref.backupStorageUuid" + + " and ref.zoneUuid = :zoneUuid"; + TypedQuery q = dbf.getEntityManager().createQuery(sql, Tuple.class); + q.setParameter("zoneUuid", zoneUuid); + List tuples = q.getResultList(); + if (tuples.isEmpty()) { + return "none"; + } + return tuples.stream() + .map(t -> String.format("%s(%s)", t.get(0, String.class), t.get(1, BackupStorageStatus.class))) + .collect(Collectors.joining(", ", "[", "]")); + } + @Override public void run(FlowTrigger trigger, Map data) { VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString()); diff --git a/conf/i18n/globalErrorCodeMapping/global-error-de-DE.json b/conf/i18n/globalErrorCodeMapping/global-error-de-DE.json index 961c282fcb..491ef97a83 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-de-DE.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-de-DE.json @@ -3560,7 +3560,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "Alle VM[UUID:%s] CD-ROMs haben ISO-Images eingebunden", "ORG_ZSTACK_COMPUTE_VM_10090": "Volume konnte nicht instantiiert werden, da der VM-Host [UUID: %s] und der zugewiesene Primärspeicher [UUID: %s] nicht verbunden sind.", "ORG_ZSTACK_COMPUTE_VM_10088": "Aktueller VM-Status[%s], Virtio-Modifikation erfordert VM-Status[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "ISO [UUID:%s] kann in keinem verbundenen Backup-Speicher gefunden werden, der der Zone [UUID:%s] zugeordnet ist. Bitte überprüfen Sie Folgendes:", + "ORG_ZSTACK_COMPUTE_VM_10084": "ISO[Name:%s, UUID:%s] kann in keinem verbundenen Backup-Speicher der Zone[UUID:%s] gefunden werden.\nISO befindet sich auf Backup-Speicher: %s\nZone-Backup-Speicher: %s\nVorschlag: Hängen Sie den Backup-Speicher des ISO an die Zone an, oder stellen Sie sicher, dass der Backup-Speicher verbunden ist.", + "ORG_ZSTACK_COMPUTE_VM_10085": "Image[Name:%s, UUID:%s] kann in keinem verbundenen Backup-Speicher der Zone[UUID:%s] gefunden werden.\nImage befindet sich auf Backup-Speicher: %s\nZone-Backup-Speicher: %s\nVorschlag: Hängen Sie den Backup-Speicher des Image an die Zone an, oder synchronisieren Sie das Image zu einem angehängten und verbundenen Backup-Speicher.", + "ORG_ZSTACK_COMPUTE_VM_10086": "Image[Name:%s, UUID:%s] kann in keinem verbundenen Backup-Speicher gefunden werden.\nImage befindet sich auf Backup-Speicher: %s\nVorschlag: Stellen Sie sicher, dass der Backup-Speicher verbunden ist, oder synchronisieren Sie das Image zu einem verbundenen Backup-Speicher.", + "ORG_ZSTACK_COMPUTE_VM_10087": "Kein Backup-Speicher der Zone[UUID:%s] enthält das ISO[Name:%s, UUID:%s].\nISO befindet sich auf Backup-Speicher: %s\nZone-Backup-Speicher: %s\nVorschlag: Hängen Sie den Backup-Speicher des ISO an die Zone an, oder synchronisieren Sie das ISO zu einem angehängten Backup-Speicher.", "ORG_ZSTACK_COMPUTE_VM_10083": "Keiner der angegebenen Primärspeicher%s ist verfügbar", "ORG_ZSTACK_COMPUTE_VM_10081": "Erstellung basiert auf Image-Cache[uuid:%s, located ps uuids: [%s]], kann nicht woanders erstellt werden.", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "Host-Virtualisierungsinformationen konnten nicht gesammelt werden", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-en_US.json b/conf/i18n/globalErrorCodeMapping/global-error-en_US.json index 5db5a7eec4..b1973d5ae3 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-en_US.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-en_US.json @@ -3651,7 +3651,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "All VM[UUID:%s] CD-ROMs have mounted ISO images", "ORG_ZSTACK_COMPUTE_VM_10090": "Failed to instantiate volume because the VM\u0027s host [UUID: %s] and allocated primary storage [UUID: %s] are not connected.", "ORG_ZSTACK_COMPUTE_VM_10088": "vm current state[%s], modifying virtio requires vm to be in state[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "cannot find ISO [UUID:%s] in any connected backup storage associated with the zone [UUID:%s]. Please verify the following:\n1. Ensure the backup storage is attached to the correct zone where the VM [NAME: %s, UUID:%s] is running.\n2. Confirm the backup storage is in an active state; if not, attempt to reconnect it.", + "ORG_ZSTACK_COMPUTE_VM_10084": "cannot find the ISO[name:%s, uuid:%s] in any connected backup storage attached to the zone[uuid:%s].\nISO is on backup storage: %s\nzone attached backup storage: %s\nsuggestion: attach the ISO's backup storage to the zone, or ensure the backup storage is connected.", + "ORG_ZSTACK_COMPUTE_VM_10085": "cannot find the image[name:%s, uuid:%s] in any connected backup storage attached to the zone[uuid:%s].\nimage is on backup storage: %s\nzone attached backup storage: %s\nsuggestion: attach the image's backup storage to the zone, or sync the image to an attached and connected backup storage.", + "ORG_ZSTACK_COMPUTE_VM_10086": "cannot find the image[name:%s, uuid:%s] in any connected backup storage.\nimage is on backup storage: %s\nsuggestion: ensure the backup storage is connected, or sync the image to a connected backup storage.", + "ORG_ZSTACK_COMPUTE_VM_10087": "no backup storage attached to the zone[uuid:%s] contains the ISO[name:%s, uuid:%s].\nISO is on backup storage: %s\nzone attached backup storage: %s\nsuggestion: attach the ISO's backup storage to the zone, or sync the ISO to an attached backup storage.", "ORG_ZSTACK_COMPUTE_VM_10083": "none of the specified primary storage%s are available", "ORG_ZSTACK_COMPUTE_VM_10081": "creation relies on image cache[uuid:%s, located ps uuids: [%s]], cannot create elsewhere.", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "Failed to collect host virtualization information", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-fr-FR.json b/conf/i18n/globalErrorCodeMapping/global-error-fr-FR.json index 724b3610db..8fb5a4fae5 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-fr-FR.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-fr-FR.json @@ -3650,7 +3650,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "tous les CD-ROM de VM[UUID:%s] ont des images ISO montées", "ORG_ZSTACK_COMPUTE_VM_10090": "Échec de l'instanciation du volume car l'hôte de la VM [UUID: %s] et le stockage primaire alloué [UUID: %s] ne sont pas connectés.", "ORG_ZSTACK_COMPUTE_VM_10088": "état actuel de la vm[%s], la modification de virtio nécessite que la vm soit dans l'état[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "impossible de trouver ISO [UUID:%s] dans un stockage de sauvegarde connecté associé à la zone [UUID:%s]. Veuillez vérifier ce qui suit:", + "ORG_ZSTACK_COMPUTE_VM_10084": "impossible de trouver l'ISO[nom:%s, uuid:%s] dans un stockage de sauvegarde connecté attaché à la zone[uuid:%s].\nL'ISO se trouve sur le stockage de sauvegarde: %s\nstockage de sauvegarde attaché à la zone: %s\nsuggestion: attachez le stockage de sauvegarde de l'ISO à la zone, ou assurez-vous que le stockage est connecté.", + "ORG_ZSTACK_COMPUTE_VM_10085": "impossible de trouver l'image[nom:%s, uuid:%s] dans un stockage de sauvegarde connecté attaché à la zone[uuid:%s].\nL'image se trouve sur le stockage de sauvegarde: %s\nstockage de sauvegarde attaché à la zone: %s\nsuggestion: attachez le stockage de sauvegarde de l'image à la zone, ou synchronisez l'image vers un stockage attaché et connecté.", + "ORG_ZSTACK_COMPUTE_VM_10086": "impossible de trouver l'image[nom:%s, uuid:%s] dans un stockage de sauvegarde connecté.\nL'image se trouve sur le stockage de sauvegarde: %s\nsuggestion: assurez-vous que le stockage est connecté, ou synchronisez l'image vers un stockage connecté.", + "ORG_ZSTACK_COMPUTE_VM_10087": "aucun stockage de sauvegarde attaché à la zone[uuid:%s] ne contient l'ISO[nom:%s, uuid:%s].\nL'ISO se trouve sur le stockage de sauvegarde: %s\nstockage de sauvegarde attaché à la zone: %s\nsuggestion: attachez le stockage de sauvegarde de l'ISO à la zone, ou synchronisez l'ISO vers un stockage attaché.", "ORG_ZSTACK_COMPUTE_VM_10083": "1. Assurez-vous que le stockage de sauvegarde est attaché à la zone correcte où la VM [NOM: %s, UUID:%s] s'exécute.", "ORG_ZSTACK_COMPUTE_VM_10081": "2. Confirmez que le stockage de sauvegarde est dans un état actif; si ce n'est pas le cas, essayez de le reconnecter.", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "aucun des stockages primaires%s spécifiés n'est disponible", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-id-ID.json b/conf/i18n/globalErrorCodeMapping/global-error-id-ID.json index 116e1993c4..f21cf8430f 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-id-ID.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-id-ID.json @@ -3650,7 +3650,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "Semua CD-ROM VM[UUID:%s] telah memasang gambar ISO", "ORG_ZSTACK_COMPUTE_VM_10090": "Gagal membuat instans volume karena host VM [UUID: %s] dan penyimpanan primer yang dialokasikan [UUID: %s] tidak terhubung.", "ORG_ZSTACK_COMPUTE_VM_10088": "keadaan vm saat ini[%s], mengubah virtio memerlukan vm berada dalam keadaan[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "tidak dapat menemukan ISO [UUID:%s] di penyimpanan cadangan terhubung manapun yang terkait dengan zona [UUID:%s]. Harap verifikasi hal berikut:", + "ORG_ZSTACK_COMPUTE_VM_10084": "tidak dapat menemukan ISO[nama:%s, uuid:%s] di penyimpanan cadangan terhubung manapun yang terpasang pada zona[uuid:%s].\nISO berada di penyimpanan cadangan: %s\npenyimpanan cadangan zona: %s\nsaran: pasang penyimpanan cadangan ISO ke zona, atau pastikan penyimpanan cadangan terhubung.", + "ORG_ZSTACK_COMPUTE_VM_10085": "tidak dapat menemukan image[nama:%s, uuid:%s] di penyimpanan cadangan terhubung manapun yang terpasang pada zona[uuid:%s].\nimage berada di penyimpanan cadangan: %s\npenyimpanan cadangan zona: %s\nsaran: pasang penyimpanan cadangan image ke zona, atau sinkronkan image ke penyimpanan cadangan yang terpasang dan terhubung.", + "ORG_ZSTACK_COMPUTE_VM_10086": "tidak dapat menemukan image[nama:%s, uuid:%s] di penyimpanan cadangan terhubung manapun.\nimage berada di penyimpanan cadangan: %s\nsaran: pastikan penyimpanan cadangan terhubung, atau sinkronkan image ke penyimpanan cadangan yang terhubung.", + "ORG_ZSTACK_COMPUTE_VM_10087": "tidak ada penyimpanan cadangan yang terpasang pada zona[uuid:%s] yang berisi ISO[nama:%s, uuid:%s].\nISO berada di penyimpanan cadangan: %s\npenyimpanan cadangan zona: %s\nsaran: pasang penyimpanan cadangan ISO ke zona, atau sinkronkan ISO ke penyimpanan cadangan yang terpasang.", "ORG_ZSTACK_COMPUTE_VM_10083": "1. Pastikan penyimpanan cadangan terpasang pada zona yang benar tempat VM [NAME: %s, UUID:%s] berjalan.", "ORG_ZSTACK_COMPUTE_VM_10081": "2. Konfirmasi penyimpanan cadangan dalam keadaan aktif; jika tidak, coba hubungkan kembali.", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "tidak ada penyimpanan primer yang ditentukan%s tersedia", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-ja-JP.json b/conf/i18n/globalErrorCodeMapping/global-error-ja-JP.json index 5fcf573afb..d39b675759 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-ja-JP.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-ja-JP.json @@ -3620,7 +3620,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "すべての VM[UUID:%s] CD-ROM に ISO イメージがマウントされています", "ORG_ZSTACK_COMPUTE_VM_10090": "VM のホスト [UUID: %s] と割り当てられたプライマリストレージ [UUID: %s] が接続されていないため、ボリュームのインスタンス化に失敗しました", "ORG_ZSTACK_COMPUTE_VM_10088": "VM の現在の状態 [%s]、virtio の変更には VM が状態 [%s] である必要があります", - "ORG_ZSTACK_COMPUTE_VM_10084": "ISO [UUID:%s] が見つかりません - ゾーン [UUID:%s] に関連付けられた接続されたバックアップストレージに存在しません。 以下を確認してください:", + "ORG_ZSTACK_COMPUTE_VM_10084": "ゾーン[uuid:%s]に接続されたバックアップストレージでISO[名前:%s, uuid:%s]が見つかりません。\nISOが存在するバックアップストレージ: %s\nゾーンに接続されたバックアップストレージ: %s\n提案: ISOのバックアップストレージをゾーンに接続するか、バックアップストレージが接続状態であることを確認してください。", + "ORG_ZSTACK_COMPUTE_VM_10085": "ゾーン[uuid:%s]に接続されたバックアップストレージでイメージ[名前:%s, uuid:%s]が見つかりません。\nイメージが存在するバックアップストレージ: %s\nゾーンに接続されたバックアップストレージ: %s\n提案: イメージのバックアップストレージをゾーンに接続するか、イメージを接続済みのバックアップストレージに同期してください。", + "ORG_ZSTACK_COMPUTE_VM_10086": "接続されたバックアップストレージでイメージ[名前:%s, uuid:%s]が見つかりません。\nイメージが存在するバックアップストレージ: %s\n提案: バックアップストレージが接続状態であることを確認するか、イメージを接続済みのバックアップストレージに同期してください。", + "ORG_ZSTACK_COMPUTE_VM_10087": "ゾーン[uuid:%s]に接続されたバックアップストレージにISO[名前:%s, uuid:%s]が含まれていません。\nISOが存在するバックアップストレージ: %s\nゾーンに接続されたバックアップストレージ: %s\n提案: ISOのバックアップストレージをゾーンに接続するか、ISOを接続済みのバックアップストレージに同期してください。", "ORG_ZSTACK_COMPUTE_VM_10083": "1. バックアップストレージが VM [NAME: %s, UUID:%s] が実行されている正しいゾーンに接続されていることを確認します。", "ORG_ZSTACK_COMPUTE_VM_10081": "2. バックアップストレージがアクティブ状態であることを確認します。アクティブでない場合は、再接続を試みてください。", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "指定されたプライマリストレージ %s はいずれも利用できません", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-ko-KR.json b/conf/i18n/globalErrorCodeMapping/global-error-ko-KR.json index f2fac50e88..f7a41aad68 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-ko-KR.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-ko-KR.json @@ -3560,7 +3560,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "모든 VM[UUID:%s] CD-ROM에 ISO 이미지가 마운트되었습니다", "ORG_ZSTACK_COMPUTE_VM_10090": "볼륨을 인스턴스화하지 못했습니다. VM의 호스트 [UUID: %s]와 할당된 기본 스토리지 [UUID: %s]가 연결되어 있지 않습니다.", "ORG_ZSTACK_COMPUTE_VM_10088": "vm 현재 상태[%s], virtio 수정에는 vm이 [%s] 상태여야 합니다", - "ORG_ZSTACK_COMPUTE_VM_10084": "영역 [UUID:%s]에 연결된 백업 스토리지에서 ISO [UUID:%s]을(를) 찾을 수 없습니다. 다음을 확인하십시오:", + "ORG_ZSTACK_COMPUTE_VM_10084": "영역[uuid:%s]에 연결된 백업 스토리지에서 ISO[이름:%s, uuid:%s]을(를) 찾을 수 없습니다.\nISO가 있는 백업 스토리지: %s\n영역에 연결된 백업 스토리지: %s\n제안: ISO의 백업 스토리지를 영역에 연결하거나 백업 스토리지가 연결 상태인지 확인하십시오.", + "ORG_ZSTACK_COMPUTE_VM_10085": "영역[uuid:%s]에 연결된 백업 스토리지에서 이미지[이름:%s, uuid:%s]을(를) 찾을 수 없습니다.\n이미지가 있는 백업 스토리지: %s\n영역에 연결된 백업 스토리지: %s\n제안: 이미지의 백업 스토리지를 영역에 연결하거나 이미지를 연결되고 접속된 백업 스토리지에 동기화하십시오.", + "ORG_ZSTACK_COMPUTE_VM_10086": "연결된 백업 스토리지에서 이미지[이름:%s, uuid:%s]을(를) 찾을 수 없습니다.\n이미지가 있는 백업 스토리지: %s\n제안: 백업 스토리지가 연결 상태인지 확인하거나 이미지를 연결된 백업 스토리지에 동기화하십시오.", + "ORG_ZSTACK_COMPUTE_VM_10087": "영역[uuid:%s]에 연결된 백업 스토리지 중 ISO[이름:%s, uuid:%s]을(를) 포함하는 것이 없습니다.\nISO가 있는 백업 스토리지: %s\n영역에 연결된 백업 스토리지: %s\n제안: ISO의 백업 스토리지를 영역에 연결하거나 ISO를 연결된 백업 스토리지에 동기화하십시오.", "ORG_ZSTACK_COMPUTE_VM_10083": "1. VM [NAME: %s, UUID:%s]이(가) 실행 중인 올바른 영역에 백업 스토리가 연결되어 있는지 확인합니다.", "ORG_ZSTACK_COMPUTE_VM_10081": "2. 백업 스토리지가 활성 상태인지 확인합니다. 그렇지 않으면 재연결을 시도합니다.", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "지정된 기본 스토리지%s가 모두 사용할 수 없습니다", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-ru-RU.json b/conf/i18n/globalErrorCodeMapping/global-error-ru-RU.json index 84edbc0a88..df46575ac4 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-ru-RU.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-ru-RU.json @@ -3650,7 +3650,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "Все CD-ROM VM[UUID:%s] смонтировали образы ISO", "ORG_ZSTACK_COMPUTE_VM_10090": "Не удалось создать том, так как хост VM [UUID: %s] и выделенное основное хранилище [UUID: %s] не подключены.", "ORG_ZSTACK_COMPUTE_VM_10088": "текущее состояние vm[%s], изменение virtio требует, чтобы vm была в состоянии[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "не удается найти ISO [UUID:%s] ни в одном подключенном резервном хранилище, связанном с зоной [UUID:%s]. Пожалуйста, проверьте следующее:", + "ORG_ZSTACK_COMPUTE_VM_10084": "не удается найти ISO[имя:%s, uuid:%s] ни в одном подключенном резервном хранилище зоны[uuid:%s].\nISO находится в резервном хранилище: %s\nрезервные хранилища зоны: %s\nрекомендация: подключите резервное хранилище ISO к зоне или убедитесь, что хранилище подключено.", + "ORG_ZSTACK_COMPUTE_VM_10085": "не удается найти образ[имя:%s, uuid:%s] ни в одном подключенном резервном хранилище зоны[uuid:%s].\nобраз находится в резервном хранилище: %s\nрезервные хранилища зоны: %s\nрекомендация: подключите резервное хранилище образа к зоне или синхронизируйте образ в подключенное хранилище.", + "ORG_ZSTACK_COMPUTE_VM_10086": "не удается найти образ[имя:%s, uuid:%s] ни в одном подключенном резервном хранилище.\nобраз находится в резервном хранилище: %s\nрекомендация: убедитесь, что хранилище подключено, или синхронизируйте образ в подключенное хранилище.", + "ORG_ZSTACK_COMPUTE_VM_10087": "ни одно резервное хранилище зоны[uuid:%s] не содержит ISO[имя:%s, uuid:%s].\nISO находится в резервном хранилище: %s\nрезервные хранилища зоны: %s\nрекомендация: подключите резервное хранилище ISO к зоне или синхронизируйте ISO в подключенное хранилище.", "ORG_ZSTACK_COMPUTE_VM_10083": "1. Убедитесь, что резервное хранилище подключено к правильной зоне, где запущена VM [NAME: %s, UUID:%s].", "ORG_ZSTACK_COMPUTE_VM_10081": "2. Подтвердите, что резервное хранилище находится в активном состоянии; если нет, попытайтесь переподключить его.", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "ни одно из указанных основных хранилищ%s не доступно", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-th-TH.json b/conf/i18n/globalErrorCodeMapping/global-error-th-TH.json index eb8c392979..7bada34c08 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-th-TH.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-th-TH.json @@ -3650,7 +3650,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "CD-ROM ทั้งหมดของ VM[UUID:%s] ได้ติดตั้ง ISO images แล้ว", "ORG_ZSTACK_COMPUTE_VM_10090": "สร้าง volume ไม่สำเร็จเนื่องจากโฮสต์ของ VM [UUID: %s] และ primary storage ที่จัดสรร [UUID: %s] ไม่ได้เชื่อมต่อกัน", "ORG_ZSTACK_COMPUTE_VM_10088": "สถานะปัจจุบันของ vm[%s] การแก้ไข virtio ต้องการให้ vm อยู่ในสถานะ[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "ไม่พบ ISO [UUID:%s] ใน backup storage ที่เชื่อมต่อใดๆ ที่เกี่ยวข้องกับโซน [UUID:%s] โปรดตรวจสอบดังนี้:", + "ORG_ZSTACK_COMPUTE_VM_10084": "ไม่พบ ISO[ชื่อ:%s, uuid:%s] ใน backup storage ที่เชื่อมต่อใดๆ ที่แนบกับโซน[uuid:%s]\nISO อยู่บน backup storage: %s\nbackup storage ที่แนบกับโซน: %s\nคำแนะนำ: แนบ backup storage ของ ISO เข้ากับโซน หรือตรวจสอบว่า backup storage เชื่อมต่ออยู่", + "ORG_ZSTACK_COMPUTE_VM_10085": "ไม่พบอิมเมจ[ชื่อ:%s, uuid:%s] ใน backup storage ที่เชื่อมต่อใดๆ ที่แนบกับโซน[uuid:%s]\nอิมเมจอยู่บน backup storage: %s\nbackup storage ที่แนบกับโซน: %s\nคำแนะนำ: แนบ backup storage ของอิมเมจเข้ากับโซน หรือซิงค์อิมเมจไปยัง backup storage ที่แนบและเชื่อมต่อแล้ว", + "ORG_ZSTACK_COMPUTE_VM_10086": "ไม่พบอิมเมจ[ชื่อ:%s, uuid:%s] ใน backup storage ที่เชื่อมต่อใดๆ\nอิมเมจอยู่บน backup storage: %s\nคำแนะนำ: ตรวจสอบว่า backup storage เชื่อมต่ออยู่ หรือซิงค์อิมเมจไปยัง backup storage ที่เชื่อมต่อแล้ว", + "ORG_ZSTACK_COMPUTE_VM_10087": "ไม่มี backup storage ที่แนบกับโซน[uuid:%s] ที่มี ISO[ชื่อ:%s, uuid:%s]\nISO อยู่บน backup storage: %s\nbackup storage ที่แนบกับโซน: %s\nคำแนะนำ: แนบ backup storage ของ ISO เข้ากับโซน หรือซิงค์ ISO ไปยัง backup storage ที่แนบแล้ว", "ORG_ZSTACK_COMPUTE_VM_10083": "1. ตรวจสอบว่า backup storage ติดตั้งอยู่ในโซนที่ถูกต้องที่ VM [NAME: %s, UUID:%s] ทำงานอยู่", "ORG_ZSTACK_COMPUTE_VM_10081": "2. ยืนยันว่า backup storage อยู่ในสถานะพร้อมใช้งาน หากไม่ใช่ ให้ลองเชื่อมต่อใหม่", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "primary storage ที่ระบุไม่มีพร้อมใช้งานเลย", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-zh_CN.json b/conf/i18n/globalErrorCodeMapping/global-error-zh_CN.json index 100589567d..52d1bab943 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-zh_CN.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-zh_CN.json @@ -3651,7 +3651,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "所有 vm[uuid:%s] 的 CD-ROM 已挂载 ISO 文件", "ORG_ZSTACK_COMPUTE_VM_10090": "失败Instantiate卷。因为vm的主机[uuid:%s]和分配的主要存储[uuid:%s]未连接。", "ORG_ZSTACK_COMPUTE_VM_10088": "vm 当前状态[%s],修改virtio 需要vm 状态为[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "无法在任何连接的备份存储中找到 ISO[uuid:%s],该备份存储已连接至zone[uuid:%s]。请检查以下内容:\n1. 备份存储是否已连接至虚拟机[name: %s, uuid:%s]运行所在的zone\n2. 如果备份存储处于断开状态,请尝试重新连接", + "ORG_ZSTACK_COMPUTE_VM_10084": "无法在区域[uuid:%s]已连接的备份存储中找到ISO[名称:%s, uuid:%s]。\nISO所在备份存储: %s\n区域已挂载备份存储: %s\n建议: 将ISO所在的备份存储挂载到该区域,或确保备份存储处于已连接状态。", + "ORG_ZSTACK_COMPUTE_VM_10085": "无法在区域[uuid:%s]已连接的备份存储中找到镜像[名称:%s, uuid:%s]。\n镜像所在备份存储: %s\n区域已挂载备份存储: %s\n建议: 将镜像所在的备份存储挂载到该区域,或将镜像同步到已挂载且已连接的备份存储。", + "ORG_ZSTACK_COMPUTE_VM_10086": "无法在任何已连接的备份存储中找到镜像[名称:%s, uuid:%s]。\n镜像所在备份存储: %s\n建议: 确保备份存储处于已连接状态,或将镜像同步到已连接的备份存储。", + "ORG_ZSTACK_COMPUTE_VM_10087": "区域[uuid:%s]已挂载的备份存储中没有包含ISO[名称:%s, uuid:%s]。\nISO所在备份存储: %s\n区域已挂载备份存储: %s\n建议: 将ISO所在的备份存储挂载到该区域,或将ISO同步到已挂载的备份存储。", "ORG_ZSTACK_COMPUTE_VM_10083": "指定的主要存储中没有任何一个是可用的%s", "ORG_ZSTACK_COMPUTE_VM_10081": "创建依赖于镜像缓存[uuid:%s, 位置ps uuids: [%s]], 无法在其他地方创建。", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "失败收集主机虚拟化信息", diff --git a/conf/i18n/globalErrorCodeMapping/global-error-zh_TW.json b/conf/i18n/globalErrorCodeMapping/global-error-zh_TW.json index 4ed6955fad..e5c5a58219 100644 --- a/conf/i18n/globalErrorCodeMapping/global-error-zh_TW.json +++ b/conf/i18n/globalErrorCodeMapping/global-error-zh_TW.json @@ -3650,7 +3650,10 @@ "ORG_ZSTACK_COMPUTE_VM_10078": "所有 vm[uuid:%s] 的 CD-ROM 已挂载 ISO 文件", "ORG_ZSTACK_COMPUTE_VM_10090": "失敗Instantiate卷。因为vm的主機[uuid:%s]和分配的主要儲儲[uuid:%s]未連接。", "ORG_ZSTACK_COMPUTE_VM_10088": "vm 當前状态[%s],修改virtio 需要vm 状态为[%s]", - "ORG_ZSTACK_COMPUTE_VM_10084": "無法在任何連接的备份儲儲中找到 ISO[uuid:%s],該备份儲儲已連接至zone[uuid:%s]。請检查以下内容:\n1. 备份儲儲是否已連接至虚拟機[name: %s, uuid:%s]運行所在的zone\n2. 如果备份儲儲处於斷開状态,請嘗試重新連接", + "ORG_ZSTACK_COMPUTE_VM_10084": "無法在區域[uuid:%s]已連接的備份存儲中找到ISO[名稱:%s, uuid:%s]。\nISO所在備份存儲: %s\n區域已掛載備份存儲: %s\n建議: 將ISO所在的備份存儲掛載到該區域,或確保備份存儲處於已連接狀態。", + "ORG_ZSTACK_COMPUTE_VM_10085": "無法在區域[uuid:%s]已連接的備份存儲中找到鏡像[名稱:%s, uuid:%s]。\n鏡像所在備份存儲: %s\n區域已掛載備份存儲: %s\n建議: 將鏡像所在的備份存儲掛載到該區域,或將鏡像同步到已掛載且已連接的備份存儲。", + "ORG_ZSTACK_COMPUTE_VM_10086": "無法在任何已連接的備份存儲中找到鏡像[名稱:%s, uuid:%s]。\n鏡像所在備份存儲: %s\n建議: 確保備份存儲處於已連接狀態,或將鏡像同步到已連接的備份存儲。", + "ORG_ZSTACK_COMPUTE_VM_10087": "區域[uuid:%s]已掛載的備份存儲中沒有包含ISO[名稱:%s, uuid:%s]。\nISO所在備份存儲: %s\n區域已掛載備份存儲: %s\n建議: 將ISO所在的備份存儲掛載到該區域,或將ISO同步到已掛載的備份存儲。", "ORG_ZSTACK_COMPUTE_VM_10083": "指定的主要儲儲中没有任何一個是可用的%s", "ORG_ZSTACK_COMPUTE_VM_10081": "創建依赖於镜像缓儲[uuid:%s, 位置ps uuids: [%s]], 無法在其他地方創建。", "ORG_ZSTACK_KVM_HYPERVISOR_10000": "失敗收叢主機虚拟化信息",