mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 11:16:47 +00:00
fix(instances): a clone's MAC address is not the VM's or another of its NICs'
The addresses were checked for their form only: a clone could keep the VM's address, or give two NICs one, and the NICs on a network then take each other's traffic. Such an address is refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kk4h2TcUiaWmU5MUszYSea
This commit is contained in:
parent
41ef48f2e0
commit
d49db11e78
6 changed files with 182 additions and 154 deletions
|
|
@ -205,6 +205,14 @@ def clone_data(user, instance, fields):
|
|||
clone_name=data["name"])
|
||||
if invalid_macs:
|
||||
raise util.OperationError(_("Instance MAC '%(clone_mac)s' invalid format!"), clone_mac=", ".join(invalid_macs))
|
||||
# two NICs of one address on a network take each other's traffic
|
||||
taken = {net["mac"].lower() for net in instance.config_networks}
|
||||
for key, value in data.items():
|
||||
if key.startswith("clone-net-mac-"):
|
||||
mac = value.lower() if ":" in value else ":".join(value[i:i + 2] for i in range(0, 12, 2)).lower()
|
||||
if mac in taken:
|
||||
raise util.OperationError(_("MAC address %(mac)s is the VM's or another NIC's of the clone"), mac=mac)
|
||||
taken.add(mac)
|
||||
if invalid_disks:
|
||||
raise util.OperationError(_("Disk name '%(disk_name)s' contains invalid characters!"),
|
||||
disk_name=", ".join(str(v) for v in invalid_disks))
|
||||
|
|
|
|||
|
|
@ -340,6 +340,15 @@ class LiveCloneJobTestCase(TransactionTestCase):
|
|||
CloneInstance().plan(self.admin, {"instance": self.source.pk, "fields": {
|
||||
"name": name, "disk-vda": "copy.qcow2", "clone-net-mac-0": "52:54:00:00:00:01"}})
|
||||
|
||||
def test_a_mac_of_the_vm_or_of_another_nic_of_the_clone_is_refused(self):
|
||||
for macs in (["52:54:00:AA:BB:CC"], ["52:54:00:00:00:01", "525400000001"]):
|
||||
with self.subTest(macs=macs):
|
||||
self.proxy.get_net_devices.return_value = [{"mac": "52:54:00:aa:bb:cc"}, {"mac": "52:54:00:aa:bb:cd"}]
|
||||
fields = {"name": "copy", "disk-vda": "copy.qcow2", "clone-net-mac-1": "52:54:00:00:00:09",
|
||||
**{f"clone-net-mac-{n}": mac for n, mac in enumerate(macs)}}
|
||||
with self.assertRaisesMessage(OperationError, "is the VM's or another NIC's of the clone"):
|
||||
CloneInstance().plan(self.admin, {"instance": self.source.pk, "fields": fields})
|
||||
|
||||
def test_another_state_is_refused(self):
|
||||
self.proxy.get_status.return_value = 4 # shutting down
|
||||
with self.assertRaisesMessage(OperationError, "The VM must be running, paused or shut off to be cloned"):
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -11,7 +11,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-11-07 20:43+0000\n"
|
||||
"POT-Creation-Date: 2026-11-07 20:44+0000\n"
|
||||
"PO-Revision-Date: 2020-11-04 12:00+0000\n"
|
||||
"Last-Translator: catborise <muhammetalisag@gmail.com>, 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:199 instances/jobs.py:591
|
||||
#: instances/jobs.py:199 instances/jobs.py:599
|
||||
#, python-format
|
||||
msgid "Instance '%(clone_name)s' already exists!"
|
||||
msgstr "'%(clone_name)s' sanal makinesi zaten mevcut!"
|
||||
|
|
@ -2770,21 +2770,27 @@ msgstr "Sanal makine adı '%(clone_name)s' geçersiz karakterler içermektedir!"
|
|||
msgid "Instance MAC '%(clone_mac)s' invalid format!"
|
||||
msgstr "Sanal makine MAC adresi '%(clone_mac)s' geçersiz biçemde belirtilmiş!"
|
||||
|
||||
#: instances/jobs.py:209
|
||||
#: instances/jobs.py:214
|
||||
#, python-format
|
||||
msgid "MAC address %(mac)s is the VM's or another NIC's of the clone"
|
||||
msgstr ""
|
||||
"%(mac)s MAC adresi sanal makinenin ya da klonun başka bir ağ kartının adresi"
|
||||
|
||||
#: instances/jobs.py:217
|
||||
#, python-format
|
||||
msgid "Disk name '%(disk_name)s' contains invalid characters!"
|
||||
msgstr "Disk adı '%(disk_name)s' geçersiz karakterler içeriyor!"
|
||||
|
||||
#: instances/jobs.py:229
|
||||
#: instances/jobs.py:237
|
||||
#, python-format
|
||||
msgid "The clone is made, but not as asked: %(error)s"
|
||||
msgstr "Klon oluşturuldu, ama istendiği gibi değil: %(error)s"
|
||||
|
||||
#: instances/jobs.py:287
|
||||
#: instances/jobs.py:295
|
||||
msgid "The VM was not defined and no volume of it was left."
|
||||
msgstr "Sanal makine tanımlanmadı ve ondan geriye birim kalmadı."
|
||||
|
||||
#: instances/jobs.py:289
|
||||
#: instances/jobs.py:297
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VM was not defined; check these volumes, then resolve this job: "
|
||||
|
|
@ -2793,28 +2799,28 @@ msgstr ""
|
|||
"Sanal makine tanımlanmadı; şu birimleri kontrol edin, sonra bu işi çözün: "
|
||||
"%(volumes)s"
|
||||
|
||||
#: instances/jobs.py:310
|
||||
#: instances/jobs.py:318
|
||||
msgid "Delete snapshot"
|
||||
msgstr "Anlık görüntüyü sil"
|
||||
|
||||
#: instances/jobs.py:320 vrtManager/instance.py:2300
|
||||
#: instances/jobs.py:328 vrtManager/instance.py:2300
|
||||
#, python-format
|
||||
msgid "The VM has no external snapshot named %(name)s"
|
||||
msgstr "Sanal makinede %(name)s adında harici anlık görüntü yok"
|
||||
|
||||
#: instances/jobs.py:333
|
||||
#: instances/jobs.py:341
|
||||
msgid "Merging the snapshot"
|
||||
msgstr "Anlık görüntü birleştiriliyor"
|
||||
|
||||
#: instances/jobs.py:352
|
||||
#: instances/jobs.py:360
|
||||
msgid "The VM is no longer on its compute"
|
||||
msgstr "Sanal makine artık kendi sunucusunda değil"
|
||||
|
||||
#: instances/jobs.py:355
|
||||
#: instances/jobs.py:363
|
||||
msgid "libvirt is still merging the snapshot"
|
||||
msgstr "libvirt anlık görüntüyü hâlâ birleştiriyor"
|
||||
|
||||
#: instances/jobs.py:363
|
||||
#: instances/jobs.py:371
|
||||
msgid ""
|
||||
"The snapshot is still listed and no merge runs. It cannot be told whether the"
|
||||
" disks changed; check the VM before deleting the snapshot again or reverting "
|
||||
|
|
@ -2824,32 +2830,32 @@ msgstr ""
|
|||
"değişmediği bilinemiyor; anlık görüntüyü yeniden silmeden ya da ona dönmeden "
|
||||
"önce sanal makineyi kontrol edin."
|
||||
|
||||
#: instances/jobs.py:370
|
||||
#: instances/jobs.py:378
|
||||
msgid "The VM is no longer on the compute the job ran on"
|
||||
msgstr "Sanal makine artık işin çalıştığı sunucuda değil"
|
||||
|
||||
#: instances/jobs.py:376
|
||||
#: instances/jobs.py:384
|
||||
msgid "Take snapshot"
|
||||
msgstr "Anlık görüntü al"
|
||||
|
||||
#: instances/jobs.py:388 instances/jobs.py:397 vrtManager/instance.py:1896
|
||||
#: instances/jobs.py:396 instances/jobs.py:405 vrtManager/instance.py:1896
|
||||
#, python-format
|
||||
msgid "A snapshot named %(name)s already exists"
|
||||
msgstr "%(name)s adında bir anlık görüntü zaten var"
|
||||
|
||||
#: instances/jobs.py:403
|
||||
#: instances/jobs.py:411
|
||||
msgid "Taking the snapshot"
|
||||
msgstr "Anlık görüntü alınıyor"
|
||||
|
||||
#: instances/jobs.py:416
|
||||
#: instances/jobs.py:424
|
||||
msgid "libvirt is still taking the snapshot"
|
||||
msgstr "libvirt anlık görüntüyü hâlâ alıyor"
|
||||
|
||||
#: instances/jobs.py:419
|
||||
#: instances/jobs.py:427
|
||||
msgid "The snapshot was not taken"
|
||||
msgstr "Anlık görüntü alınmadı"
|
||||
|
||||
#: instances/jobs.py:447
|
||||
#: instances/jobs.py:455
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Snapshot %(name)s does not record the VM's vCPUs and memory: the quota cannot"
|
||||
|
|
@ -2858,24 +2864,24 @@ msgstr ""
|
|||
"%(name)s anlık görüntüsü sanal makinenin vCPU ve bellek değerlerini "
|
||||
"içermiyor: kota denetlenemiyor."
|
||||
|
||||
#: instances/jobs.py:457
|
||||
#: instances/jobs.py:465
|
||||
#, 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:464
|
||||
#: instances/jobs.py:472
|
||||
msgid "Revert snapshot"
|
||||
msgstr "Snapshota dön"
|
||||
|
||||
#: instances/jobs.py:505
|
||||
#: instances/jobs.py:513
|
||||
msgid "Reverting the VM"
|
||||
msgstr "Sanal makine geri döndürülüyor"
|
||||
|
||||
#: instances/jobs.py:516
|
||||
#: instances/jobs.py:524
|
||||
msgid "libvirt is still reverting the VM"
|
||||
msgstr "libvirt sanal makineyi hâlâ geri döndürüyor"
|
||||
|
||||
#: instances/jobs.py:520
|
||||
#: instances/jobs.py:528
|
||||
msgid ""
|
||||
"It cannot be told whether the VM was reverted; check it, then revert again or"
|
||||
" resolve this job."
|
||||
|
|
@ -2883,12 +2889,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:537
|
||||
#: instances/jobs.py:545
|
||||
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:538
|
||||
#: instances/jobs.py:546
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The guest's file systems could not be thawed (%(error)s); thaw them with: "
|
||||
|
|
@ -2897,19 +2903,19 @@ msgstr ""
|
|||
"Konuğun dosya sistemleri çözülemedi (%(error)s); şununla çözün: virsh "
|
||||
"domfsthaw %(vm)s"
|
||||
|
||||
#: instances/jobs.py:560
|
||||
#: instances/jobs.py:568
|
||||
msgid "Clone VM"
|
||||
msgstr "Sanal makineyi klonla"
|
||||
|
||||
#: instances/jobs.py:601 instances/jobs.py:608 instances/jobs.py:886
|
||||
#: instances/jobs.py:609 instances/jobs.py:616 instances/jobs.py:894
|
||||
msgid "Copying disks"
|
||||
msgstr "Diskler kopyalanıyor"
|
||||
|
||||
#: instances/jobs.py:660
|
||||
#: instances/jobs.py:668
|
||||
msgid "libvirt has no result of the copy"
|
||||
msgstr "libvirt'te kopyanın sonucu yok"
|
||||
|
||||
#: instances/jobs.py:671
|
||||
#: instances/jobs.py:679
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The copy failed: %(error)s. The guest's file systems could not be thawed "
|
||||
|
|
@ -2918,11 +2924,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:674 instances/jobs.py:761
|
||||
#: instances/jobs.py:682 instances/jobs.py:769
|
||||
msgid "The copy failed"
|
||||
msgstr "Kopyalama başarısız oldu"
|
||||
|
||||
#: instances/jobs.py:699
|
||||
#: instances/jobs.py:707
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VM is no longer on the compute the job ran on; check these volumes, then "
|
||||
|
|
@ -2931,7 +2937,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:737
|
||||
#: instances/jobs.py:745
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A volume of the clone was being created; check these volumes, then resolve "
|
||||
|
|
@ -2940,15 +2946,15 @@ msgstr ""
|
|||
"Klonun bir birimi oluşturuluyordu; şu birimleri kontrol edin, sonra bu işi "
|
||||
"çözün: %(volumes)s"
|
||||
|
||||
#: instances/jobs.py:741
|
||||
#: instances/jobs.py:749
|
||||
msgid "The job stopped before the copy started"
|
||||
msgstr "İş, kopyalama başlamadan durdu"
|
||||
|
||||
#: instances/jobs.py:748
|
||||
#: instances/jobs.py:756
|
||||
msgid "libvirt is still copying the disks"
|
||||
msgstr "libvirt diskleri hâlâ kopyalıyor"
|
||||
|
||||
#: instances/jobs.py:751
|
||||
#: instances/jobs.py:759
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Another backup runs on the VM; check these volumes, then resolve this job: "
|
||||
|
|
@ -2957,7 +2963,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:756
|
||||
#: instances/jobs.py:764
|
||||
#, python-format
|
||||
msgid ""
|
||||
"libvirt has no result of the copy; check these volumes, then resolve this "
|
||||
|
|
@ -2966,7 +2972,7 @@ msgstr ""
|
|||
"libvirt'te kopyanın sonucu yok; şu birimleri kontrol edin, sonra bu işi "
|
||||
"çözün: %(volumes)s"
|
||||
|
||||
#: instances/jobs.py:768
|
||||
#: instances/jobs.py:776
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The disks were copied, but the clone could not be defined: %(error)s; check "
|
||||
|
|
@ -2975,74 +2981,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:791 instances/templates/create_instance_w1.html:60
|
||||
#: instances/jobs.py:799 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:815 instances/jobs.py:860 instances/views.py:2468
|
||||
#: instances/jobs.py:823 instances/jobs.py:868 instances/views.py:2468
|
||||
msgid "A virtual machine with this name already exists"
|
||||
msgstr "Bu isimde bir sanal makine mevcut"
|
||||
|
||||
#: instances/jobs.py:817 instances/jobs.py:857
|
||||
#: instances/jobs.py:825 instances/jobs.py:865
|
||||
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:820
|
||||
#: instances/jobs.py:828
|
||||
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:822
|
||||
#: instances/jobs.py:830
|
||||
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:824
|
||||
#: instances/jobs.py:832
|
||||
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:826
|
||||
#: instances/jobs.py:834
|
||||
msgid "Invalid cache mode"
|
||||
msgstr "Geçersiz önbellek modu"
|
||||
|
||||
#: instances/jobs.py:828
|
||||
#: instances/jobs.py:836
|
||||
#, 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:830
|
||||
#: instances/jobs.py:838
|
||||
#, python-format
|
||||
msgid "A CD-ROM cannot use the %(bus)s bus"
|
||||
msgstr "CD-ROM %(bus)s veri yolunu kullanamaz"
|
||||
|
||||
#: instances/jobs.py:833
|
||||
#: instances/jobs.py:841
|
||||
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:836
|
||||
#: instances/jobs.py:844
|
||||
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:842
|
||||
#: instances/jobs.py:850
|
||||
#, python-format
|
||||
msgid "This host offers no firmware %(firmware)s"
|
||||
msgstr "Bu sunucu %(firmware)s firmware'ini sunmuyor"
|
||||
|
||||
#: instances/jobs.py:844 vrtManager/instance.py:3049
|
||||
#: instances/jobs.py:852 vrtManager/instance.py:3049
|
||||
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:905
|
||||
#: instances/jobs.py:913
|
||||
msgid "Writing the cloud-init seed"
|
||||
msgstr "cloud-init tohumu yazılıyor"
|
||||
|
||||
#: instances/jobs.py:912
|
||||
#: instances/jobs.py:920
|
||||
msgid "Defining the VM"
|
||||
msgstr "Sanal makine tanımlanıyor"
|
||||
|
||||
#: instances/jobs.py:945
|
||||
#: instances/jobs.py:953
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The panel failed unexpectedly; its log has the details. Remove these volumes "
|
||||
|
|
@ -3051,114 +3057,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:949
|
||||
#: instances/jobs.py:957
|
||||
#, python-format
|
||||
msgid "%(error)s. Remove these volumes by hand: %(volumes)s"
|
||||
msgstr "%(error)s. Şu birimleri elle silin: %(volumes)s"
|
||||
|
||||
#: instances/jobs.py:974
|
||||
#: instances/jobs.py:982
|
||||
#, python-format
|
||||
msgid "The instance is already on %(compute)s"
|
||||
msgstr "Sanal makine zaten %(compute)s üzerinde"
|
||||
|
||||
#: instances/jobs.py:976
|
||||
#: instances/jobs.py:984
|
||||
#, python-format
|
||||
msgid "%(compute)s is not reachable"
|
||||
msgstr "%(compute)s sunucusuna ulaşılamıyor"
|
||||
|
||||
#: instances/jobs.py:978
|
||||
#: instances/jobs.py:986
|
||||
#, 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:1037
|
||||
#: instances/jobs.py:1045
|
||||
#, 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:1044
|
||||
#: instances/jobs.py:1052
|
||||
#, 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:1052
|
||||
#: instances/jobs.py:1060
|
||||
msgid "Migrate VM"
|
||||
msgstr "Sanal makineyi taşı"
|
||||
|
||||
#: instances/jobs.py:1099
|
||||
#: instances/jobs.py:1107
|
||||
msgid "Migrating the VM"
|
||||
msgstr "Sanal makine taşınıyor"
|
||||
|
||||
#: instances/jobs.py:1148
|
||||
#: instances/jobs.py:1156
|
||||
msgid "libvirt is still migrating the VM"
|
||||
msgstr "libvirt sanal makineyi hâlâ taşıyor"
|
||||
|
||||
#: instances/jobs.py:1160
|
||||
#: instances/jobs.py:1168
|
||||
msgid "The VM stayed on the source host"
|
||||
msgstr "Sanal makine kaynak sunucuda kaldı"
|
||||
|
||||
#: instances/jobs.py:1162
|
||||
#: instances/jobs.py:1170
|
||||
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:1181
|
||||
#: instances/jobs.py:1189
|
||||
msgid "Move disk"
|
||||
msgstr "Diski taşı"
|
||||
|
||||
#: instances/jobs.py:1188
|
||||
#: instances/jobs.py:1196
|
||||
msgid "Choose a disk of the VM"
|
||||
msgstr "Sanal makinenin bir diskini seçin"
|
||||
|
||||
#: instances/jobs.py:1212
|
||||
#: instances/jobs.py:1220
|
||||
msgid "Copying the disk"
|
||||
msgstr "Disk kopyalanıyor"
|
||||
|
||||
#: instances/jobs.py:1255
|
||||
#: instances/jobs.py:1263
|
||||
#, 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:1261
|
||||
#: instances/jobs.py:1269
|
||||
#, 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:1263
|
||||
#: instances/jobs.py:1271
|
||||
#, 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:1270
|
||||
#: instances/jobs.py:1278
|
||||
#, 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:1271
|
||||
#: instances/jobs.py:1279
|
||||
#, 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:1272
|
||||
#: instances/jobs.py:1280
|
||||
#, 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:1326
|
||||
#: instances/jobs.py:1334
|
||||
msgid "Delete VM"
|
||||
msgstr "Sanal makineyi sil"
|
||||
|
||||
#: instances/jobs.py:1356
|
||||
#: instances/jobs.py:1364
|
||||
msgid "Deleting the VM"
|
||||
msgstr "Sanal makine siliniyor"
|
||||
|
||||
#: instances/jobs.py:1368
|
||||
#: instances/jobs.py:1376
|
||||
msgid "The VM was not deleted; it may have been shut off"
|
||||
msgstr "Sanal makine silinmedi; kapatılmış olabilir"
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-11-07 20:43+0000\n"
|
||||
"POT-Creation-Date: 2026-11-07 20:44+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:199 instances/jobs.py:591
|
||||
#: instances/jobs.py:199 instances/jobs.py:599
|
||||
#, python-format
|
||||
msgid "Instance '%(clone_name)s' already exists!"
|
||||
msgstr "虚拟机 '%(clone_name)s' 已存在!"
|
||||
|
|
@ -2673,361 +2673,366 @@ msgstr "虚拟机名称 '%(clone_name)s' 包含无效字符!"
|
|||
msgid "Instance MAC '%(clone_mac)s' invalid format!"
|
||||
msgstr "虚拟机 MAC '%(clone_mac)s' 格式无效!"
|
||||
|
||||
#: instances/jobs.py:209
|
||||
#: instances/jobs.py:214
|
||||
#, python-format
|
||||
msgid "MAC address %(mac)s is the VM's or another NIC's of the clone"
|
||||
msgstr "MAC 地址 %(mac)s 已属于该虚拟机或克隆的另一个网卡"
|
||||
|
||||
#: instances/jobs.py:217
|
||||
#, python-format
|
||||
msgid "Disk name '%(disk_name)s' contains invalid characters!"
|
||||
msgstr "磁盘名称 '%(disk_name)s' 包含无效字符!"
|
||||
|
||||
#: instances/jobs.py:229
|
||||
#: instances/jobs.py:237
|
||||
#, python-format
|
||||
msgid "The clone is made, but not as asked: %(error)s"
|
||||
msgstr "克隆已创建,但与要求不符:%(error)s"
|
||||
|
||||
#: instances/jobs.py:287
|
||||
#: instances/jobs.py:295
|
||||
msgid "The VM was not defined and no volume of it was left."
|
||||
msgstr "虚拟机未定义,也没有留下它的卷。"
|
||||
|
||||
#: instances/jobs.py:289
|
||||
#: instances/jobs.py:297
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VM was not defined; check these volumes, then resolve this job: "
|
||||
"%(volumes)s"
|
||||
msgstr "虚拟机未定义;请检查这些卷,然后处理此任务:%(volumes)s"
|
||||
|
||||
#: instances/jobs.py:310
|
||||
#: instances/jobs.py:318
|
||||
msgid "Delete snapshot"
|
||||
msgstr "删除快照"
|
||||
|
||||
#: instances/jobs.py:320 vrtManager/instance.py:2300
|
||||
#: instances/jobs.py:328 vrtManager/instance.py:2300
|
||||
#, python-format
|
||||
msgid "The VM has no external snapshot named %(name)s"
|
||||
msgstr "虚拟机没有名为 %(name)s 的外部快照"
|
||||
|
||||
#: instances/jobs.py:333
|
||||
#: instances/jobs.py:341
|
||||
msgid "Merging the snapshot"
|
||||
msgstr "正在合并快照"
|
||||
|
||||
#: instances/jobs.py:352
|
||||
#: instances/jobs.py:360
|
||||
msgid "The VM is no longer on its compute"
|
||||
msgstr "虚拟机已不在其计算节点上"
|
||||
|
||||
#: instances/jobs.py:355
|
||||
#: instances/jobs.py:363
|
||||
msgid "libvirt is still merging the snapshot"
|
||||
msgstr "libvirt 仍在合并快照"
|
||||
|
||||
#: instances/jobs.py:363
|
||||
#: instances/jobs.py:371
|
||||
msgid ""
|
||||
"The snapshot is still listed and no merge runs. It cannot be told whether the"
|
||||
" disks changed; check the VM before deleting the snapshot again or reverting "
|
||||
"to it."
|
||||
msgstr "快照仍在列表中,且没有正在运行的合并。无法判断磁盘是否已更改;再次删除该快照或恢复到它之前,请检查虚拟机。"
|
||||
|
||||
#: instances/jobs.py:370
|
||||
#: instances/jobs.py:378
|
||||
msgid "The VM is no longer on the compute the job ran on"
|
||||
msgstr "虚拟机已不在运行该任务的计算节点上"
|
||||
|
||||
#: instances/jobs.py:376
|
||||
#: instances/jobs.py:384
|
||||
msgid "Take snapshot"
|
||||
msgstr "创建快照"
|
||||
|
||||
#: instances/jobs.py:388 instances/jobs.py:397 vrtManager/instance.py:1896
|
||||
#: instances/jobs.py:396 instances/jobs.py:405 vrtManager/instance.py:1896
|
||||
#, python-format
|
||||
msgid "A snapshot named %(name)s already exists"
|
||||
msgstr "名为 %(name)s 的快照已存在"
|
||||
|
||||
#: instances/jobs.py:403
|
||||
#: instances/jobs.py:411
|
||||
msgid "Taking the snapshot"
|
||||
msgstr "正在创建快照"
|
||||
|
||||
#: instances/jobs.py:416
|
||||
#: instances/jobs.py:424
|
||||
msgid "libvirt is still taking the snapshot"
|
||||
msgstr "libvirt 仍在创建快照"
|
||||
|
||||
#: instances/jobs.py:419
|
||||
#: instances/jobs.py:427
|
||||
msgid "The snapshot was not taken"
|
||||
msgstr "未创建快照"
|
||||
|
||||
#: instances/jobs.py:447
|
||||
#: instances/jobs.py:455
|
||||
#, 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:457
|
||||
#: instances/jobs.py:465
|
||||
#, python-format
|
||||
msgid "%(quota)s: cannot revert to snapshot %(name)s."
|
||||
msgstr "%(quota)s:无法恢复到快照“%(name)s”。"
|
||||
|
||||
#: instances/jobs.py:464
|
||||
#: instances/jobs.py:472
|
||||
msgid "Revert snapshot"
|
||||
msgstr "恢复快照"
|
||||
|
||||
#: instances/jobs.py:505
|
||||
#: instances/jobs.py:513
|
||||
msgid "Reverting the VM"
|
||||
msgstr "正在恢复虚拟机"
|
||||
|
||||
#: instances/jobs.py:516
|
||||
#: instances/jobs.py:524
|
||||
msgid "libvirt is still reverting the VM"
|
||||
msgstr "libvirt 仍在恢复虚拟机"
|
||||
|
||||
#: instances/jobs.py:520
|
||||
#: instances/jobs.py:528
|
||||
msgid ""
|
||||
"It cannot be told whether the VM was reverted; check it, then revert again or"
|
||||
" resolve this job."
|
||||
msgstr "无法判断虚拟机是否已恢复;请检查后再次恢复,或处理此任务。"
|
||||
|
||||
#: instances/jobs.py:537
|
||||
#: instances/jobs.py:545
|
||||
msgid "The VM must be running, paused or shut off to be cloned"
|
||||
msgstr "虚拟机必须处于运行、暂停或关机状态才能克隆"
|
||||
|
||||
#: instances/jobs.py:538
|
||||
#: instances/jobs.py:546
|
||||
#, 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:560
|
||||
#: instances/jobs.py:568
|
||||
msgid "Clone VM"
|
||||
msgstr "克隆虚拟机"
|
||||
|
||||
#: instances/jobs.py:601 instances/jobs.py:608 instances/jobs.py:886
|
||||
#: instances/jobs.py:609 instances/jobs.py:616 instances/jobs.py:894
|
||||
msgid "Copying disks"
|
||||
msgstr "正在复制磁盘"
|
||||
|
||||
#: instances/jobs.py:660
|
||||
#: instances/jobs.py:668
|
||||
msgid "libvirt has no result of the copy"
|
||||
msgstr "libvirt 没有复制的结果"
|
||||
|
||||
#: instances/jobs.py:671
|
||||
#: instances/jobs.py:679
|
||||
#, 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:674 instances/jobs.py:761
|
||||
#: instances/jobs.py:682 instances/jobs.py:769
|
||||
msgid "The copy failed"
|
||||
msgstr "复制失败"
|
||||
|
||||
#: instances/jobs.py:699
|
||||
#: instances/jobs.py:707
|
||||
#, 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:737
|
||||
#: instances/jobs.py:745
|
||||
#, 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:741
|
||||
#: instances/jobs.py:749
|
||||
msgid "The job stopped before the copy started"
|
||||
msgstr "任务在复制开始前停止"
|
||||
|
||||
#: instances/jobs.py:748
|
||||
#: instances/jobs.py:756
|
||||
msgid "libvirt is still copying the disks"
|
||||
msgstr "libvirt 仍在复制磁盘"
|
||||
|
||||
#: instances/jobs.py:751
|
||||
#: instances/jobs.py:759
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Another backup runs on the VM; check these volumes, then resolve this job: "
|
||||
"%(volumes)s"
|
||||
msgstr "虚拟机上正在运行另一个备份;请检查这些卷,然后处理此任务:%(volumes)s"
|
||||
|
||||
#: instances/jobs.py:756
|
||||
#: instances/jobs.py:764
|
||||
#, 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:768
|
||||
#: instances/jobs.py:776
|
||||
#, 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:791 instances/templates/create_instance_w1.html:60
|
||||
#: instances/jobs.py:799 instances/templates/create_instance_w1.html:60
|
||||
#: instances/templates/create_instance_w2.html:356
|
||||
msgid "Create VM"
|
||||
msgstr "创建虚拟机"
|
||||
|
||||
#: instances/jobs.py:815 instances/jobs.py:860 instances/views.py:2468
|
||||
#: instances/jobs.py:823 instances/jobs.py:868 instances/views.py:2468
|
||||
msgid "A virtual machine with this name already exists"
|
||||
msgstr "同名虚拟机已存在"
|
||||
|
||||
#: instances/jobs.py:817 instances/jobs.py:857
|
||||
#: instances/jobs.py:825 instances/jobs.py:865
|
||||
msgid "There is an instance with same name. Remove it and try again!"
|
||||
msgstr "已存在同名虚拟机。请删除后重试!"
|
||||
|
||||
#: instances/jobs.py:820
|
||||
#: instances/jobs.py:828
|
||||
msgid "First you need to create or select an image"
|
||||
msgstr "请先创建或选择一个镜像"
|
||||
|
||||
#: instances/jobs.py:822
|
||||
#: instances/jobs.py:830
|
||||
msgid "Choose one disk source: a new disk, existing volumes or a template"
|
||||
msgstr "请选择一种磁盘来源:新磁盘、现有卷或模板"
|
||||
|
||||
#: instances/jobs.py:824
|
||||
#: instances/jobs.py:832
|
||||
msgid "Image has already exist. Please check volumes or change instance name"
|
||||
msgstr "镜像已存在。请检查卷或更改虚拟机名称"
|
||||
|
||||
#: instances/jobs.py:826
|
||||
#: instances/jobs.py:834
|
||||
msgid "Invalid cache mode"
|
||||
msgstr "无效的缓存模式"
|
||||
|
||||
#: instances/jobs.py:828
|
||||
#: instances/jobs.py:836
|
||||
#, python-format
|
||||
msgid "This host offers no CPU mode or model %(mode)s"
|
||||
msgstr "此主机不提供 CPU 模式或型号 %(mode)s"
|
||||
|
||||
#: instances/jobs.py:830
|
||||
#: instances/jobs.py:838
|
||||
#, python-format
|
||||
msgid "A CD-ROM cannot use the %(bus)s bus"
|
||||
msgstr "CD-ROM 不能使用 %(bus)s 总线"
|
||||
|
||||
#: instances/jobs.py:833
|
||||
#: instances/jobs.py:841
|
||||
msgid "The cloud-init seed is read from a CD-ROM: choose its bus"
|
||||
msgstr "cloud-init 种子从 CD-ROM 读取:请选择其总线"
|
||||
|
||||
#: instances/jobs.py:836
|
||||
#: instances/jobs.py:844
|
||||
msgid "The cloud-init seed needs a directory storage pool for the disk"
|
||||
msgstr "cloud-init 种子需要为磁盘使用目录类型的存储池"
|
||||
|
||||
#: instances/jobs.py:842
|
||||
#: instances/jobs.py:850
|
||||
#, python-format
|
||||
msgid "This host offers no firmware %(firmware)s"
|
||||
msgstr "此主机不提供固件 %(firmware)s"
|
||||
|
||||
#: instances/jobs.py:844 vrtManager/instance.py:3049
|
||||
#: instances/jobs.py:852 vrtManager/instance.py:3049
|
||||
msgid "This host offers no TPM 2.0: install swtpm on it"
|
||||
msgstr "此主机不提供 TPM 2.0:请在主机上安装 swtpm"
|
||||
|
||||
#: instances/jobs.py:905
|
||||
#: instances/jobs.py:913
|
||||
msgid "Writing the cloud-init seed"
|
||||
msgstr "正在写入 cloud-init 种子"
|
||||
|
||||
#: instances/jobs.py:912
|
||||
#: instances/jobs.py:920
|
||||
msgid "Defining the VM"
|
||||
msgstr "正在定义虚拟机"
|
||||
|
||||
#: instances/jobs.py:945
|
||||
#: instances/jobs.py:953
|
||||
#, 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:949
|
||||
#: instances/jobs.py:957
|
||||
#, python-format
|
||||
msgid "%(error)s. Remove these volumes by hand: %(volumes)s"
|
||||
msgstr "%(error)s。请手动删除这些卷:%(volumes)s"
|
||||
|
||||
#: instances/jobs.py:974
|
||||
#: instances/jobs.py:982
|
||||
#, python-format
|
||||
msgid "The instance is already on %(compute)s"
|
||||
msgstr "虚拟机已在 %(compute)s 上"
|
||||
|
||||
#: instances/jobs.py:976
|
||||
#: instances/jobs.py:984
|
||||
#, python-format
|
||||
msgid "%(compute)s is not reachable"
|
||||
msgstr "无法连接 %(compute)s"
|
||||
|
||||
#: instances/jobs.py:978
|
||||
#: instances/jobs.py:986
|
||||
#, python-format
|
||||
msgid "%(compute)s is the VM's own host under another name"
|
||||
msgstr "%(compute)s 是该虚拟机所在主机的另一个名称"
|
||||
|
||||
#: instances/jobs.py:1037
|
||||
#: instances/jobs.py:1045
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VM migrated, but autostart could not be set on the destination: %(error)s"
|
||||
msgstr "虚拟机已迁移,但无法在目标主机上设置自动启动:%(error)s"
|
||||
|
||||
#: instances/jobs.py:1044
|
||||
#: instances/jobs.py:1052
|
||||
#, python-format
|
||||
msgid "The VM migrated, but its NVRAM file stays on the source: %(error)s"
|
||||
msgstr "虚拟机已迁移,但其 NVRAM 文件仍留在源主机上:%(error)s"
|
||||
|
||||
#: instances/jobs.py:1052
|
||||
#: instances/jobs.py:1060
|
||||
msgid "Migrate VM"
|
||||
msgstr "迁移虚拟机"
|
||||
|
||||
#: instances/jobs.py:1099
|
||||
#: instances/jobs.py:1107
|
||||
msgid "Migrating the VM"
|
||||
msgstr "正在迁移虚拟机"
|
||||
|
||||
#: instances/jobs.py:1148
|
||||
#: instances/jobs.py:1156
|
||||
msgid "libvirt is still migrating the VM"
|
||||
msgstr "libvirt 仍在迁移虚拟机"
|
||||
|
||||
#: instances/jobs.py:1160
|
||||
#: instances/jobs.py:1168
|
||||
msgid "The VM stayed on the source host"
|
||||
msgstr "虚拟机留在了源主机上"
|
||||
|
||||
#: instances/jobs.py:1162
|
||||
#: instances/jobs.py:1170
|
||||
msgid ""
|
||||
"The VM is on both computes or on neither; check them, then resolve this job."
|
||||
msgstr "虚拟机同时位于两个计算节点上,或都不在;请检查后处理此任务。"
|
||||
|
||||
#: instances/jobs.py:1181
|
||||
#: instances/jobs.py:1189
|
||||
msgid "Move disk"
|
||||
msgstr "移动磁盘"
|
||||
|
||||
#: instances/jobs.py:1188
|
||||
#: instances/jobs.py:1196
|
||||
msgid "Choose a disk of the VM"
|
||||
msgstr "请选择虚拟机的一个磁盘"
|
||||
|
||||
#: instances/jobs.py:1212
|
||||
#: instances/jobs.py:1220
|
||||
msgid "Copying the disk"
|
||||
msgstr "正在复制磁盘"
|
||||
|
||||
#: instances/jobs.py:1255
|
||||
#: instances/jobs.py:1263
|
||||
#, python-format
|
||||
msgid "Another block job runs on %(dev)s; check the VM"
|
||||
msgstr "%(dev)s 上正在运行另一个块任务;请检查虚拟机"
|
||||
|
||||
#: instances/jobs.py:1261
|
||||
#: instances/jobs.py:1269
|
||||
#, python-format
|
||||
msgid "The disk stayed in %(path)s; remove %(dest)s if it is there"
|
||||
msgstr "磁盘仍在 %(path)s;如果 %(dest)s 存在,请将其删除"
|
||||
|
||||
#: instances/jobs.py:1263
|
||||
#: instances/jobs.py:1271
|
||||
#, python-format
|
||||
msgid "The definitions of %(dev)s name %(paths)s; check the VM"
|
||||
msgstr "%(dev)s 的定义指向 %(paths)s;请检查虚拟机"
|
||||
|
||||
#: instances/jobs.py:1270
|
||||
#: instances/jobs.py:1278
|
||||
#, python-format
|
||||
msgid "Disk %(path)s was kept: a disk file that stays needs it"
|
||||
msgstr "磁盘 %(path)s 已保留:某个保留的磁盘文件依赖它"
|
||||
|
||||
#: instances/jobs.py:1271
|
||||
#: instances/jobs.py:1279
|
||||
#, python-format
|
||||
msgid "The VM is removed, but disk %(path)s was not deleted: %(err)s"
|
||||
msgstr "虚拟机已删除,但磁盘 %(path)s 未被删除:%(err)s"
|
||||
|
||||
#: instances/jobs.py:1272
|
||||
#: instances/jobs.py:1280
|
||||
#, python-format
|
||||
msgid "Disk %(path)s is used by another VM and was kept"
|
||||
msgstr "磁盘 %(path)s 正被另一台虚拟机使用,已保留"
|
||||
|
||||
#: instances/jobs.py:1326
|
||||
#: instances/jobs.py:1334
|
||||
msgid "Delete VM"
|
||||
msgstr "删除虚拟机"
|
||||
|
||||
#: instances/jobs.py:1356
|
||||
#: instances/jobs.py:1364
|
||||
msgid "Deleting the VM"
|
||||
msgstr "正在删除虚拟机"
|
||||
|
||||
#: instances/jobs.py:1368
|
||||
#: instances/jobs.py:1376
|
||||
msgid "The VM was not deleted; it may have been shut off"
|
||||
msgstr "虚拟机未被删除;它可能已被关闭"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue