From d8a184eff7793abd23c24f15df9bb1984330ec7e Mon Sep 17 00:00:00 2001 From: catborise Date: Sat, 7 Nov 2026 15:58:44 +0300 Subject: [PATCH] fix(quota): a snapshot revert must fit the quota A revert gives the VM the vCPUs and memory it had when the snapshot was taken. An owner could take a snapshot, shrink the VM, give the freed share to another VM and revert, ending over the quota. The revert now checks what it adds to the VM (against the larger of its running and next-start sizes) as a resize does: on the page when it is queued, and again in the worker before it runs, as a resize may have used the quota meanwhile. --- instances/jobs.py | 36 ++++++- instances/tests/test_host_devices.py | 4 +- instances/tests/test_snapshot_jobs.py | 52 +++++++++- locale/tr/LC_MESSAGES/django.mo | Bin 194562 -> 194896 bytes locale/tr/LC_MESSAGES/django.po | 132 ++++++++++++++------------ locale/zh/LC_MESSAGES/django.mo | Bin 181941 -> 182242 bytes locale/zh/LC_MESSAGES/django.po | 130 +++++++++++++------------ 7 files changed, 231 insertions(+), 123 deletions(-) diff --git a/instances/jobs.py b/instances/jobs.py index 7d97038c..ea5f2184 100644 --- a/instances/jobs.py +++ b/instances/jobs.py @@ -434,6 +434,28 @@ def _snapshot_definitions(proxy, params): return any(definition.xpath(HOST_DEVICES) for definition in definitions), definitions +def _revert_quota(user, instance, proxy, params): + """A revert gives the VM the vCPUs and memory it had then: what that adds + to what it has now (running or at its next start) must fit the user's + quota, as a resize must.""" + if user.is_superuser or instance.is_template: + return + sizes = [(d.findtext("vcpu"), d.findtext("memory")) for d in _snapshot_definitions(proxy, params)[1]] + if not sizes or any(None in size for size in sizes): # an old snapshot may record only the VM's UUID + raise util.OperationError(_("Snapshot %(name)s does not record the VM's vCPUs and memory: " + "the quota cannot be checked."), name=params["name"]) + with proxy.cached_reads(): + cpus = max(int(vcpu) for vcpu, _memory in sizes) - max(proxy.get_vcpu(), proxy.get_vcpu(config=True)) + memory = (max(int(memory) // 1024 for _vcpu, memory in sizes) + - max(proxy.get_memory(), proxy.get_memory(config=True))) + quota = utils.check_user_quota(user, 0, cpus, memory, 0) + if quota == utils.QUOTA_UNVERIFIED: + raise util.OperationError(utils.QUOTA_UNVERIFIED_TEXT) + if quota: + raise util.OperationError(_("%(quota)s: cannot revert to snapshot %(name)s."), + quota=utils.quota_message(quota), name=params["name"]) + + @register class RevertSnapshot(Kind): name = "snapshot.revert" @@ -445,13 +467,21 @@ class RevertSnapshot(Kind): "external": bool(raw.get("external"))} def validate(self, user, params): - _proxy(_authorized(user, params["instance"]))._snapshot(params["name"], params["external"]) + instance = _authorized(user, params["instance"]) + proxy = _proxy(instance) + proxy._snapshot(params["name"], params["external"]) + _revert_quota(user, instance, proxy, params) def plan(self, user, params): plan = _vm_plan(params) + instance = _instance(params["instance"]) # a revert that gives the VM host devices holds the whole compute: no other VM takes them meanwhile - if _snapshot_definitions(_proxy(_instance(params["instance"])), params)[0]: + if _snapshot_definitions(_proxy(instance), params)[0]: plan.claims[claims.compute_key(plan.intent["compute"])] = Claim.EXCLUSIVE + # the user's quota until it ends: the worker's check and the revert are one step to other + # increases (a resize, another revert), as a resize's check and change are + if not user.is_superuser and not instance.is_template: + plan.claims[claims.quota_key(user.pk)] = Claim.EXCLUSIVE return plan def precheck(self, op, ctx): @@ -460,6 +490,8 @@ class RevertSnapshot(Kind): proxy.check_external_revert(op.params["name"]) else: proxy.check_internal_revert() + # again: a resize while it was queued may have used the quota + _revert_quota(op.user, _instance(op.params["instance"]), proxy, op.params) # a revert gives the VM the host devices it had then: not one given since to another VM has_hostdevs, definitions = _snapshot_definitions(proxy, op.params) if has_hostdevs: diff --git a/instances/tests/test_host_devices.py b/instances/tests/test_host_devices.py index 7f21f9ae..78de37f5 100644 --- a/instances/tests/test_host_devices.py +++ b/instances/tests/test_host_devices.py @@ -167,8 +167,8 @@ class RevertTests(TestCase): def test_the_compute_is_held_only_for_a_revert_with_host_devices(self): compute = f"compute:{self.instance.compute_id}" self.snapshot(by_model()) - self.assertEqual(self.kind.plan(None, self.params).claims[compute], "exclusive") + self.assertEqual(self.kind.plan(MagicMock(is_superuser=True), self.params).claims[compute], "exclusive") self.snapshot("") - self.assertEqual(self.kind.plan(None, self.params).claims[compute], "shared") + self.assertEqual(self.kind.plan(MagicMock(is_superuser=True), self.params).claims[compute], "shared") self.precheck() # no host device: the host's devices are not read self.proxy.wvm.listAllDevices.assert_not_called() diff --git a/instances/tests/test_snapshot_jobs.py b/instances/tests/test_snapshot_jobs.py index bd5299e4..89091a51 100644 --- a/instances/tests/test_snapshot_jobs.py +++ b/instances/tests/test_snapshot_jobs.py @@ -1,14 +1,17 @@ """Snapshot create and revert run as jobs: the page queues them, the worker calls libvirt.""" from types import SimpleNamespace -from unittest.mock import patch +from unittest.mock import PropertyMock, patch from vrtManager.util import OperationError from django.contrib.auth import get_user_model from django.test import TransactionTestCase from django.urls import reverse +from accounts.models import UserAttributes, UserInstance from appsettings.settings import get_settings +from django.contrib.auth.models import Permission +from django.contrib.messages import get_messages from computes.models import Compute from instances.jobs import CreateSnapshot, RevertSnapshot from instances.models import Instance @@ -30,6 +33,10 @@ class SnapshotJobsTestCase(TransactionTestCase): self.proxy._snapshot.return_value.getXMLDesc.return_value = "" self.proxy.instance.isActive.return_value = False self.proxy.instance.hasCurrentSnapshot.return_value = 0 + # the quota's reads of the user's VMs + reads = patch("instances.utils.wvmInstance") + self.vm_reads = reads.start().return_value + self.addCleanup(reads.stop) def queue_and_run(self, view, data): """Post the form; nothing runs in the request; then run the job as the worker does.""" @@ -95,6 +102,49 @@ class SnapshotJobsTestCase(TransactionTestCase): self.assertEqual((op.kind, result), ("snapshot.revert", {"left_behind": ["/pool/a.one"]})) self.proxy.revert_external_snapshot.assert_called_once_with("a") + def test_a_revert_that_would_exceed_the_owner_s_quota_is_refused(self): + # snapshot at 4 vCPUs, shrunk to 2, the 2 given to another VM: reverting gives 6 of 4 + owner = get_user_model().objects.create_user("snap_owner", password="pw") + owner.user_permissions.add(Permission.objects.get(codename="snapshot_instances")) + UserAttributes.objects.update_or_create(user=owner, defaults={"max_cpus": 4, "max_memory": 2048, + "max_instances": -1, "max_disk_size": -1}) + UserInstance.objects.create(user=owner, instance=self.instance, is_change=True) + for proxy in (self.proxy, self.vm_reads): # the VM now: 2 vCPUs, 1 GiB, running and at its next start + proxy.get_vcpu.return_value, proxy.get_memory.return_value = 2, 1024 + proxy.get_disk_devices.return_value = [] + other = Instance.objects.create(compute=self.instance.compute, name="snap-other", uuid="21212121-3434-5656-7878-909090909091") + UserInstance.objects.create(user=owner, instance=other, is_change=True) + patch.object(Compute, "status", new_callable=PropertyMock, return_value=True).start() + self.addCleanup(patch.stopall) + for vcpu, memory, admitted in ((4, 1024, False), (2, 2048, False), (2, 1024, True)): + with self.subTest(vcpu=vcpu, memory=memory): + self.client.force_login(owner) # a new session: no messages of the last one + self.proxy._snapshot.return_value.getXMLDesc.return_value = ( + f"{vcpu}{memory * 1024}") + response = self.client.post(reverse("instances:revert_snapshot", args=[self.instance.pk]), + {"name": "a", "submission_key": f"key-snap{vcpu}{memory}"}) + self.assertEqual(Operation.objects.exists(), admitted) + shown = " ".join(str(m) for m in get_messages(response.wsgi_request)) + self.assertEqual("cannot revert to snapshot a" in shown, not admitted, shown) + self.client.logout() + # the admitted revert holds the owner's quota until it ends: no resize or other revert + # passes the check meanwhile (its own check in the worker and its revert are one step) + op = Operation.objects.get() + self.assertIn((f"quota:user:{owner.pk}", "exclusive"), set(Claim.objects.filter(operation=op).values_list("resource", "mode"))) + # the worker checks again: the VM may have been shrunk while it was queued (2 -> 1 vCPU, used elsewhere) + self.proxy.get_vcpu.return_value = 1 + with self.assertRaisesMessage(OperationError, "cannot revert to snapshot a"): + RevertSnapshot().precheck(op, None) + # an old snapshot may record only the VM's UUID: refused, not a server error + Operation.objects.all().delete() + Claim.objects.all().delete() + self.proxy._snapshot.return_value.getXMLDesc.return_value = "x" + self.client.force_login(owner) + response = self.client.post(reverse("instances:revert_snapshot", args=[self.instance.pk]), + {"name": "a", "submission_key": "key-snapold1"}) + self.assertFalse(Operation.objects.exists()) + self.assertIn("does not record the VM's vCPUs and memory", " ".join(str(m) for m in get_messages(response.wsgi_request))) + def test_a_revert_libvirt_cannot_do_is_refused_before_effects(self): self.proxy.check_external_revert.side_effect = OperationError("taken by an older version") with self.assertRaises(OperationError): diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo index 1c863a3f9e730f8cfb74536ea584d5a4761296b5..2984eb017a9dcf63705410a44ef7ceacdc0a4664 100644 GIT binary patch delta 43081 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 delta 42886 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 diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po index aee9fcd0..7f7ade86 100644 --- a/locale/tr/LC_MESSAGES/django.po +++ b/locale/tr/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-11-07 12:30+0000\n" +"POT-Creation-Date: 2026-11-07 13:19+0000\n" "PO-Revision-Date: 2020-11-04 12:00+0000\n" "Last-Translator: catborise , 2020\n" "Language-Team: Turkish (https://www.transifex.com/catborise/teams/110663/tr/)\n" @@ -2750,7 +2750,7 @@ msgstr "Klonun adını boş adlar listesinden seçin" msgid "%(quota)s: cannot create '%(clone_name)s'." msgstr "%(quota)s: '%(clone_name)s' oluşturulamıyor." -#: instances/jobs.py:200 instances/jobs.py:554 +#: instances/jobs.py:200 instances/jobs.py:586 #, python-format msgid "Instance '%(clone_name)s' already exists!" msgstr "'%(clone_name)s' sanal makinesi zaten mevcut!" @@ -2844,19 +2844,33 @@ msgstr "libvirt anlık görüntüyü hâlâ alıyor" msgid "The snapshot was not taken" msgstr "Anlık görüntü alınmadı" -#: instances/jobs.py:440 +#: instances/jobs.py:445 +#, python-format +msgid "" +"Snapshot %(name)s does not record the VM's vCPUs and memory: the quota cannot" +" be checked." +msgstr "" +"%(name)s anlık görüntüsü sanal makinenin vCPU ve bellek değerlerini " +"içermiyor: kota denetlenemiyor." + +#: instances/jobs.py:455 +#, python-format +msgid "%(quota)s: cannot revert to snapshot %(name)s." +msgstr "%(quota)s: %(name)s anlık görüntüsüne dönülemiyor." + +#: instances/jobs.py:462 msgid "Revert snapshot" msgstr "Snapshota dön" -#: instances/jobs.py:471 +#: instances/jobs.py:503 msgid "Reverting the VM" msgstr "Sanal makine geri döndürülüyor" -#: instances/jobs.py:482 +#: instances/jobs.py:514 msgid "libvirt is still reverting the VM" msgstr "libvirt sanal makineyi hâlâ geri döndürüyor" -#: instances/jobs.py:486 +#: instances/jobs.py:518 msgid "" "It cannot be told whether the VM was reverted; check it, then revert again or" " resolve this job." @@ -2864,12 +2878,12 @@ msgstr "" "Sanal makinenin geri döndürülüp döndürülmediği bilinemiyor; kontrol edin, " "sonra yeniden geri döndürün ya da bu işi çözün." -#: instances/jobs.py:503 +#: instances/jobs.py:535 msgid "The VM must be running, paused or shut off to be cloned" msgstr "" "Klonlanmak için sanal makine çalışıyor, duraklatılmış ya da kapalı olmalı" -#: instances/jobs.py:504 +#: instances/jobs.py:536 #, python-format msgid "" "The guest's file systems could not be thawed (%(error)s); thaw them with: " @@ -2878,19 +2892,19 @@ msgstr "" "Konuğun dosya sistemleri çözülemedi (%(error)s); şununla çözün: virsh " "domfsthaw %(vm)s" -#: instances/jobs.py:523 +#: instances/jobs.py:555 msgid "Clone VM" msgstr "Sanal makineyi klonla" -#: instances/jobs.py:564 instances/jobs.py:571 instances/jobs.py:849 +#: instances/jobs.py:596 instances/jobs.py:603 instances/jobs.py:881 msgid "Copying disks" msgstr "Diskler kopyalanıyor" -#: instances/jobs.py:623 +#: instances/jobs.py:655 msgid "libvirt has no result of the copy" msgstr "libvirt'te kopyanın sonucu yok" -#: instances/jobs.py:634 +#: instances/jobs.py:666 #, python-format msgid "" "The copy failed: %(error)s. The guest's file systems could not be thawed " @@ -2899,11 +2913,11 @@ msgstr "" "Kopyalama başarısız oldu: %(error)s. Konuğun dosya sistemleri çözülemedi " "(%(thaw)s); şununla çözün: virsh domfsthaw %(vm)s" -#: instances/jobs.py:637 instances/jobs.py:724 +#: instances/jobs.py:669 instances/jobs.py:756 msgid "The copy failed" msgstr "Kopyalama başarısız oldu" -#: instances/jobs.py:662 +#: instances/jobs.py:694 #, python-format msgid "" "The VM is no longer on the compute the job ran on; check these volumes, then " @@ -2912,7 +2926,7 @@ msgstr "" "Sanal makine artık işin çalıştığı sunucuda değil; şu birimleri kontrol edin, " "sonra bu işi çözün: %(volumes)s" -#: instances/jobs.py:700 +#: instances/jobs.py:732 #, python-format msgid "" "A volume of the clone was being created; check these volumes, then resolve " @@ -2921,15 +2935,15 @@ msgstr "" "Klonun bir birimi oluşturuluyordu; şu birimleri kontrol edin, sonra bu işi " "çözün: %(volumes)s" -#: instances/jobs.py:704 +#: instances/jobs.py:736 msgid "The job stopped before the copy started" msgstr "İş, kopyalama başlamadan durdu" -#: instances/jobs.py:711 +#: instances/jobs.py:743 msgid "libvirt is still copying the disks" msgstr "libvirt diskleri hâlâ kopyalıyor" -#: instances/jobs.py:714 +#: instances/jobs.py:746 #, python-format msgid "" "Another backup runs on the VM; check these volumes, then resolve this job: " @@ -2938,7 +2952,7 @@ msgstr "" "Sanal makinede başka bir yedekleme çalışıyor; şu birimleri kontrol edin, " "sonra bu işi çözün: %(volumes)s" -#: instances/jobs.py:719 +#: instances/jobs.py:751 #, python-format msgid "" "libvirt has no result of the copy; check these volumes, then resolve this " @@ -2947,7 +2961,7 @@ msgstr "" "libvirt'te kopyanın sonucu yok; şu birimleri kontrol edin, sonra bu işi " "çözün: %(volumes)s" -#: instances/jobs.py:731 +#: instances/jobs.py:763 #, python-format msgid "" "The disks were copied, but the clone could not be defined: %(error)s; check " @@ -2956,74 +2970,74 @@ msgstr "" "Diskler kopyalandı, ancak klon tanımlanamadı: %(error)s; şu birimleri kontrol" " edin, sonra bu işi çözün: %(volumes)s" -#: instances/jobs.py:754 instances/templates/create_instance_w1.html:60 +#: instances/jobs.py:786 instances/templates/create_instance_w1.html:60 #: instances/templates/create_instance_w2.html:356 msgid "Create VM" msgstr "Sanal makine oluştur" -#: instances/jobs.py:778 instances/jobs.py:823 instances/views.py:2474 +#: instances/jobs.py:810 instances/jobs.py:855 instances/views.py:2474 msgid "A virtual machine with this name already exists" msgstr "Bu isimde bir sanal makine mevcut" -#: instances/jobs.py:780 instances/jobs.py:820 +#: instances/jobs.py:812 instances/jobs.py:852 msgid "There is an instance with same name. Remove it and try again!" msgstr "Aynı isimde başka bir sanal makine var. Onu silip yeniden deneyin!" -#: instances/jobs.py:783 +#: instances/jobs.py:815 msgid "First you need to create or select an image" msgstr "Öncelikle bir imaj oluşturun ya da mevcut bir imajı seçin" -#: instances/jobs.py:785 +#: instances/jobs.py:817 msgid "Choose one disk source: a new disk, existing volumes or a template" msgstr "" "Tek bir disk kaynağı seçin: yeni bir disk, mevcut birimler ya da bir şablon" -#: instances/jobs.py:787 +#: instances/jobs.py:819 msgid "Image has already exist. Please check volumes or change instance name" msgstr "" "İmaj zaten mevcut. Lütfen ya makine adını değişin ya da disk alanlarını " "kontrol edin" -#: instances/jobs.py:789 +#: instances/jobs.py:821 msgid "Invalid cache mode" msgstr "Geçersiz önbellek modu" -#: instances/jobs.py:791 +#: instances/jobs.py:823 #, python-format msgid "This host offers no CPU mode or model %(mode)s" msgstr "Bu sunucu %(mode)s CPU modunu veya modelini sunmuyor" -#: instances/jobs.py:793 +#: instances/jobs.py:825 #, python-format msgid "A CD-ROM cannot use the %(bus)s bus" msgstr "CD-ROM %(bus)s veri yolunu kullanamaz" -#: instances/jobs.py:796 +#: instances/jobs.py:828 msgid "The cloud-init seed is read from a CD-ROM: choose its bus" msgstr "cloud-init tohumu bir CD-ROM'dan okunur: veri yolunu seçin" -#: instances/jobs.py:799 +#: instances/jobs.py:831 msgid "The cloud-init seed needs a directory storage pool for the disk" msgstr "cloud-init tohumu, disk için bir dizin depolama havuzu gerektirir" -#: instances/jobs.py:805 +#: instances/jobs.py:837 #, python-format msgid "This host offers no firmware %(firmware)s" msgstr "Bu sunucu %(firmware)s firmware'ini sunmuyor" -#: instances/jobs.py:807 vrtManager/instance.py:3010 +#: instances/jobs.py:839 vrtManager/instance.py:3010 msgid "This host offers no TPM 2.0: install swtpm on it" msgstr "Bu sunucu TPM 2.0 sunmuyor: üzerine swtpm kurun" -#: instances/jobs.py:868 +#: instances/jobs.py:900 msgid "Writing the cloud-init seed" msgstr "cloud-init tohumu yazılıyor" -#: instances/jobs.py:875 +#: instances/jobs.py:907 msgid "Defining the VM" msgstr "Sanal makine tanımlanıyor" -#: instances/jobs.py:908 +#: instances/jobs.py:940 #, python-format msgid "" "The panel failed unexpectedly; its log has the details. Remove these volumes " @@ -3032,114 +3046,114 @@ msgstr "" "Panel beklenmedik bir hatayla karşılaştı; ayrıntılar panelin günlüğünde. Bu " "birimleri elle kaldırın: %(volumes)s" -#: instances/jobs.py:912 +#: instances/jobs.py:944 #, python-format msgid "%(error)s. Remove these volumes by hand: %(volumes)s" msgstr "%(error)s. Şu birimleri elle silin: %(volumes)s" -#: instances/jobs.py:937 +#: instances/jobs.py:969 #, python-format msgid "The instance is already on %(compute)s" msgstr "Sanal makine zaten %(compute)s üzerinde" -#: instances/jobs.py:939 +#: instances/jobs.py:971 #, python-format msgid "%(compute)s is not reachable" msgstr "%(compute)s sunucusuna ulaşılamıyor" -#: instances/jobs.py:941 +#: instances/jobs.py:973 #, python-format msgid "%(compute)s is the VM's own host under another name" msgstr "%(compute)s, sanal makinenin kendi sunucusunun başka bir adı" -#: instances/jobs.py:981 +#: instances/jobs.py:1013 #, python-format msgid "" "The VM migrated, but autostart could not be set on the destination: %(error)s" msgstr "" "Sanal makine taşındı, ancak hedefte otomatik başlatma ayarlanamadı: %(error)s" -#: instances/jobs.py:988 +#: instances/jobs.py:1020 #, python-format msgid "The VM migrated, but its NVRAM file stays on the source: %(error)s" msgstr "Sanal makine taşındı, ancak NVRAM dosyası kaynakta kaldı: %(error)s" -#: instances/jobs.py:996 +#: instances/jobs.py:1028 msgid "Migrate VM" msgstr "Sanal makineyi taşı" -#: instances/jobs.py:1043 +#: instances/jobs.py:1075 msgid "Migrating the VM" msgstr "Sanal makine taşınıyor" -#: instances/jobs.py:1093 +#: instances/jobs.py:1125 msgid "libvirt is still migrating the VM" msgstr "libvirt sanal makineyi hâlâ taşıyor" -#: instances/jobs.py:1104 +#: instances/jobs.py:1136 msgid "The VM stayed on the source host" msgstr "Sanal makine kaynak sunucuda kaldı" -#: instances/jobs.py:1106 +#: instances/jobs.py:1138 msgid "" "The VM is on both computes or on neither; check them, then resolve this job." msgstr "" "Sanal makine ya iki sunucuda da var ya da hiçbirinde yok; kontrol edin, sonra" " bu işi çözün." -#: instances/jobs.py:1154 +#: instances/jobs.py:1186 msgid "Move disk" msgstr "Diski taşı" -#: instances/jobs.py:1161 +#: instances/jobs.py:1193 msgid "Choose a disk of the VM" msgstr "Sanal makinenin bir diskini seçin" -#: instances/jobs.py:1185 +#: instances/jobs.py:1217 msgid "Copying the disk" msgstr "Disk kopyalanıyor" -#: instances/jobs.py:1228 +#: instances/jobs.py:1260 #, python-format msgid "Another block job runs on %(dev)s; check the VM" msgstr "" "%(dev)s üzerinde başka bir blok işi çalışıyor; sanal makineyi kontrol edin" -#: instances/jobs.py:1234 +#: instances/jobs.py:1266 #, python-format msgid "The disk stayed in %(path)s; remove %(dest)s if it is there" msgstr "Disk %(path)s içinde kaldı; varsa %(dest)s dosyasını silin" -#: instances/jobs.py:1236 +#: instances/jobs.py:1268 #, python-format msgid "The definitions of %(dev)s name %(paths)s; check the VM" msgstr "%(dev)s tanımları %(paths)s gösteriyor; sanal makineyi kontrol edin" -#: instances/jobs.py:1243 +#: instances/jobs.py:1275 #, python-format msgid "Disk %(path)s was kept: a disk file that stays needs it" msgstr "%(path)s diski korundu: kalan bir disk dosyası ona ihtiyaç duyuyor" -#: instances/jobs.py:1244 +#: instances/jobs.py:1276 #, python-format msgid "The VM is removed, but disk %(path)s was not deleted: %(err)s" msgstr "Sanal makine kaldırıldı, ancak %(path)s diski silinmedi: %(err)s" -#: instances/jobs.py:1245 +#: instances/jobs.py:1277 #, python-format msgid "Disk %(path)s is used by another VM and was kept" msgstr "" "%(path)s diski başka bir sanal makine tarafından kullanılıyor ve korundu" -#: instances/jobs.py:1299 +#: instances/jobs.py:1331 msgid "Delete VM" msgstr "Sanal makineyi sil" -#: instances/jobs.py:1329 +#: instances/jobs.py:1361 msgid "Deleting the VM" msgstr "Sanal makine siliniyor" -#: instances/jobs.py:1341 +#: instances/jobs.py:1373 msgid "The VM was not deleted; it may have been shut off" msgstr "Sanal makine silinmedi; kapatılmış olabilir" diff --git a/locale/zh/LC_MESSAGES/django.mo b/locale/zh/LC_MESSAGES/django.mo index 8a0ff608e348015d0f8e67f7df2c31af651f659d..89cd34c887842a0d290f4cc60e0e6536fbf04e7a 100644 GIT binary patch delta 43107 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 delta 42881 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 diff --git a/locale/zh/LC_MESSAGES/django.po b/locale/zh/LC_MESSAGES/django.po index 59bb8a3a..1e737cb3 100644 --- a/locale/zh/LC_MESSAGES/django.po +++ b/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-11-07 12:30+0000\n" +"POT-Creation-Date: 2026-11-07 13:19+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2653,7 +2653,7 @@ msgstr "请从可用名称列表中选择克隆的名称" msgid "%(quota)s: cannot create '%(clone_name)s'." msgstr "%(quota)s:无法创建“%(clone_name)s”。" -#: instances/jobs.py:200 instances/jobs.py:554 +#: instances/jobs.py:200 instances/jobs.py:586 #, python-format msgid "Instance '%(clone_name)s' already exists!" msgstr "虚拟机 '%(clone_name)s' 已存在!" @@ -2742,275 +2742,287 @@ msgstr "libvirt 仍在创建快照" msgid "The snapshot was not taken" msgstr "未创建快照" -#: instances/jobs.py:440 +#: instances/jobs.py:445 +#, python-format +msgid "" +"Snapshot %(name)s does not record the VM's vCPUs and memory: the quota cannot" +" be checked." +msgstr "快照“%(name)s”未记录虚拟机的 vCPU 和内存:无法检查配额。" + +#: instances/jobs.py:455 +#, python-format +msgid "%(quota)s: cannot revert to snapshot %(name)s." +msgstr "%(quota)s:无法恢复到快照“%(name)s”。" + +#: instances/jobs.py:462 msgid "Revert snapshot" msgstr "恢复快照" -#: instances/jobs.py:471 +#: instances/jobs.py:503 msgid "Reverting the VM" msgstr "正在恢复虚拟机" -#: instances/jobs.py:482 +#: instances/jobs.py:514 msgid "libvirt is still reverting the VM" msgstr "libvirt 仍在恢复虚拟机" -#: instances/jobs.py:486 +#: instances/jobs.py:518 msgid "" "It cannot be told whether the VM was reverted; check it, then revert again or" " resolve this job." msgstr "无法判断虚拟机是否已恢复;请检查后再次恢复,或处理此任务。" -#: instances/jobs.py:503 +#: instances/jobs.py:535 msgid "The VM must be running, paused or shut off to be cloned" msgstr "虚拟机必须处于运行、暂停或关机状态才能克隆" -#: instances/jobs.py:504 +#: instances/jobs.py:536 #, python-format msgid "" "The guest's file systems could not be thawed (%(error)s); thaw them with: " "virsh domfsthaw %(vm)s" msgstr "无法解冻客户机的文件系统(%(error)s);请用以下命令解冻:virsh domfsthaw %(vm)s" -#: instances/jobs.py:523 +#: instances/jobs.py:555 msgid "Clone VM" msgstr "克隆虚拟机" -#: instances/jobs.py:564 instances/jobs.py:571 instances/jobs.py:849 +#: instances/jobs.py:596 instances/jobs.py:603 instances/jobs.py:881 msgid "Copying disks" msgstr "正在复制磁盘" -#: instances/jobs.py:623 +#: instances/jobs.py:655 msgid "libvirt has no result of the copy" msgstr "libvirt 没有复制的结果" -#: instances/jobs.py:634 +#: instances/jobs.py:666 #, python-format msgid "" "The copy failed: %(error)s. The guest's file systems could not be thawed " "(%(thaw)s); thaw them with: virsh domfsthaw %(vm)s" msgstr "复制失败:%(error)s。无法解冻客户机的文件系统(%(thaw)s);请用以下命令解冻:virsh domfsthaw %(vm)s" -#: instances/jobs.py:637 instances/jobs.py:724 +#: instances/jobs.py:669 instances/jobs.py:756 msgid "The copy failed" msgstr "复制失败" -#: instances/jobs.py:662 +#: instances/jobs.py:694 #, python-format msgid "" "The VM is no longer on the compute the job ran on; check these volumes, then " "resolve this job: %(volumes)s" msgstr "虚拟机已不在运行该任务的计算节点上;请检查这些卷,然后处理此任务:%(volumes)s" -#: instances/jobs.py:700 +#: instances/jobs.py:732 #, python-format msgid "" "A volume of the clone was being created; check these volumes, then resolve " "this job: %(volumes)s" msgstr "克隆的一个卷正在创建中;请检查这些卷,然后处理此任务:%(volumes)s" -#: instances/jobs.py:704 +#: instances/jobs.py:736 msgid "The job stopped before the copy started" msgstr "任务在复制开始前停止" -#: instances/jobs.py:711 +#: instances/jobs.py:743 msgid "libvirt is still copying the disks" msgstr "libvirt 仍在复制磁盘" -#: instances/jobs.py:714 +#: instances/jobs.py:746 #, python-format msgid "" "Another backup runs on the VM; check these volumes, then resolve this job: " "%(volumes)s" msgstr "虚拟机上正在运行另一个备份;请检查这些卷,然后处理此任务:%(volumes)s" -#: instances/jobs.py:719 +#: instances/jobs.py:751 #, python-format msgid "" "libvirt has no result of the copy; check these volumes, then resolve this " "job: %(volumes)s" msgstr "libvirt 没有复制的结果;请检查这些卷,然后处理此任务:%(volumes)s" -#: instances/jobs.py:731 +#: instances/jobs.py:763 #, python-format msgid "" "The disks were copied, but the clone could not be defined: %(error)s; check " "these volumes, then resolve this job: %(volumes)s" msgstr "磁盘已复制,但无法定义克隆:%(error)s;请检查这些卷,然后处理此任务:%(volumes)s" -#: instances/jobs.py:754 instances/templates/create_instance_w1.html:60 +#: instances/jobs.py:786 instances/templates/create_instance_w1.html:60 #: instances/templates/create_instance_w2.html:356 msgid "Create VM" msgstr "创建虚拟机" -#: instances/jobs.py:778 instances/jobs.py:823 instances/views.py:2474 +#: instances/jobs.py:810 instances/jobs.py:855 instances/views.py:2474 msgid "A virtual machine with this name already exists" msgstr "同名虚拟机已存在" -#: instances/jobs.py:780 instances/jobs.py:820 +#: instances/jobs.py:812 instances/jobs.py:852 msgid "There is an instance with same name. Remove it and try again!" msgstr "已存在同名虚拟机。请删除后重试!" -#: instances/jobs.py:783 +#: instances/jobs.py:815 msgid "First you need to create or select an image" msgstr "请先创建或选择一个镜像" -#: instances/jobs.py:785 +#: instances/jobs.py:817 msgid "Choose one disk source: a new disk, existing volumes or a template" msgstr "请选择一种磁盘来源:新磁盘、现有卷或模板" -#: instances/jobs.py:787 +#: instances/jobs.py:819 msgid "Image has already exist. Please check volumes or change instance name" msgstr "镜像已存在。请检查卷或更改虚拟机名称" -#: instances/jobs.py:789 +#: instances/jobs.py:821 msgid "Invalid cache mode" msgstr "无效的缓存模式" -#: instances/jobs.py:791 +#: instances/jobs.py:823 #, python-format msgid "This host offers no CPU mode or model %(mode)s" msgstr "此主机不提供 CPU 模式或型号 %(mode)s" -#: instances/jobs.py:793 +#: instances/jobs.py:825 #, python-format msgid "A CD-ROM cannot use the %(bus)s bus" msgstr "CD-ROM 不能使用 %(bus)s 总线" -#: instances/jobs.py:796 +#: instances/jobs.py:828 msgid "The cloud-init seed is read from a CD-ROM: choose its bus" msgstr "cloud-init 种子从 CD-ROM 读取:请选择其总线" -#: instances/jobs.py:799 +#: instances/jobs.py:831 msgid "The cloud-init seed needs a directory storage pool for the disk" msgstr "cloud-init 种子需要为磁盘使用目录类型的存储池" -#: instances/jobs.py:805 +#: instances/jobs.py:837 #, python-format msgid "This host offers no firmware %(firmware)s" msgstr "此主机不提供固件 %(firmware)s" -#: instances/jobs.py:807 vrtManager/instance.py:3010 +#: instances/jobs.py:839 vrtManager/instance.py:3010 msgid "This host offers no TPM 2.0: install swtpm on it" msgstr "此主机不提供 TPM 2.0:请在主机上安装 swtpm" -#: instances/jobs.py:868 +#: instances/jobs.py:900 msgid "Writing the cloud-init seed" msgstr "正在写入 cloud-init 种子" -#: instances/jobs.py:875 +#: instances/jobs.py:907 msgid "Defining the VM" msgstr "正在定义虚拟机" -#: instances/jobs.py:908 +#: instances/jobs.py:940 #, python-format msgid "" "The panel failed unexpectedly; its log has the details. Remove these volumes " "by hand: %(volumes)s" msgstr "面板发生意外错误;详细信息见面板日志。请手动删除这些卷:%(volumes)s" -#: instances/jobs.py:912 +#: instances/jobs.py:944 #, python-format msgid "%(error)s. Remove these volumes by hand: %(volumes)s" msgstr "%(error)s。请手动删除这些卷:%(volumes)s" -#: instances/jobs.py:937 +#: instances/jobs.py:969 #, python-format msgid "The instance is already on %(compute)s" msgstr "虚拟机已在 %(compute)s 上" -#: instances/jobs.py:939 +#: instances/jobs.py:971 #, python-format msgid "%(compute)s is not reachable" msgstr "无法连接 %(compute)s" -#: instances/jobs.py:941 +#: instances/jobs.py:973 #, python-format msgid "%(compute)s is the VM's own host under another name" msgstr "%(compute)s 是该虚拟机所在主机的另一个名称" -#: instances/jobs.py:981 +#: instances/jobs.py:1013 #, python-format msgid "" "The VM migrated, but autostart could not be set on the destination: %(error)s" msgstr "虚拟机已迁移,但无法在目标主机上设置自动启动:%(error)s" -#: instances/jobs.py:988 +#: instances/jobs.py:1020 #, python-format msgid "The VM migrated, but its NVRAM file stays on the source: %(error)s" msgstr "虚拟机已迁移,但其 NVRAM 文件仍留在源主机上:%(error)s" -#: instances/jobs.py:996 +#: instances/jobs.py:1028 msgid "Migrate VM" msgstr "迁移虚拟机" -#: instances/jobs.py:1043 +#: instances/jobs.py:1075 msgid "Migrating the VM" msgstr "正在迁移虚拟机" -#: instances/jobs.py:1093 +#: instances/jobs.py:1125 msgid "libvirt is still migrating the VM" msgstr "libvirt 仍在迁移虚拟机" -#: instances/jobs.py:1104 +#: instances/jobs.py:1136 msgid "The VM stayed on the source host" msgstr "虚拟机留在了源主机上" -#: instances/jobs.py:1106 +#: instances/jobs.py:1138 msgid "" "The VM is on both computes or on neither; check them, then resolve this job." msgstr "虚拟机同时位于两个计算节点上,或都不在;请检查后处理此任务。" -#: instances/jobs.py:1154 +#: instances/jobs.py:1186 msgid "Move disk" msgstr "移动磁盘" -#: instances/jobs.py:1161 +#: instances/jobs.py:1193 msgid "Choose a disk of the VM" msgstr "请选择虚拟机的一个磁盘" -#: instances/jobs.py:1185 +#: instances/jobs.py:1217 msgid "Copying the disk" msgstr "正在复制磁盘" -#: instances/jobs.py:1228 +#: instances/jobs.py:1260 #, python-format msgid "Another block job runs on %(dev)s; check the VM" msgstr "%(dev)s 上正在运行另一个块任务;请检查虚拟机" -#: instances/jobs.py:1234 +#: instances/jobs.py:1266 #, python-format msgid "The disk stayed in %(path)s; remove %(dest)s if it is there" msgstr "磁盘仍在 %(path)s;如果 %(dest)s 存在,请将其删除" -#: instances/jobs.py:1236 +#: instances/jobs.py:1268 #, python-format msgid "The definitions of %(dev)s name %(paths)s; check the VM" msgstr "%(dev)s 的定义指向 %(paths)s;请检查虚拟机" -#: instances/jobs.py:1243 +#: instances/jobs.py:1275 #, python-format msgid "Disk %(path)s was kept: a disk file that stays needs it" msgstr "磁盘 %(path)s 已保留:某个保留的磁盘文件依赖它" -#: instances/jobs.py:1244 +#: instances/jobs.py:1276 #, python-format msgid "The VM is removed, but disk %(path)s was not deleted: %(err)s" msgstr "虚拟机已删除,但磁盘 %(path)s 未被删除:%(err)s" -#: instances/jobs.py:1245 +#: instances/jobs.py:1277 #, python-format msgid "Disk %(path)s is used by another VM and was kept" msgstr "磁盘 %(path)s 正被另一台虚拟机使用,已保留" -#: instances/jobs.py:1299 +#: instances/jobs.py:1331 msgid "Delete VM" msgstr "删除虚拟机" -#: instances/jobs.py:1329 +#: instances/jobs.py:1361 msgid "Deleting the VM" msgstr "正在删除虚拟机" -#: instances/jobs.py:1341 +#: instances/jobs.py:1373 msgid "The VM was not deleted; it may have been shut off" msgstr "虚拟机未被删除;它可能已被关闭"