mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 11:16:47 +00:00
feat(instances): the Resize tab shows how much a VM has within its maximum
Each sub-tab (CPU, Memory, Disks) opened on a two-column card that put a heading and a sentence of current values beside the forms, and the CPU tab added two more rows: Live vCPUs as a row of "0 · Fixed / 1 · On" buttons and vCPU hot plug as a select with its own Save. Now each sub-tab opens on the VM's size. CPU: one cell per vCPU up to the maximum, filled when on, with "2 on, up to 4" and the host's logical CPUs; on a running VM with hot-pluggable vCPUs the cells are the buttons that turn them on and off. Memory: a bar of the current memory within the maximum, with the host's memory. Disks: a row per disk with its format, size now and a new size. The forms below keep their names and posts; the CPU fields are disabled while the VM runs, and hot plug is a switch that posts on change. A memory or disk resize returns to its own sub-tab.
This commit is contained in:
parent
103ce111ef
commit
607c8381b4
12 changed files with 543 additions and 619 deletions
|
|
@ -128,6 +128,16 @@ class Instance(models.Model):
|
|||
def vcpus(self):
|
||||
return self.proxy.get_vcpus()
|
||||
|
||||
@cached_property
|
||||
def vcpu_cells(self) -> list[dict]:
|
||||
"""One cell per vCPU up to the maximum, as the Resize tab draws them:
|
||||
its id, whether it is on, and whether it can be turned off and on
|
||||
(a VM with hot-pluggable vCPUs lists them; vCPU 0 never is)."""
|
||||
if self.vcpus:
|
||||
return [{"id": id, "on": v["enabled"] == "yes", "fixed": v["hotpluggable"] != "yes"}
|
||||
for id, v in self.vcpus.items()]
|
||||
return [{"id": str(i), "on": i < self.cur_vcpu, "fixed": True} for i in range(self.vcpu)]
|
||||
|
||||
@cached_property
|
||||
def get_uuid(self):
|
||||
return self.proxy.get_uuid()
|
||||
|
|
|
|||
|
|
@ -1,206 +1,134 @@
|
|||
{% load i18n %}
|
||||
{% load bootstrap_icons %}
|
||||
<div class="tab-pane" id="resize" role="tabpanel">
|
||||
<!-- Nav tabs -->
|
||||
{# each resource on its own tab: how much the VM has now within its maximum, and the form that changes it #}
|
||||
<div class="card">
|
||||
<div class="card-header bg-transparent pb-0">
|
||||
<ul class="nav nav-underline small" role="tablist" aria-label="Instance resize options">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#resizevm_cpu" type="button" role="tab" aria-controls="resizevm_cpu" aria-selected="true">
|
||||
{% trans "CPU" %}
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#resizevm_mem" type="button" role="tab" aria-controls="resizevm_mem" aria-selected="false">
|
||||
{% trans "Memory" %}
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#resizevm_disk" type="button" role="tab" aria-controls="resizevm_disk" aria-selected="false">
|
||||
{% trans "Disk" %}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Tab panes -->
|
||||
<div class="tab-content card-body">
|
||||
<div role="tabpanel" class="tab-pane active" id="resizevm_cpu">
|
||||
{% if can_change %}
|
||||
<div class="list-group">
|
||||
<form class="list-group-item p-3 p-md-4" action="{% url 'instances:resizevm_cpu' instance.id %}" method="post" aria-labelledby="cpu-heading">{% csrf_token %}
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-lg-4">
|
||||
<h2 class="h6" id="cpu-heading">{% bs_icon 'cpu' %} {% trans "CPU allocation" %}</h2>
|
||||
<p class="small text-body-secondary mb-2">{% blocktrans with cur=instance.cur_vcpu max=instance.vcpu %}Now {{ cur }} of {{ max }} vCPUs.{% endblocktrans %}</p>
|
||||
<p class="small mb-0">{% trans "Host" %}: <strong>{% blocktrans with count=vcpu_host %}{{ count }} logical CPUs{% endblocktrans %}</strong></p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-8">
|
||||
<p class="small text-body-secondary" id="cpu-help">
|
||||
{% if instance.status == 5 %}{% trans "The VM gets these at its next start." %}
|
||||
{% else %}{% trans "Shut the VM down to change its vCPUs." %}{% if instance.vcpus %} {% trans "While it runs, turn vCPUs on and off below." %}{% endif %}{% endif %}
|
||||
</p>
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="cur_vcpu">{% trans "Current vCPUs" %}</label>
|
||||
<select class="form-select" id="cur_vcpu" name="cur_vcpu" aria-describedby="cpu-help">
|
||||
{% for cpu in instance.vcpu_range %}
|
||||
<option value="{{ cpu }}"{% if cpu == instance.config_cur_vcpu %} selected{% endif %}>{{ cpu }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="max_vcpu">{% trans "Maximum vCPUs" %}</label>
|
||||
<select class="form-select" id="max_vcpu" name="vcpu" aria-describedby="cpu-help">
|
||||
{% for cpu in instance.vcpu_range %}
|
||||
<option value="{{ cpu }}"{% if cpu == instance.config_vcpu %} selected{% endif %}>{{ cpu }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-end mt-3">
|
||||
<button type="submit" class="btn btn-primary" name="resizevm_cpu"{% if instance.status != 5 %} disabled{% endif %}>{% trans "Resize CPU" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
{% if not can_change %}
|
||||
<div class="card-body">
|
||||
<p class="mb-0">{% trans "You don't have permission for resizing instance" %}</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="card-header bg-transparent pb-0">
|
||||
<ul class="nav nav-underline small" role="tablist" aria-label="{% trans "Resources to resize" %}">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="resizevm_cpu-tab" data-bs-toggle="tab" data-bs-target="#resizevm_cpu" type="button" role="tab" aria-controls="resizevm_cpu" aria-selected="true">{% trans "CPU" %}</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="resizevm_mem-tab" data-bs-toggle="tab" data-bs-target="#resizevm_mem" type="button" role="tab" aria-controls="resizevm_mem" aria-selected="false">{% trans "Memory" %}</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="resizevm_disk-tab" data-bs-toggle="tab" data-bs-target="#resizevm_disk" type="button" role="tab" aria-controls="resizevm_disk" aria-selected="false">{% trans "Disks" %}</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-content card-body">
|
||||
<div class="tab-pane active" id="resizevm_cpu" role="tabpanel" aria-labelledby="resizevm_cpu-tab">
|
||||
{# one cell per vCPU up to the maximum, filled when on; a running VM's hot-pluggable ones turn on and off here #}
|
||||
{% with toggles=request.user.is_superuser %}
|
||||
<div class="d-flex flex-wrap align-items-center gap-2 mb-3">
|
||||
<div class="d-flex flex-wrap gap-1" role="group" aria-label="{% trans "vCPUs" %}">
|
||||
{% for cell in instance.vcpu_cells %}
|
||||
{% if toggles and instance.status != 5 and instance.vcpus and not cell.fixed %}
|
||||
<form action="{% url 'instances:set_vcpu' instance.id %}" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="id" value="{{ cell.id }}">
|
||||
{% if cell.on %}
|
||||
<button type="submit" class="vcpu-cell on" name="set_vcpu" value="False"{% if instance.status == 3 %} disabled{% endif %}>{{ cell.id }}<span class="visually-hidden"> {% trans "on, turn off" %}</span></button>
|
||||
{% else %}
|
||||
<button type="submit" class="vcpu-cell" name="set_vcpu" value="True">{{ cell.id }}<span class="visually-hidden"> {% trans "off, turn on" %}</span></button>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% else %}
|
||||
<span class="vcpu-cell{% if cell.on %} on{% endif %}">{{ cell.id }}<span class="visually-hidden"> {% if cell.on %}{% trans "on" %}{% else %}{% trans "off" %}{% endif %}</span></span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<span class="small">{% blocktrans with cur=instance.cur_vcpu max=instance.vcpu %}{{ cur }} on, up to {{ max }}{% endblocktrans %}</span>
|
||||
<span class="small ms-auto text-body-secondary">{% blocktrans with count=vcpu_host %}Host: {{ count }} logical CPUs{% endblocktrans %}</span>
|
||||
</div>
|
||||
{% if toggles and instance.status != 5 and instance.vcpus %}
|
||||
<p class="small text-body-secondary mt-n2 mb-3">{% trans "Click a vCPU to turn it on or off now; the next start keeps it so." %}{% if instance.status == 3 %} {% trans "A paused VM cannot let one go: resume it to turn vCPUs off." %}{% endif %}</p>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
<form class="row g-2 align-items-end" action="{% url 'instances:resizevm_cpu' instance.id %}" method="post">{% csrf_token %}
|
||||
<div class="col-6 col-sm-3">
|
||||
<label class="form-label small mb-1" for="cur_vcpu">{% trans "Current" %}</label>
|
||||
<select class="form-select" id="cur_vcpu" name="cur_vcpu" aria-describedby="cpu-help"{% if instance.status != 5 %} disabled{% endif %}>
|
||||
{% for cpu in instance.vcpu_range %}<option value="{{ cpu }}"{% if cpu == instance.config_cur_vcpu %} selected{% endif %}>{{ cpu }}</option>{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-6 col-sm-3">
|
||||
<label class="form-label small mb-1" for="max_vcpu">{% trans "Maximum" %}</label>
|
||||
<select class="form-select" id="max_vcpu" name="vcpu" aria-describedby="cpu-help"{% if instance.status != 5 %} disabled{% endif %}>
|
||||
{% for cpu in instance.vcpu_range %}<option value="{{ cpu }}"{% if cpu == instance.config_vcpu %} selected{% endif %}>{{ cpu }}</option>{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12 col-sm-auto ms-sm-auto">
|
||||
<button type="submit" class="btn btn-primary resize-act" name="resizevm_cpu"{% if instance.status != 5 %} disabled{% endif %}>{% trans "Resize CPU" %}</button>
|
||||
</div>
|
||||
</form>
|
||||
{% if request.user.is_superuser and instance.vcpus and instance.status != 5 %}
|
||||
<section class="list-group-item p-3 p-md-4" aria-labelledby="vcpus-heading">
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-lg-4">
|
||||
<h3 class="h6" id="vcpus-heading">{% trans "Live vCPUs" %}</h3>
|
||||
<p class="small text-body-secondary mb-0">
|
||||
{% trans "Turn a vCPU on or off now; the next start keeps it so. vCPU 0 stays on." %}
|
||||
{% if instance.status == 3 %}{% trans "A paused VM cannot let one go: resume it to turn vCPUs off." %}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-8">
|
||||
<div class="d-flex flex-wrap gap-2">
|
||||
{% for id, vcpu in instance.vcpus.items %}
|
||||
<form action="{% url 'instances:set_vcpu' instance.id %}" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="id" value="{{ id }}">
|
||||
{% if vcpu.hotpluggable != "yes" %}
|
||||
<button type="button" class="btn btn-secondary" disabled>{% blocktrans %}{{ id }} · Fixed{% endblocktrans %}</button>
|
||||
{% elif vcpu.enabled == "yes" %}
|
||||
<button type="submit" class="btn btn-primary" name="set_vcpu" value="False"{% if instance.status == 3 %} disabled{% endif %}>{% blocktrans %}{{ id }} · On{% endblocktrans %}<span class="visually-hidden"> {% trans "turn off" %}</span></button>
|
||||
{% else %}
|
||||
<button type="submit" class="btn btn-secondary" name="set_vcpu" value="True">{% blocktrans %}{{ id }} · Off{% endblocktrans %}<span class="visually-hidden"> {% trans "turn on" %}</span></button>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
<p class="small text-body-secondary mt-1 mb-0" id="cpu-help">{% if instance.status == 5 %}{% trans "The VM gets these at its next start." %}{% else %}{% trans "Shut the VM down to change its vCPUs." %}{% endif %}</p>
|
||||
{% if request.user.is_superuser %}
|
||||
<form class="list-group-item p-3 p-md-4" action="{% url 'instances:set_vcpu_hotplug' instance.id %}" method="post">{% csrf_token %}
|
||||
<div class="row g-3 align-items-center">
|
||||
<div class="col-12 col-lg-4">
|
||||
<label class="form-label fw-semibold mb-0" for="vcpu_hotplug">{% trans "vCPU hot plug" %}</label>
|
||||
<p class="small text-body-secondary mb-0" id="vcpu-hotplug-help">
|
||||
{% trans "Lets vCPUs up to the maximum be turned on and off while the VM runs." %}
|
||||
{% if instance.status != 5 %}{% trans "Shut the VM down to change this." %}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-8">
|
||||
<div class="row g-2">
|
||||
<div class="col-12 col-sm">
|
||||
<select id="vcpu_hotplug" class="form-select" name="vcpu_hotplug" aria-describedby="vcpu-hotplug-help">
|
||||
<option value="True"{% if instance.config_vcpu_hotplug %} selected{% endif %}>{% trans "Enabled" %}</option>
|
||||
<option value="False"{% if not instance.config_vcpu_hotplug %} selected{% endif %}>{% trans "Disabled" %}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12 col-sm-auto d-grid">
|
||||
<button class="btn btn-secondary" type="submit" name="set_vcpu_hotplug"{% if instance.status != 5 %} disabled{% endif %}>{% trans "Save" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form class="mt-3" action="{% url 'instances:set_vcpu_hotplug' instance.id %}" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="vcpu_hotplug" value="{% if instance.config_vcpu_hotplug %}False{% else %}True{% endif %}">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="vcpu_hotplug" aria-describedby="vcpu-hotplug-help"{% if instance.config_vcpu_hotplug %} checked{% endif %}{% if instance.status != 5 %} disabled{% endif %} data-submit-on-change>
|
||||
<label class="form-check-label" for="vcpu_hotplug">{% trans "vCPU hot plug" %}</label>
|
||||
</div>
|
||||
<p class="small text-body-secondary mb-0" id="vcpu-hotplug-help">{% trans "Lets vCPUs up to the maximum be turned on and off while the VM runs." %}{% if instance.status != 5 %} {% trans "Shut the VM down to change this." %}{% endif %}</p>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<p class="mb-0">{% trans "You don't have permission for resizing instance" %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="resizevm_mem">
|
||||
{% if can_change %}
|
||||
<form class="list-group" action="{% url 'instances:resize_memory' instance.id %}" method="post" aria-labelledby="memory-heading">{% csrf_token %}
|
||||
<div class="list-group-item p-3 p-md-4">
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-lg-4">
|
||||
<h2 class="h6" id="memory-heading">{% bs_icon 'memory' %} {% trans "Memory allocation" %}</h2>
|
||||
<p class="small text-body-secondary mb-2">{% blocktrans with cur=instance.cur_memory max=instance.memory %}Now {{ cur }} MiB of maximum {{ max }} MiB.{% endblocktrans %}</p>
|
||||
<p class="small mb-0">{% trans "Host" %}: <strong>{% blocktrans with total=memory_host|filesizeformat %}{{ total }} memory{% endblocktrans %}</strong></p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-8">
|
||||
<p class="small text-body-secondary" id="memory-help">
|
||||
{% if instance.status == 5 %}{% trans "The VM gets these at its next start." %}
|
||||
{% else %}{% trans "The current memory changes now, up to the maximum; shut the VM down to change the maximum." %}{% endif %}
|
||||
</p>
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="cur_memory">{% trans "Current memory (MiB)" %}</label>
|
||||
<input class="form-control" type="number" id="cur_memory" name="cur_memory" min="1" step="1" value="{{ instance.cur_memory }}" aria-describedby="memory-help">
|
||||
</div>
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="max_memory">{% trans "Maximum memory (MiB)" %}</label>
|
||||
{# a running VM keeps its maximum: only the current memory changes #}
|
||||
<input class="form-control" type="number" id="max_memory" name="memory" min="1" step="1" value="{{ instance.memory }}" aria-describedby="memory-help"{% if instance.status != 5 %} disabled{% endif %}>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-end mt-3">
|
||||
<button type="submit" class="btn btn-primary" name="resizevm_mem">{% trans "Resize memory" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="resizevm_mem" role="tabpanel" aria-labelledby="resizevm_mem-tab">
|
||||
<div class="d-flex flex-wrap align-items-center gap-2 gap-sm-3 mb-3">
|
||||
<div class="memory-bar" aria-hidden="true"><div class="memory-bar-now" style="width: {% widthratio instance.cur_memory instance.memory 100 %}%"></div></div>
|
||||
<span class="small">{% blocktrans with cur=instance.cur_memory max=instance.memory %}{{ cur }} MiB of {{ max }} MiB{% endblocktrans %}</span>
|
||||
<span class="small ms-auto text-body-secondary">{% blocktrans with total=memory_host|filesizeformat %}Host: {{ total }}{% endblocktrans %}</span>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="mb-0">{% trans "You don't have permission for resizing instance" %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="resizevm_disk">
|
||||
{% if can_change %}
|
||||
<form class="list-group" action="{% url 'instances:resize_disk' instance.id %}" method="post" aria-labelledby="disks-grow-heading">{% csrf_token %}
|
||||
<div class="list-group-item p-3 p-md-4">
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-lg-4">
|
||||
<h2 class="h6" id="disks-grow-heading">{% bs_icon 'device-hdd' %} {% trans "Grow disks" %}</h2>
|
||||
<p class="small text-body-secondary mb-0" id="disks-grow-help">{% trans "A new size in GiB, larger than the disk's; empty keeps a disk as it is. Disks grow while the VM runs; the guest then grows its partition and file system." %}</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-8">
|
||||
<div class="row g-3">
|
||||
{% for disk in instance.disks %}
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="disk_size_{{ disk.dev }}">{{ disk.dev }}{% if disk.format %} <span class="small text-body-secondary">· {{ disk.format }}</span>{% endif %}</label>
|
||||
{% if disk.storage is None %}
|
||||
<p class="small text-danger mb-0">{% trans "Error getting disk info" %}</p>
|
||||
{% else %}
|
||||
<p class="small text-body-secondary mb-2">{% blocktrans with size=disk.size|filesizeformat %}Now {{ size }}{% endblocktrans %}</p>
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="number" id="disk_size_{{ disk.dev }}" name="disk_size_{{ disk.dev }}" min="1" step="1" aria-describedby="disks-grow-help">
|
||||
<span class="input-group-text">GiB</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="text-end mt-3">
|
||||
{% if instance.status == 1 or instance.status == 3 or instance.status == 5 %}
|
||||
<button type="submit" class="btn btn-primary" name="resizevm_disk">{% trans "Grow disks" %}</button>
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary" disabled>{% trans "Grow disks" %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<form class="row g-2 align-items-end" action="{% url 'instances:resize_memory' instance.id %}" method="post">{% csrf_token %}
|
||||
<div class="col-6 col-sm-3">
|
||||
<label class="form-label small mb-1" for="cur_memory">{% trans "Current (MiB)" %}</label>
|
||||
<input class="form-control" type="number" id="cur_memory" name="cur_memory" min="1" step="1" value="{{ instance.cur_memory }}" aria-describedby="memory-help">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="mb-0">{% trans "You don't have permission for resizing instance" %}</p>
|
||||
{% endif %}
|
||||
<div class="col-6 col-sm-3">
|
||||
<label class="form-label small mb-1" for="max_memory">{% trans "Maximum (MiB)" %}</label>
|
||||
{# a running VM keeps its maximum: only the current memory changes #}
|
||||
<input class="form-control" type="number" id="max_memory" name="memory" min="1" step="1" value="{{ instance.memory }}" aria-describedby="memory-help"{% if instance.status != 5 %} disabled{% endif %}>
|
||||
</div>
|
||||
<div class="col-12 col-sm-auto ms-sm-auto">
|
||||
<button type="submit" class="btn btn-primary resize-act" name="resizevm_mem">{% trans "Resize memory" %}</button>
|
||||
</div>
|
||||
</form>
|
||||
<p class="small text-body-secondary mt-1 mb-0" id="memory-help">{% if instance.status == 5 %}{% trans "The VM gets these at its next start." %}{% else %}{% trans "The current memory changes now, up to the maximum; shut the VM down to change the maximum." %}{% endif %}</p>
|
||||
</div>
|
||||
<div class="tab-pane" id="resizevm_disk" role="tabpanel" aria-labelledby="resizevm_disk-tab">
|
||||
<p class="small text-body-secondary mb-3" id="disks-grow-help">{% trans "A new size in GiB, larger than the disk's; empty keeps a disk as it is. Disks grow while the VM runs; the guest then grows its partition and file system." %}</p>
|
||||
<form action="{% url 'instances:resize_disk' instance.id %}" method="post">{% csrf_token %}
|
||||
{% for disk in instance.disks %}
|
||||
<div class="row g-2 align-items-center mb-2">
|
||||
<label class="col-5 col-sm-3 col-form-label" for="disk_size_{{ disk.dev }}"><span class="fw-semibold">{{ disk.dev }}</span>{% if disk.format %} <span class="small text-body-secondary">{{ disk.format }}</span>{% endif %}</label>
|
||||
{% if disk.storage is None %}
|
||||
<div class="col"><span class="small text-danger">{% trans "Error getting disk info" %}</span></div>
|
||||
{% else %}
|
||||
<div class="col-7 col-sm-2 small">{% blocktrans with size=disk.size|filesizeformat %}Now {{ size }}{% endblocktrans %}</div>
|
||||
<div class="col-12 col-sm-4">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="number" id="disk_size_{{ disk.dev }}" name="disk_size_{{ disk.dev }}" min="1" step="1" placeholder="{% trans "New size" %}" aria-describedby="disks-grow-help">
|
||||
<span class="input-group-text">GiB</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if instance.status == 1 or instance.status == 3 or instance.status == 5 %}
|
||||
<button type="submit" class="btn btn-primary resize-act" name="resizevm_disk">{% trans "Grow disks" %}</button>
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary resize-act" disabled>{% trans "Grow disks" %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ class LiveLvmTestCase(TestCase):
|
|||
|
||||
response = self.post("resize_disk", inst, {"disk_size_vda": "2"})
|
||||
|
||||
self.assertRedirects(response, reverse("instances:instance", args=[inst.id]) + "#resize",
|
||||
self.assertRedirects(response, reverse("instances:instance", args=[inst.id]) + "#resizevm_disk",
|
||||
fetch_redirect_response=False)
|
||||
shown = [str(m) for m in get_messages(response.wsgi_request)]
|
||||
self.assertEqual(shown[-1], "The storage pool of vda cannot resize its volumes")
|
||||
|
|
|
|||
|
|
@ -209,7 +209,9 @@ class PendingEditsTestCase(TestCase):
|
|||
"1": {"enabled": "yes", "hotpluggable": "yes", "order": "2"}}
|
||||
doc = self.page(get_guest_agent=(None, object()), get_vcpus=({}, hotplug))
|
||||
self.assertEqual(doc.xpath("//select[@name='guest_agent']/option[@selected]/@value"), ["True"])
|
||||
self.assertEqual(doc.xpath("//select[@name='vcpu_hotplug']/option[@selected]/@value"), ["True"])
|
||||
# the switch shows the pending hot plug on; flipping it posts off
|
||||
self.assertEqual(doc.xpath("//input[@id='vcpu_hotplug']/@checked"), ["checked"])
|
||||
self.assertEqual(doc.xpath("//input[@name='vcpu_hotplug']/@value"), ["False"])
|
||||
self.assertIn("No channel", doc.xpath("string(//form[.//select[@name='guest_agent']])"))
|
||||
|
||||
def test_a_custom_rng_or_crash_action_is_left_to_the_xml_editor(self):
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ class InstanceSecurityMutationsTestCase(TestCase):
|
|||
mock_wvm_cls.return_value.get_disk_devices.return_value = []
|
||||
res = self.client.post(reverse("instances:resize_disk", args=[self.instance.id]), {})
|
||||
self.assertEqual(res.status_code, 302)
|
||||
self.assertIn(f"/instances/{self.instance.id}/#resize", res.url)
|
||||
self.assertIn(f"/instances/{self.instance.id}/#resizevm_disk", res.url)
|
||||
|
||||
def test_disk_mutation_denied_with_is_change(self):
|
||||
# change_user has is_change=True, is_delete=False. Disk views are
|
||||
|
|
|
|||
|
|
@ -299,7 +299,7 @@ class InstancesTestCase(TestCase):
|
|||
{"memory": 512, "cur_memory": 256},
|
||||
)
|
||||
self.assertRedirects(
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resize"
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resizevm_mem"
|
||||
)
|
||||
|
||||
del self.instance.memory
|
||||
|
|
@ -312,7 +312,7 @@ class InstancesTestCase(TestCase):
|
|||
{"memory": 500, "cur_memory": 200},
|
||||
)
|
||||
self.assertRedirects(
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resize"
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resizevm_mem"
|
||||
)
|
||||
|
||||
del self.instance.memory
|
||||
|
|
@ -337,7 +337,7 @@ class InstancesTestCase(TestCase):
|
|||
{"memory": 512, "cur_memory": 256},
|
||||
)
|
||||
self.assertRedirects(
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resize"
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resizevm_mem"
|
||||
)
|
||||
|
||||
del self.instance.memory
|
||||
|
|
@ -357,7 +357,7 @@ class InstancesTestCase(TestCase):
|
|||
},
|
||||
)
|
||||
self.assertRedirects(
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resize"
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resizevm_disk"
|
||||
)
|
||||
|
||||
del self.instance.disks
|
||||
|
|
@ -379,7 +379,7 @@ class InstancesTestCase(TestCase):
|
|||
},
|
||||
)
|
||||
self.assertRedirects(
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resize"
|
||||
response, reverse("instances:instance", args=[self.instance.id]) + "#resizevm_disk"
|
||||
)
|
||||
|
||||
# no changes as user reached quota
|
||||
|
|
|
|||
|
|
@ -1203,10 +1203,10 @@ def resize_memory(request, pk):
|
|||
new_memory = memory
|
||||
if not _is_int(new_memory) or not _is_int(new_cur_memory) or int(new_cur_memory) < 1:
|
||||
messages.error(request, _("Enter a whole number for memory"))
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resizevm_mem")
|
||||
if int(new_cur_memory) > int(new_memory):
|
||||
messages.error(request, _("The current memory cannot be more than the maximum"))
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resizevm_mem")
|
||||
quota_msg = utils.check_user_quota(request.user, 0, 0, int(new_memory) - memory, 0)
|
||||
if not request.user.is_superuser and quota_msg:
|
||||
msg = quota_refused(quota_msg, gettext_noop("%(quota)s: cannot resize the memory of '%(instance_name)s'."),
|
||||
|
|
@ -1218,7 +1218,7 @@ def resize_memory(request, pk):
|
|||
messages.success(request, _("Memory set to %(cur)s MiB (maximum %(max)s MiB)") % {
|
||||
"cur": new_cur_memory, "max": new_memory})
|
||||
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resizevm_mem")
|
||||
|
||||
|
||||
@require_POST
|
||||
|
|
@ -1236,19 +1236,19 @@ def resize_disk(request, pk):
|
|||
continue
|
||||
if not _is_int(size):
|
||||
messages.error(request, _("Enter disk sizes as whole GiB"))
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resizevm_disk")
|
||||
# a disk does not shrink: one smaller size refuses them all
|
||||
if int(size) << 30 < disk["size"]:
|
||||
messages.error(request, _("%(dev)s is %(size)s: a disk cannot shrink") % {
|
||||
"dev": disk["dev"], "size": filesizeformat(disk["size"])})
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resizevm_disk")
|
||||
if int(size) << 30 > disk["size"]:
|
||||
disk["size_new"] = int(size) << 30
|
||||
disks_new.append(disk)
|
||||
|
||||
if not disks_new:
|
||||
messages.warning(request, _("No disks were selected or valid for resizing."))
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
|
||||
return redirect(reverse("instances:instance", args=[instance.id]) + "#resizevm_disk")
|
||||
|
||||
disk_sum = sum([disk["size"] >> 30 for disk in disks_new])
|
||||
disk_new_sum = sum([disk["size_new"] >> 30 for disk in disks_new])
|
||||
|
|
|
|||
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-03 17:31+0000\n"
|
||||
"POT-Creation-Date: 2026-11-03 19:32+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"
|
||||
|
|
@ -229,8 +229,6 @@ msgstr "Sanal makine ekle"
|
|||
#: instances/templates/allinstances_index_nongrouped.html:8
|
||||
#: instances/templates/create_steps.html:6
|
||||
#: instances/templates/create_steps.html:8
|
||||
#: instances/templates/instances/resize_tab.html:35
|
||||
#: instances/templates/instances/resize_tab.html:134
|
||||
#: operations/templates/operations/jobs.html:24
|
||||
msgid "Host"
|
||||
msgstr "Sunucu"
|
||||
|
|
@ -710,7 +708,6 @@ msgstr "Üyeler"
|
|||
#: computes/templates/computes/form.html:46
|
||||
#: instances/templates/instances/edit_instance_volume.html:112
|
||||
#: instances/templates/instances/nic_qos_form.html:23
|
||||
#: instances/templates/instances/resize_tab.html:114
|
||||
#: instances/templates/instances/settings_tab.html:410
|
||||
#: instances/templates/instances/settings_tab.html:644
|
||||
#: instances/templates/instances/settings_tab.html:893
|
||||
|
|
@ -1656,6 +1653,7 @@ msgstr "Yeni sanal makine varsayılanları"
|
|||
|
||||
#: appsettings/views.py:40 instances/templates/instance.html:64
|
||||
#: instances/templates/instances/destroy_instance_form.html:32
|
||||
#: instances/templates/instances/resize_tab.html:20
|
||||
#: instances/templates/instances/settings_tab.html:197
|
||||
msgid "Disks"
|
||||
msgstr "Diskler"
|
||||
|
|
@ -2074,7 +2072,7 @@ msgstr "VCPU"
|
|||
#: instances/templates/allinstances_index_nongrouped.html:15
|
||||
#: instances/templates/create_inst_block.html:33
|
||||
#: instances/templates/instance.html:60
|
||||
#: instances/templates/instances/resize_tab.html:15
|
||||
#: instances/templates/instances/resize_tab.html:17
|
||||
#: instances/templates/instances/stats_tab.html:34
|
||||
msgid "Memory"
|
||||
msgstr "Bellek"
|
||||
|
|
@ -2130,6 +2128,7 @@ msgstr "/ %(memory)s"
|
|||
#: instances/forms.py:15 instances/templates/allinstances_index_grouped.html:16
|
||||
#: instances/templates/allinstances_index_nongrouped.html:14
|
||||
#: instances/templates/create_instance_w2.html:63
|
||||
#: instances/templates/instances/resize_tab.html:29
|
||||
#: instances/templates/instances/settings_tab.html:840
|
||||
msgid "vCPUs"
|
||||
msgstr "vCPU"
|
||||
|
|
@ -2718,7 +2717,7 @@ msgstr ""
|
|||
msgid "Delete snapshot"
|
||||
msgstr "Anlık görüntüyü sil"
|
||||
|
||||
#: instances/jobs.py:304 vrtManager/instance.py:2280
|
||||
#: instances/jobs.py:304 vrtManager/instance.py:2281
|
||||
#, 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"
|
||||
|
|
@ -2753,7 +2752,7 @@ msgstr "Sanal makine artık işin çalıştığı sunucuda değil"
|
|||
msgid "Take snapshot"
|
||||
msgstr "Anlık görüntü al"
|
||||
|
||||
#: instances/jobs.py:372 vrtManager/instance.py:1876
|
||||
#: instances/jobs.py:372 vrtManager/instance.py:1877
|
||||
#, python-format
|
||||
msgid "A snapshot named %(name)s already exists"
|
||||
msgstr "%(name)s adında bir anlık görüntü zaten var"
|
||||
|
|
@ -2928,7 +2927,7 @@ msgstr "cloud-init tohumu, disk için bir dizin depolama havuzu gerektirir"
|
|||
msgid "This host offers no firmware %(firmware)s"
|
||||
msgstr "Bu sunucu %(firmware)s firmware'ini sunmuyor"
|
||||
|
||||
#: instances/jobs.py:775 vrtManager/instance.py:2999
|
||||
#: instances/jobs.py:775 vrtManager/instance.py:3000
|
||||
msgid "This host offers no TPM 2.0: install swtpm on it"
|
||||
msgstr "Bu sunucu TPM 2.0 sunmuyor: üzerine swtpm kurun"
|
||||
|
||||
|
|
@ -3043,67 +3042,66 @@ msgstr "oluşturuldu"
|
|||
msgid "drbd"
|
||||
msgstr "drbd"
|
||||
|
||||
#: instances/models.py:226 instances/templates/create_instance_w2.html:118
|
||||
#: instances/templates/instances/resize_tab.html:20
|
||||
#: instances/models.py:237 instances/templates/create_instance_w2.html:118
|
||||
#: instances/templates/instances/settings_tab.html:25
|
||||
#: instances/templates/instances/stats_tab.html:51
|
||||
msgid "Disk"
|
||||
msgstr "Disk"
|
||||
|
||||
#: instances/models.py:228 instances/templates/create_instance_w2.html:312
|
||||
#: instances/models.py:239 instances/templates/create_instance_w2.html:312
|
||||
#: instances/templates/instances/settings_tab.html:159
|
||||
msgid "CD-ROM"
|
||||
msgstr "CD-ROM"
|
||||
|
||||
#: instances/models.py:230
|
||||
#: instances/models.py:241
|
||||
msgid "NIC"
|
||||
msgstr "NIC"
|
||||
|
||||
#: instances/models.py:403
|
||||
#: instances/models.py:414
|
||||
msgid "Live"
|
||||
msgstr "Canlı"
|
||||
|
||||
#: instances/models.py:404
|
||||
#: instances/models.py:415
|
||||
msgid "Offline"
|
||||
msgstr "Çevrimdışı"
|
||||
|
||||
#: instances/models.py:405
|
||||
#: instances/models.py:416
|
||||
msgid "Auto Converge"
|
||||
msgstr "Otomatik yavaşlat"
|
||||
|
||||
#: instances/models.py:406
|
||||
#: instances/models.py:417
|
||||
msgid "Compress"
|
||||
msgstr "Sıkıştır"
|
||||
|
||||
#: instances/models.py:407
|
||||
#: instances/models.py:418
|
||||
msgid "Unsafe"
|
||||
msgstr "Güvenli olmayan"
|
||||
|
||||
#: instances/models.py:419
|
||||
#: instances/models.py:430
|
||||
msgid "No Virtual Machine name has been entered"
|
||||
msgstr "Sanal makine adı girilmedi"
|
||||
|
||||
#: instances/models.py:425
|
||||
#: instances/models.py:436
|
||||
msgid "No VCPU has been entered"
|
||||
msgstr "VCPU belirtilmedi"
|
||||
|
||||
#: instances/models.py:431
|
||||
#: instances/models.py:442
|
||||
msgid "No RAM size has been entered"
|
||||
msgstr "RAM boyutu belirtilmedi"
|
||||
|
||||
#: instances/models.py:435
|
||||
#: instances/models.py:446
|
||||
msgid "No Network pool has been choosen"
|
||||
msgstr "Ağ havuzu seçilmedi"
|
||||
|
||||
#: instances/models.py:443
|
||||
#: instances/models.py:454
|
||||
msgid "Please select HDD cache mode"
|
||||
msgstr "Lütfen HDD ön bellek modunu seçin"
|
||||
|
||||
#: instances/models.py:455
|
||||
#: instances/models.py:466
|
||||
msgid "Please select a video driver"
|
||||
msgstr "Lütfen bir video sürücüsü seçin"
|
||||
|
||||
#: instances/models.py:492
|
||||
#: instances/models.py:503
|
||||
msgid "Can access console without password"
|
||||
msgstr "Parolasız konsol erişimi yapabilir"
|
||||
|
||||
|
|
@ -3505,7 +3503,7 @@ msgstr "Sanal makinenin çalışacağı sunucuyu seçin."
|
|||
|
||||
#: instances/templates/create_inst_block.html:23
|
||||
#: instances/templates/instance.html:56
|
||||
#: instances/templates/instances/resize_tab.html:10
|
||||
#: instances/templates/instances/resize_tab.html:14
|
||||
#: instances/templates/instances/stats_tab.html:27
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
|
@ -4494,130 +4492,111 @@ msgstr "Zorla Kapat"
|
|||
msgid "Power Cycle"
|
||||
msgstr "Yeniden başlat"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:33
|
||||
msgid "CPU allocation"
|
||||
msgstr "CPU ataması"
|
||||
#: instances/templates/instances/resize_tab.html:8
|
||||
msgid "You don't have permission for resizing instance"
|
||||
msgstr "Sanal makineyi yeniden boyutlandırma iznine sahip değilsiniz"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:34
|
||||
#, python-format
|
||||
msgid "Now %(cur)s of %(max)s vCPUs."
|
||||
msgstr "Şu an %(max)s vCPU'dan %(cur)s."
|
||||
#: instances/templates/instances/resize_tab.html:12
|
||||
msgid "Resources to resize"
|
||||
msgstr "Boyutlandırılacak kaynaklar"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:35
|
||||
msgid "on, turn off"
|
||||
msgstr "açık, kapat"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:37
|
||||
msgid "off, turn on"
|
||||
msgstr "kapalı, aç"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:41
|
||||
msgid "on"
|
||||
msgstr "açık"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:41
|
||||
msgid "off"
|
||||
msgstr "kapalı"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:45
|
||||
#, python-format
|
||||
msgid "%(count)s logical CPUs"
|
||||
msgstr "%(count)s mantıksal CPU"
|
||||
msgid "%(cur)s on, up to %(max)s"
|
||||
msgstr "%(cur)s açık, en fazla %(max)s"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:39
|
||||
#: instances/templates/instances/resize_tab.html:138
|
||||
msgid "The VM gets these at its next start."
|
||||
msgstr "Sanal makine bunları bir sonraki başlatmada alır."
|
||||
#: instances/templates/instances/resize_tab.html:46
|
||||
#, python-format
|
||||
msgid "Host: %(count)s logical CPUs"
|
||||
msgstr "Sunucu: %(count)s mantıksal CPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:40
|
||||
msgid "Shut the VM down to change its vCPUs."
|
||||
msgstr "vCPU'larını değiştirmek için sanal makineyi kapatın."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:40
|
||||
msgid "While it runs, turn vCPUs on and off below."
|
||||
msgstr "Çalışırken vCPU'ları aşağıdan açıp kapatın."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:44
|
||||
msgid "Current vCPUs"
|
||||
msgstr "Geçerli vCPU'lar"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:52
|
||||
msgid "Maximum vCPUs"
|
||||
msgstr "En fazla vCPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:61
|
||||
msgid "Resize CPU"
|
||||
msgstr "CPU Boyutlandır"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:70
|
||||
msgid "Live vCPUs"
|
||||
msgstr "Canlı vCPU'lar"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:72
|
||||
msgid "Turn a vCPU on or off now; the next start keeps it so. vCPU 0 stays on."
|
||||
#: instances/templates/instances/resize_tab.html:49
|
||||
msgid "Click a vCPU to turn it on or off now; the next start keeps it so."
|
||||
msgstr ""
|
||||
"Bir vCPU'yu şimdi açın veya kapatın; sonraki başlatmada da öyle kalır. vCPU 0"
|
||||
" açık kalır."
|
||||
"Bir vCPU'ya tıklayarak onu şimdi açın veya kapatın; sonraki başlatmada da "
|
||||
"öyle kalır."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:73
|
||||
#: instances/templates/instances/resize_tab.html:49
|
||||
msgid "A paused VM cannot let one go: resume it to turn vCPUs off."
|
||||
msgstr ""
|
||||
"Duraklatılmış sanal makine vCPU bırakamaz: vCPU'ları kapatmak için devam "
|
||||
"ettirin."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:82
|
||||
#, python-format
|
||||
msgid "%(id)s · Fixed"
|
||||
msgstr "%(id)s · Sabit"
|
||||
#: instances/templates/instances/resize_tab.html:54
|
||||
msgid "Current"
|
||||
msgstr "Şu an"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:84
|
||||
#, python-format
|
||||
msgid "%(id)s · On"
|
||||
msgstr "%(id)s · Açık"
|
||||
#: instances/templates/instances/resize_tab.html:60
|
||||
msgid "Maximum"
|
||||
msgstr "En fazla"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:84
|
||||
msgid "turn off"
|
||||
msgstr "kapat"
|
||||
#: instances/templates/instances/resize_tab.html:66
|
||||
msgid "Resize CPU"
|
||||
msgstr "CPU'yu boyutlandır"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:86
|
||||
#, python-format
|
||||
msgid "%(id)s · Off"
|
||||
msgstr "%(id)s · Kapalı"
|
||||
#: instances/templates/instances/resize_tab.html:69
|
||||
#: instances/templates/instances/resize_tab.html:101
|
||||
msgid "The VM gets these at its next start."
|
||||
msgstr "Sanal makine bunları bir sonraki başlatmada alır."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:86
|
||||
msgid "turn on"
|
||||
msgstr "aç"
|
||||
#: instances/templates/instances/resize_tab.html:69
|
||||
msgid "Shut the VM down to change its vCPUs."
|
||||
msgstr "vCPU'larını değiştirmek için sanal makineyi kapatın."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:99
|
||||
#: instances/templates/instances/resize_tab.html:75
|
||||
msgid "vCPU hot plug"
|
||||
msgstr "vCPU sıcak takma"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:101
|
||||
#: instances/templates/instances/resize_tab.html:77
|
||||
msgid "Lets vCPUs up to the maximum be turned on and off while the VM runs."
|
||||
msgstr ""
|
||||
"Sanal makine çalışırken azami sayıya kadar vCPU'ların açılıp kapatılmasını "
|
||||
"sağlar."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:102
|
||||
#: instances/templates/instances/resize_tab.html:77
|
||||
#: instances/templates/instances/settings_tab.html:913
|
||||
msgid "Shut the VM down to change this."
|
||||
msgstr "Bunu değiştirmek için sanal makineyi kapatın."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:109
|
||||
#: instances/templates/instances/settings_tab.html:1020
|
||||
msgid "Enabled"
|
||||
msgstr "Etkin"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:110
|
||||
#: instances/templates/instances/settings_tab.html:1021
|
||||
msgid "Disabled"
|
||||
msgstr "Devredışı"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:123
|
||||
#: instances/templates/instances/resize_tab.html:160
|
||||
#: instances/templates/instances/resize_tab.html:201
|
||||
msgid "You don't have permission for resizing instance"
|
||||
msgstr "Sanal makineyi yeniden boyutlandırma iznine sahip değilsiniz"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:132
|
||||
msgid "Memory allocation"
|
||||
msgstr "Bellek ataması"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:133
|
||||
#: instances/templates/instances/resize_tab.html:84
|
||||
#, python-format
|
||||
msgid "Now %(cur)s MiB of maximum %(max)s MiB."
|
||||
msgstr "Şu an en fazla %(max)s MiB'den %(cur)s MiB."
|
||||
msgid "%(cur)s MiB of %(max)s MiB"
|
||||
msgstr "%(cur)s MiB / %(max)s MiB"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:134
|
||||
#: instances/templates/instances/resize_tab.html:85
|
||||
#, python-format
|
||||
msgid "%(total)s memory"
|
||||
msgstr "%(total)s bellek"
|
||||
msgid "Host: %(total)s"
|
||||
msgstr "Sunucu: %(total)s"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:139
|
||||
#: instances/templates/instances/resize_tab.html:89
|
||||
msgid "Current (MiB)"
|
||||
msgstr "Şu an (MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:93
|
||||
msgid "Maximum (MiB)"
|
||||
msgstr "En fazla (MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:98
|
||||
msgid "Resize memory"
|
||||
msgstr "Belleği boyutlandır"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:101
|
||||
msgid ""
|
||||
"The current memory changes now, up to the maximum; shut the VM down to change"
|
||||
" the maximum."
|
||||
|
|
@ -4625,25 +4604,7 @@ msgstr ""
|
|||
"Geçerli bellek, azami değere kadar hemen değişir; azami değeri değiştirmek "
|
||||
"için sanal makineyi kapatın."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:143
|
||||
msgid "Current memory (MiB)"
|
||||
msgstr "Geçerli bellek (MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:147
|
||||
msgid "Maximum memory (MiB)"
|
||||
msgstr "En fazla bellek (MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:153
|
||||
msgid "Resize memory"
|
||||
msgstr "Belleği boyutlandır"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:169
|
||||
#: instances/templates/instances/resize_tab.html:191
|
||||
#: instances/templates/instances/resize_tab.html:193
|
||||
msgid "Grow disks"
|
||||
msgstr "Diskleri büyüt"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:170
|
||||
#: instances/templates/instances/resize_tab.html:104
|
||||
msgid ""
|
||||
"A new size in GiB, larger than the disk's; empty keeps a disk as it is. Disks"
|
||||
" grow while the VM runs; the guest then grows its partition and file system."
|
||||
|
|
@ -4652,16 +4613,25 @@ msgstr ""
|
|||
"olduğu gibi kalır. Diskler sanal makine çalışırken büyür; ardından konuk "
|
||||
"sistem bölümünü ve dosya sistemini büyütür."
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:178
|
||||
#: instances/templates/instances/resize_tab.html:110
|
||||
#: instances/templates/instances/settings_tab.html:211
|
||||
msgid "Error getting disk info"
|
||||
msgstr "Disk bilgisi elde edilirken hata"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:180
|
||||
#: instances/templates/instances/resize_tab.html:112
|
||||
#, python-format
|
||||
msgid "Now %(size)s"
|
||||
msgstr "Şu an %(size)s"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:115
|
||||
msgid "New size"
|
||||
msgstr "Yeni boyut"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:124
|
||||
#: instances/templates/instances/resize_tab.html:126
|
||||
msgid "Grow disks"
|
||||
msgstr "Diskleri büyüt"
|
||||
|
||||
#: instances/templates/instances/settings_tab.html:20
|
||||
msgid "Boot"
|
||||
msgstr "Ön Yükleme"
|
||||
|
|
@ -5510,6 +5480,14 @@ msgstr "Sanal makine çalışmıyor"
|
|||
msgid "No channel"
|
||||
msgstr "Kanal yok"
|
||||
|
||||
#: instances/templates/instances/settings_tab.html:1020
|
||||
msgid "Enabled"
|
||||
msgstr "Etkin"
|
||||
|
||||
#: instances/templates/instances/settings_tab.html:1021
|
||||
msgid "Disabled"
|
||||
msgstr "Devredışı"
|
||||
|
||||
#: instances/templates/instances/snapshots_tab.html:11
|
||||
msgid "Snapshots"
|
||||
msgstr "Anlık görüntüler"
|
||||
|
|
@ -9003,7 +8981,7 @@ msgstr ""
|
|||
"Anlık görüntü adları 1-64 harf, rakam, '.', '_' veya '-' karakterinden oluşur"
|
||||
" ve '.' ile başlamaz"
|
||||
|
||||
#: vrtManager/instance.py:1076
|
||||
#: vrtManager/instance.py:1077
|
||||
msgid ""
|
||||
"A device other than a disk or NIC is in the boot order: change it in the XML "
|
||||
"editor"
|
||||
|
|
@ -9011,100 +8989,100 @@ msgstr ""
|
|||
"Önyükleme sırasında disk veya NIC dışında bir aygıt var: bunu XML "
|
||||
"düzenleyicide değiştirin"
|
||||
|
||||
#: vrtManager/instance.py:1088
|
||||
#: vrtManager/instance.py:1089
|
||||
msgid "Invalid Device Type for boot order"
|
||||
msgstr "Ön yükleme sırası için geçersiz aygıt türü"
|
||||
|
||||
#: vrtManager/instance.py:1091
|
||||
#: vrtManager/instance.py:1092
|
||||
#, python-format
|
||||
msgid "Boot device %(dev)s is not in the definition"
|
||||
msgstr "Ön yükleme aygıtı %(dev)s tanımda yok"
|
||||
|
||||
#: vrtManager/instance.py:1111
|
||||
#: vrtManager/instance.py:1112
|
||||
#, python-format
|
||||
msgid "CD-ROM %(dev)s is not in the running definition"
|
||||
msgstr "CD-ROM %(dev)s çalışan tanımda yok"
|
||||
|
||||
#: vrtManager/instance.py:1112
|
||||
#: vrtManager/instance.py:1113
|
||||
#, python-format
|
||||
msgid "CD-ROM %(dev)s is not in the persistent definition"
|
||||
msgstr "CD-ROM %(dev)s kalıcı tanımda yok"
|
||||
|
||||
#: vrtManager/instance.py:1124
|
||||
#: vrtManager/instance.py:1125
|
||||
#, python-format
|
||||
msgid "Media of %(dev)s changed in the running VM only: %(err)s"
|
||||
msgstr "%(dev)s ortamı yalnızca çalışan sanal makinede değişti: %(err)s"
|
||||
|
||||
#: vrtManager/instance.py:1135
|
||||
#: vrtManager/instance.py:1136
|
||||
#, python-format
|
||||
msgid "ISO image %(image)s was not found"
|
||||
msgstr "ISO imajı %(image)s bulunamadı"
|
||||
|
||||
#: vrtManager/instance.py:1137
|
||||
#: vrtManager/instance.py:1138
|
||||
#, python-format
|
||||
msgid "ISO image %(image)s is in more than one storage pool"
|
||||
msgstr "ISO imajı %(image)s birden fazla depolama havuzunda var"
|
||||
|
||||
#: vrtManager/instance.py:1244
|
||||
#: vrtManager/instance.py:1245
|
||||
#, python-format
|
||||
msgid "Disk %(target_dev)s is not in the VM's definition"
|
||||
msgstr "Disk %(target_dev)s sanal makinenin tanımında yok"
|
||||
|
||||
#: vrtManager/instance.py:1372
|
||||
#: vrtManager/instance.py:1373
|
||||
msgid "Please shutdown the instance then try to enable vCPU hotplug"
|
||||
msgstr ""
|
||||
"vCPU hotplug özelliğini etkinleştirmek için önce sanal makineyi kapatın"
|
||||
|
||||
#: vrtManager/instance.py:1835
|
||||
#: vrtManager/instance.py:1836
|
||||
msgid ""
|
||||
"The VM has external snapshots; internal snapshots cannot be mixed with them"
|
||||
msgstr ""
|
||||
"Sanal makinenin harici anlık görüntüleri var; dahili anlık görüntüler "
|
||||
"bunlarla karıştırılamaz"
|
||||
|
||||
#: vrtManager/instance.py:1867
|
||||
#: vrtManager/instance.py:1868
|
||||
msgid "A snapshot with memory is not quiesced; it keeps the whole guest state"
|
||||
msgstr ""
|
||||
"Bellekli bir anlık görüntüde dosya sistemleri dondurulmaz; tüm konuk durumunu"
|
||||
" saklar"
|
||||
|
||||
#: vrtManager/instance.py:1869
|
||||
#: vrtManager/instance.py:1870
|
||||
msgid "Only a running VM's file systems can be frozen"
|
||||
msgstr "Yalnızca çalışan bir sanal makinenin dosya sistemleri dondurulabilir"
|
||||
|
||||
#: vrtManager/instance.py:1871
|
||||
#: vrtManager/instance.py:1872
|
||||
msgid "The QEMU guest agent is not connected; it freezes the file systems"
|
||||
msgstr "QEMU konuk aracısı bağlı değil; dosya sistemlerini o dondurur"
|
||||
|
||||
#: vrtManager/instance.py:1874
|
||||
#: vrtManager/instance.py:1875
|
||||
msgid ""
|
||||
"The VM has internal snapshots; external snapshots cannot be mixed with them"
|
||||
msgstr ""
|
||||
"Sanal makinenin dahili anlık görüntüleri var; harici anlık görüntüler "
|
||||
"bunlarla karıştırılamaz"
|
||||
|
||||
#: vrtManager/instance.py:1879
|
||||
#: vrtManager/instance.py:1880
|
||||
msgid "Newer snapshots exist after the last revert; delete them first"
|
||||
msgstr ""
|
||||
"Son geri dönüşten sonra daha yeni anlık görüntüler var; önce onları silin"
|
||||
|
||||
#: vrtManager/instance.py:1882
|
||||
#: vrtManager/instance.py:1883
|
||||
msgid "No snapshot is current; revert to a snapshot first"
|
||||
msgstr "Geçerli anlık görüntü yok; önce bir anlık görüntüye geri dönün"
|
||||
|
||||
#: vrtManager/instance.py:1888
|
||||
#: vrtManager/instance.py:1889
|
||||
#, python-format
|
||||
msgid "Eject the media from %(dev)s first"
|
||||
msgstr "Önce %(dev)s içindeki ortamı çıkarın"
|
||||
|
||||
#: vrtManager/instance.py:1890
|
||||
#: vrtManager/instance.py:1891
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s is not a file; external snapshots need file disks"
|
||||
msgstr ""
|
||||
"Disk %(dev)s bir dosya değil; harici anlık görüntüler dosya diskleri "
|
||||
"gerektirir"
|
||||
|
||||
#: vrtManager/instance.py:1898
|
||||
#: vrtManager/instance.py:1899
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The storage pools could not be refreshed, so their free space is unknown: "
|
||||
|
|
@ -9112,21 +9090,21 @@ msgid ""
|
|||
msgstr ""
|
||||
"Depolama havuzları yenilenemedi, bu yüzden boş alanları bilinmiyor: %(err)s"
|
||||
|
||||
#: vrtManager/instance.py:1919
|
||||
#: vrtManager/instance.py:1920
|
||||
msgid "Memory is saved only from a running VM"
|
||||
msgstr "Bellek yalnızca çalışan bir sanal makineden kaydedilir"
|
||||
|
||||
#: vrtManager/instance.py:1921
|
||||
#: vrtManager/instance.py:1922
|
||||
msgid "The VM has no disk to keep its memory next to"
|
||||
msgstr "Sanal makinenin, belleğinin yanına kaydedileceği bir diski yok"
|
||||
|
||||
#: vrtManager/instance.py:1925
|
||||
#: vrtManager/instance.py:1926
|
||||
#, python-format
|
||||
msgid "%(disk)s is not in a storage pool; memory is saved only into one"
|
||||
msgstr ""
|
||||
"%(disk)s bir depolama havuzunda değil; bellek yalnızca bir havuza kaydedilir"
|
||||
|
||||
#: vrtManager/instance.py:1956
|
||||
#: vrtManager/instance.py:1957
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Storage pool %(pool)s has %(free).1f GiB free; the snapshot needs %(size).1f "
|
||||
|
|
@ -9137,7 +9115,7 @@ msgstr ""
|
|||
"%(size).1f GiB gerektiriyor (sanal makinenin oradaki disklerinin "
|
||||
"%%%(percent)g kadarı, en az %(minimum)g GiB, ve kaydediliyorsa bellek)"
|
||||
|
||||
#: vrtManager/instance.py:1974
|
||||
#: vrtManager/instance.py:1975
|
||||
msgid ""
|
||||
"This snapshot was taken by an older version on a UEFI VM and cannot be "
|
||||
"reverted; delete it instead"
|
||||
|
|
@ -9145,7 +9123,7 @@ msgstr ""
|
|||
"Bu anlık görüntü UEFI bir sanal makinede eski bir sürümle alındı ve geri "
|
||||
"dönülemez; bunun yerine silin"
|
||||
|
||||
#: vrtManager/instance.py:2004
|
||||
#: vrtManager/instance.py:2005
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The revert failed twice; try again in a moment (%(error)s). The VM is "
|
||||
|
|
@ -9154,7 +9132,7 @@ msgstr ""
|
|||
"Geri dönüş iki kez başarısız oldu; biraz sonra tekrar deneyin (%(error)s). "
|
||||
"Sanal makine çalışıyor."
|
||||
|
||||
#: vrtManager/instance.py:2006
|
||||
#: vrtManager/instance.py:2007
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The revert failed twice; try again in a moment (%(error)s). The VM is shut "
|
||||
|
|
@ -9163,13 +9141,13 @@ msgstr ""
|
|||
"Geri dönüş iki kez başarısız oldu; biraz sonra tekrar deneyin (%(error)s). "
|
||||
"Sanal makine kapalı."
|
||||
|
||||
#: vrtManager/instance.py:2169
|
||||
#: vrtManager/instance.py:2170
|
||||
msgid "A disk moves when its VM is defined and running, paused or shut off"
|
||||
msgstr ""
|
||||
"Bir disk, sanal makinesi tanımlıyken ve çalışırken, duraklatılmışken veya "
|
||||
"kapalıyken taşınır"
|
||||
|
||||
#: vrtManager/instance.py:2171
|
||||
#: vrtManager/instance.py:2172
|
||||
msgid ""
|
||||
"A disk of a VM with snapshots, a saved state or a running block job does not "
|
||||
"move"
|
||||
|
|
@ -9177,7 +9155,7 @@ msgstr ""
|
|||
"Anlık görüntüleri, kaydedilmiş durumu veya çalışan bir blok işi olan sanal "
|
||||
"makinenin diski taşınmaz"
|
||||
|
||||
#: vrtManager/instance.py:2179
|
||||
#: vrtManager/instance.py:2180
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(dev)s is not a disk file of the VM, the same in its running and next "
|
||||
|
|
@ -9186,132 +9164,132 @@ msgstr ""
|
|||
"%(dev)s, sanal makinenin çalışan ve sonraki başlatma tanımlarında aynı olan "
|
||||
"bir disk dosyası değil"
|
||||
|
||||
#: vrtManager/instance.py:2184
|
||||
#: vrtManager/instance.py:2185
|
||||
#, python-format
|
||||
msgid "%(dev)s does not move: only writable raw and qcow2 disks do"
|
||||
msgstr "%(dev)s taşınmaz: yalnızca yazılabilir raw ve qcow2 diskler taşınır"
|
||||
|
||||
#: vrtManager/instance.py:2191
|
||||
#: vrtManager/instance.py:2192
|
||||
#, python-format
|
||||
msgid "%(dev)s does not move: no storage pool has %(path)s"
|
||||
msgstr "%(dev)s taşınmaz: hiçbir depolama havuzunda %(path)s yok"
|
||||
|
||||
#: vrtManager/instance.py:2193
|
||||
#: vrtManager/instance.py:2194
|
||||
#, python-format
|
||||
msgid "%(dev)s does not move: it has a backing file"
|
||||
msgstr "%(dev)s taşınmaz: temel (backing) dosyası var"
|
||||
|
||||
#: vrtManager/instance.py:2196
|
||||
#: vrtManager/instance.py:2197
|
||||
#, python-format
|
||||
msgid "%(pool_name)s is not an active pool of disk files of this host"
|
||||
msgstr "%(pool_name)s bu sunucunun etkin bir disk dosyası havuzu değil"
|
||||
|
||||
#: vrtManager/instance.py:2199
|
||||
#: vrtManager/instance.py:2200
|
||||
#, python-format
|
||||
msgid "%(dev)s is in pool %(pool_name)s already"
|
||||
msgstr "%(dev)s zaten %(pool_name)s havuzunda"
|
||||
|
||||
#: vrtManager/instance.py:2203
|
||||
#: vrtManager/instance.py:2204
|
||||
#, python-format
|
||||
msgid "Pool %(pool_name)s already has a file %(name)s"
|
||||
msgstr "%(pool_name)s havuzunda zaten %(name)s dosyası var"
|
||||
|
||||
#: vrtManager/instance.py:2227
|
||||
#: vrtManager/instance.py:2228
|
||||
#, python-format
|
||||
msgid "The copy of %(dev)s ended before it was complete"
|
||||
msgstr "%(dev)s kopyası tamamlanmadan sona erdi"
|
||||
|
||||
#: vrtManager/instance.py:2272
|
||||
#: vrtManager/instance.py:2273
|
||||
#, python-format
|
||||
msgid "%(error)s; remove %(dest)s if it is there: %(cleanup_error)s"
|
||||
msgstr "%(error)s; varsa %(dest)s dosyasını kaldırın: %(cleanup_error)s"
|
||||
|
||||
#: vrtManager/instance.py:2274
|
||||
#: vrtManager/instance.py:2275
|
||||
#, python-format
|
||||
msgid "%(error)s; the VM may use %(dest)s now: check its disk %(dev)s"
|
||||
msgstr ""
|
||||
"%(error)s; sanal makine şu anda %(dest)s dosyasını kullanıyor olabilir: "
|
||||
"%(dev)s diskini kontrol edin"
|
||||
|
||||
#: vrtManager/instance.py:2281
|
||||
#: vrtManager/instance.py:2282
|
||||
#, python-format
|
||||
msgid "The VM has no internal snapshot named %(name)s"
|
||||
msgstr "Sanal makinenin %(name)s adlı dahili anlık görüntüsü yok"
|
||||
|
||||
#: vrtManager/instance.py:2290
|
||||
#: vrtManager/instance.py:2291
|
||||
msgid "The VM has a saved state; start it or remove the saved state first"
|
||||
msgstr ""
|
||||
"Sanal makinenin kaydedilmiş durumu var; önce başlatın veya kaydedilmiş durumu"
|
||||
" kaldırın"
|
||||
|
||||
#: vrtManager/instance.py:2292
|
||||
#: vrtManager/instance.py:2293
|
||||
msgid "A snapshot job is still running on this VM; try again when it ends"
|
||||
msgstr ""
|
||||
"Bu sanal makinede hâlâ bir anlık görüntü işi çalışıyor; bittiğinde tekrar "
|
||||
"deneyin"
|
||||
|
||||
#: vrtManager/instance.py:2302
|
||||
#: vrtManager/instance.py:2303
|
||||
msgid "Shut the VM down to revert to an internal snapshot"
|
||||
msgstr "Dahili bir anlık görüntüye geri dönmek için sanal makineyi kapatın"
|
||||
|
||||
#: vrtManager/instance.py:2391
|
||||
#: vrtManager/instance.py:2392
|
||||
msgid "Cannot clone a VM whose NVRAM is not a file"
|
||||
msgstr "NVRAM'i dosya olmayan bir sanal makine klonlanamaz"
|
||||
|
||||
#: vrtManager/instance.py:2459
|
||||
#: vrtManager/instance.py:2460
|
||||
#, python-format
|
||||
msgid "Clone failed (%(err)s); remove these copies by hand: %(path)s"
|
||||
msgstr ""
|
||||
"Klonlama başarısız oldu (%(err)s); bu kopyaları elle kaldırın: %(path)s"
|
||||
|
||||
#: vrtManager/instance.py:2469
|
||||
#: vrtManager/instance.py:2470
|
||||
msgid "Shut the VM down before cloning it"
|
||||
msgstr "Klonlamadan önce sanal makineyi kapatın"
|
||||
|
||||
#: vrtManager/instance.py:2523
|
||||
#: vrtManager/instance.py:2524
|
||||
#, python-format
|
||||
msgid "Clone failed (%(err)s); remove these copies by hand: %(leftovers)s"
|
||||
msgstr ""
|
||||
"Klonlama başarısız oldu (%(err)s); bu kopyaları elle kaldırın: %(leftovers)s"
|
||||
|
||||
#: vrtManager/instance.py:2534
|
||||
#: vrtManager/instance.py:2535
|
||||
msgid "Live clone needs libvirt 11.10 or later; shut the VM down to clone it"
|
||||
msgstr ""
|
||||
"Canlı klonlama libvirt 11.10 veya sonrasını gerektirir; klonlamak için sanal "
|
||||
"makineyi kapatın"
|
||||
|
||||
#: vrtManager/instance.py:2537
|
||||
#: vrtManager/instance.py:2538
|
||||
msgid "A VM with a TPM is cloned only shut down"
|
||||
msgstr "TPM'i olan bir sanal makine yalnızca kapalıyken klonlanır"
|
||||
|
||||
#: vrtManager/instance.py:2540
|
||||
#: vrtManager/instance.py:2541
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s is not a local file; shut the VM down to clone it"
|
||||
msgstr ""
|
||||
"Disk %(dev)s yerel bir dosya değil; klonlamak için sanal makineyi kapatın"
|
||||
|
||||
#: vrtManager/instance.py:2542
|
||||
#: vrtManager/instance.py:2543
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s is shareable; shut the VM down to clone it"
|
||||
msgstr "Disk %(dev)s paylaşılabilir; klonlamak için sanal makineyi kapatın"
|
||||
|
||||
#: vrtManager/instance.py:2547
|
||||
#: vrtManager/instance.py:2548
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s changes at the next start; shut the VM down to clone it"
|
||||
msgstr ""
|
||||
"Disk %(dev)s sonraki başlatmada değişiyor; klonlamak için sanal makineyi "
|
||||
"kapatın"
|
||||
|
||||
#: vrtManager/instance.py:2549
|
||||
#: vrtManager/instance.py:2550
|
||||
msgid "Another job is running on the VM; clone it when that ends"
|
||||
msgstr "Sanal makinede başka bir iş çalışıyor; o bittiğinde klonlayın"
|
||||
|
||||
#: vrtManager/instance.py:2562
|
||||
#: vrtManager/instance.py:2563
|
||||
#, python-format
|
||||
msgid "Volume %(name)s already exists in storage pool %(pool)s"
|
||||
msgstr "%(name)s birimi %(pool)s depolama havuzunda zaten var"
|
||||
|
||||
#: vrtManager/instance.py:2581
|
||||
#: vrtManager/instance.py:2582
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Storage pool %(pool)s has %(free).1f GiB free; the clone needs %(size).1f GiB"
|
||||
|
|
@ -9321,20 +9299,20 @@ msgstr ""
|
|||
"gerektiriyor (kopyalanan diskler, artı bunların %%%(percent)g kadarı, en az "
|
||||
"%(minimum)g GiB)"
|
||||
|
||||
#: vrtManager/instance.py:2720
|
||||
#: vrtManager/instance.py:2721
|
||||
msgid "A network interface that is a host device is removed in the XML editor"
|
||||
msgstr "Sunucu aygıtı olan bir ağ arabirimi XML düzenleyicide kaldırılır"
|
||||
|
||||
#: vrtManager/instance.py:2736
|
||||
#: vrtManager/instance.py:2737
|
||||
#, python-format
|
||||
msgid "No network interface with MAC %(old_mac)s"
|
||||
msgstr "MAC adresi %(old_mac)s olan ağ arabirimi yok"
|
||||
|
||||
#: vrtManager/instance.py:2739
|
||||
#: vrtManager/instance.py:2740
|
||||
msgid "A network interface that is a host device is changed in the XML editor"
|
||||
msgstr "Sunucu aygıtı olan bir ağ arabirimi XML düzenleyicide değiştirilir"
|
||||
|
||||
#: vrtManager/instance.py:2830
|
||||
#: vrtManager/instance.py:2831
|
||||
msgid ""
|
||||
"A VM changes its PCI devices while it runs, or is shut off without a saved "
|
||||
"state"
|
||||
|
|
@ -9342,14 +9320,14 @@ msgstr ""
|
|||
"Sanal makine PCI aygıtlarını çalışırken veya kaydedilmiş durumu olmadan "
|
||||
"kapalıyken değiştirir"
|
||||
|
||||
#: vrtManager/instance.py:2842
|
||||
#: vrtManager/instance.py:2843
|
||||
#, python-format
|
||||
msgid "%(err)s; whether the VM has PCI device %(address)s now is not known"
|
||||
msgstr ""
|
||||
"%(err)s; sanal makinede şu anda %(address)s PCI aygıtının olup olmadığı "
|
||||
"bilinmiyor"
|
||||
|
||||
#: vrtManager/instance.py:2844
|
||||
#: vrtManager/instance.py:2845
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the VM is not running, its next start has it"
|
||||
|
|
@ -9357,7 +9335,7 @@ msgstr ""
|
|||
"%(err)s; PCI aygıtı %(address)s: sanal makine çalışmıyor, sonraki başlatmada "
|
||||
"var"
|
||||
|
||||
#: vrtManager/instance.py:2846
|
||||
#: vrtManager/instance.py:2847
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the VM is not running, its next start does "
|
||||
|
|
@ -9366,7 +9344,7 @@ msgstr ""
|
|||
"%(err)s; PCI aygıtı %(address)s: sanal makine çalışmıyor, sonraki başlatmada "
|
||||
"yok"
|
||||
|
||||
#: vrtManager/instance.py:2847
|
||||
#: vrtManager/instance.py:2848
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM has it, its next start has it"
|
||||
|
|
@ -9374,7 +9352,7 @@ msgstr ""
|
|||
"%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede var, sonraki "
|
||||
"başlatmada var"
|
||||
|
||||
#: vrtManager/instance.py:2849
|
||||
#: vrtManager/instance.py:2850
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM has it, its next start does "
|
||||
|
|
@ -9383,7 +9361,7 @@ msgstr ""
|
|||
"%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede var, sonraki "
|
||||
"başlatmada yok"
|
||||
|
||||
#: vrtManager/instance.py:2851
|
||||
#: vrtManager/instance.py:2852
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM does not have it, its next "
|
||||
|
|
@ -9392,7 +9370,7 @@ msgstr ""
|
|||
"%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede yok, sonraki "
|
||||
"başlatmada var"
|
||||
|
||||
#: vrtManager/instance.py:2853
|
||||
#: vrtManager/instance.py:2854
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM does not have it, its next "
|
||||
|
|
@ -9401,29 +9379,29 @@ msgstr ""
|
|||
"%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede yok, sonraki "
|
||||
"başlatmada yok"
|
||||
|
||||
#: vrtManager/instance.py:2887
|
||||
#: vrtManager/instance.py:2888
|
||||
#, python-format
|
||||
msgid "The VM has no PCI device %(address)s"
|
||||
msgstr "Sanal makinede %(address)s PCI aygıtı yok"
|
||||
|
||||
#: vrtManager/instance.py:2905
|
||||
#: vrtManager/instance.py:2906
|
||||
msgid "The VM has no USB controller"
|
||||
msgstr "Sanal makinede USB denetleyicisi yok"
|
||||
|
||||
#: vrtManager/instance.py:2924
|
||||
#: vrtManager/instance.py:2925
|
||||
msgid "The VM has no such USB device"
|
||||
msgstr "Sanal makinede böyle bir USB aygıtı yok"
|
||||
|
||||
#: vrtManager/instance.py:2965
|
||||
#: vrtManager/instance.py:2966
|
||||
msgid "The VM has its own RNG device: change it in the XML editor"
|
||||
msgstr ""
|
||||
"Sanal makinenin kendi RNG aygıtı var: bunu XML düzenleyicide değiştirin"
|
||||
|
||||
#: vrtManager/instance.py:2992
|
||||
#: vrtManager/instance.py:2993
|
||||
msgid "The VM has its own TPM: change it in the XML editor"
|
||||
msgstr "Sanal makinenin kendi TPM'i var: bunu XML düzenleyicide değiştirin"
|
||||
|
||||
#: vrtManager/instance.py:3011
|
||||
#: vrtManager/instance.py:3012
|
||||
#, python-format
|
||||
msgid "Unknown crash action %(action)s"
|
||||
msgstr "Bilinmeyen çökme eylemi %(action)s"
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-11-03 17:31+0000\n"
|
||||
"POT-Creation-Date: 2026-11-03 19:32+0000\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -226,8 +226,6 @@ msgstr "添加虚拟机"
|
|||
#: instances/templates/allinstances_index_nongrouped.html:8
|
||||
#: instances/templates/create_steps.html:6
|
||||
#: instances/templates/create_steps.html:8
|
||||
#: instances/templates/instances/resize_tab.html:35
|
||||
#: instances/templates/instances/resize_tab.html:134
|
||||
#: operations/templates/operations/jobs.html:24
|
||||
msgid "Host"
|
||||
msgstr "主机"
|
||||
|
|
@ -692,7 +690,6 @@ msgstr "成员"
|
|||
#: computes/templates/computes/form.html:46
|
||||
#: instances/templates/instances/edit_instance_volume.html:112
|
||||
#: instances/templates/instances/nic_qos_form.html:23
|
||||
#: instances/templates/instances/resize_tab.html:114
|
||||
#: instances/templates/instances/settings_tab.html:410
|
||||
#: instances/templates/instances/settings_tab.html:644
|
||||
#: instances/templates/instances/settings_tab.html:893
|
||||
|
|
@ -1602,6 +1599,7 @@ msgstr "新建虚拟机默认值"
|
|||
|
||||
#: appsettings/views.py:40 instances/templates/instance.html:64
|
||||
#: instances/templates/instances/destroy_instance_form.html:32
|
||||
#: instances/templates/instances/resize_tab.html:20
|
||||
#: instances/templates/instances/settings_tab.html:197
|
||||
msgid "Disks"
|
||||
msgstr "磁盘"
|
||||
|
|
@ -2005,7 +2003,7 @@ msgstr "VCPU"
|
|||
#: instances/templates/allinstances_index_nongrouped.html:15
|
||||
#: instances/templates/create_inst_block.html:33
|
||||
#: instances/templates/instance.html:60
|
||||
#: instances/templates/instances/resize_tab.html:15
|
||||
#: instances/templates/instances/resize_tab.html:17
|
||||
#: instances/templates/instances/stats_tab.html:34
|
||||
msgid "Memory"
|
||||
msgstr "内存"
|
||||
|
|
@ -2061,6 +2059,7 @@ msgstr "共 %(memory)s"
|
|||
#: instances/forms.py:15 instances/templates/allinstances_index_grouped.html:16
|
||||
#: instances/templates/allinstances_index_nongrouped.html:14
|
||||
#: instances/templates/create_instance_w2.html:63
|
||||
#: instances/templates/instances/resize_tab.html:29
|
||||
#: instances/templates/instances/settings_tab.html:840
|
||||
msgid "vCPUs"
|
||||
msgstr "vCPU"
|
||||
|
|
@ -2621,7 +2620,7 @@ msgstr "虚拟机未定义;请检查这些卷,然后处理此任务:%(volu
|
|||
msgid "Delete snapshot"
|
||||
msgstr "删除快照"
|
||||
|
||||
#: instances/jobs.py:304 vrtManager/instance.py:2280
|
||||
#: instances/jobs.py:304 vrtManager/instance.py:2281
|
||||
#, python-format
|
||||
msgid "The VM has no external snapshot named %(name)s"
|
||||
msgstr "虚拟机没有名为 %(name)s 的外部快照"
|
||||
|
|
@ -2653,7 +2652,7 @@ msgstr "虚拟机已不在运行该任务的计算节点上"
|
|||
msgid "Take snapshot"
|
||||
msgstr "创建快照"
|
||||
|
||||
#: instances/jobs.py:372 vrtManager/instance.py:1876
|
||||
#: instances/jobs.py:372 vrtManager/instance.py:1877
|
||||
#, python-format
|
||||
msgid "A snapshot named %(name)s already exists"
|
||||
msgstr "名为 %(name)s 的快照已存在"
|
||||
|
|
@ -2810,7 +2809,7 @@ msgstr "cloud-init 种子需要为磁盘使用目录类型的存储池"
|
|||
msgid "This host offers no firmware %(firmware)s"
|
||||
msgstr "此主机不提供固件 %(firmware)s"
|
||||
|
||||
#: instances/jobs.py:775 vrtManager/instance.py:2999
|
||||
#: instances/jobs.py:775 vrtManager/instance.py:3000
|
||||
msgid "This host offers no TPM 2.0: install swtpm on it"
|
||||
msgstr "此主机不提供 TPM 2.0:请在主机上安装 swtpm"
|
||||
|
||||
|
|
@ -2922,67 +2921,66 @@ msgstr "创建时间"
|
|||
msgid "drbd"
|
||||
msgstr "drbd"
|
||||
|
||||
#: instances/models.py:226 instances/templates/create_instance_w2.html:118
|
||||
#: instances/templates/instances/resize_tab.html:20
|
||||
#: instances/models.py:237 instances/templates/create_instance_w2.html:118
|
||||
#: instances/templates/instances/settings_tab.html:25
|
||||
#: instances/templates/instances/stats_tab.html:51
|
||||
msgid "Disk"
|
||||
msgstr "磁盘"
|
||||
|
||||
#: instances/models.py:228 instances/templates/create_instance_w2.html:312
|
||||
#: instances/models.py:239 instances/templates/create_instance_w2.html:312
|
||||
#: instances/templates/instances/settings_tab.html:159
|
||||
msgid "CD-ROM"
|
||||
msgstr "CD-ROM"
|
||||
|
||||
#: instances/models.py:230
|
||||
#: instances/models.py:241
|
||||
msgid "NIC"
|
||||
msgstr "网卡"
|
||||
|
||||
#: instances/models.py:403
|
||||
#: instances/models.py:414
|
||||
msgid "Live"
|
||||
msgstr "在线"
|
||||
|
||||
#: instances/models.py:404
|
||||
#: instances/models.py:415
|
||||
msgid "Offline"
|
||||
msgstr "离线"
|
||||
|
||||
#: instances/models.py:405
|
||||
#: instances/models.py:416
|
||||
msgid "Auto Converge"
|
||||
msgstr "自动收敛"
|
||||
|
||||
#: instances/models.py:406
|
||||
#: instances/models.py:417
|
||||
msgid "Compress"
|
||||
msgstr "压缩"
|
||||
|
||||
#: instances/models.py:407
|
||||
#: instances/models.py:418
|
||||
msgid "Unsafe"
|
||||
msgstr "不安全"
|
||||
|
||||
#: instances/models.py:419
|
||||
#: instances/models.py:430
|
||||
msgid "No Virtual Machine name has been entered"
|
||||
msgstr "未输入虚拟机名称"
|
||||
|
||||
#: instances/models.py:425
|
||||
#: instances/models.py:436
|
||||
msgid "No VCPU has been entered"
|
||||
msgstr "未输入 vCPU"
|
||||
|
||||
#: instances/models.py:431
|
||||
#: instances/models.py:442
|
||||
msgid "No RAM size has been entered"
|
||||
msgstr "未输入内存大小"
|
||||
|
||||
#: instances/models.py:435
|
||||
#: instances/models.py:446
|
||||
msgid "No Network pool has been choosen"
|
||||
msgstr "未选择网络池"
|
||||
|
||||
#: instances/models.py:443
|
||||
#: instances/models.py:454
|
||||
msgid "Please select HDD cache mode"
|
||||
msgstr "请选择硬盘缓存模式"
|
||||
|
||||
#: instances/models.py:455
|
||||
#: instances/models.py:466
|
||||
msgid "Please select a video driver"
|
||||
msgstr "请选择显卡驱动"
|
||||
|
||||
#: instances/models.py:492
|
||||
#: instances/models.py:503
|
||||
msgid "Can access console without password"
|
||||
msgstr "可无密码访问控制台"
|
||||
|
||||
|
|
@ -3372,7 +3370,7 @@ msgstr "选择运行虚拟机的主机。"
|
|||
|
||||
#: instances/templates/create_inst_block.html:23
|
||||
#: instances/templates/instance.html:56
|
||||
#: instances/templates/instances/resize_tab.html:10
|
||||
#: instances/templates/instances/resize_tab.html:14
|
||||
#: instances/templates/instances/stats_tab.html:27
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
|
@ -4310,163 +4308,135 @@ msgstr "强制关闭"
|
|||
msgid "Power Cycle"
|
||||
msgstr "电源重置"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:33
|
||||
msgid "CPU allocation"
|
||||
msgstr "CPU 分配"
|
||||
#: instances/templates/instances/resize_tab.html:8
|
||||
msgid "You don't have permission for resizing instance"
|
||||
msgstr "您没有调整虚拟机配置的权限"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:34
|
||||
#, python-format
|
||||
msgid "Now %(cur)s of %(max)s vCPUs."
|
||||
msgstr "当前 %(cur)s / %(max)s 个 vCPU。"
|
||||
#: instances/templates/instances/resize_tab.html:12
|
||||
msgid "Resources to resize"
|
||||
msgstr "可调整的资源"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:35
|
||||
msgid "on, turn off"
|
||||
msgstr "已开启,点击关闭"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:37
|
||||
msgid "off, turn on"
|
||||
msgstr "已关闭,点击开启"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:41
|
||||
msgid "on"
|
||||
msgstr "已开启"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:41
|
||||
msgid "off"
|
||||
msgstr "已关闭"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:45
|
||||
#, python-format
|
||||
msgid "%(count)s logical CPUs"
|
||||
msgstr "%(count)s 个逻辑 CPU"
|
||||
msgid "%(cur)s on, up to %(max)s"
|
||||
msgstr "已开启 %(cur)s 个,最多 %(max)s 个"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:39
|
||||
#: instances/templates/instances/resize_tab.html:138
|
||||
msgid "The VM gets these at its next start."
|
||||
msgstr "虚拟机会在下次启动时获得这些设置。"
|
||||
#: instances/templates/instances/resize_tab.html:46
|
||||
#, python-format
|
||||
msgid "Host: %(count)s logical CPUs"
|
||||
msgstr "主机:%(count)s 个逻辑 CPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:40
|
||||
msgid "Shut the VM down to change its vCPUs."
|
||||
msgstr "请将虚拟机关机后再更改其 vCPU。"
|
||||
#: instances/templates/instances/resize_tab.html:49
|
||||
msgid "Click a vCPU to turn it on or off now; the next start keeps it so."
|
||||
msgstr "点击某个 vCPU 可立即开启或关闭它;下次启动时保持该状态。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:40
|
||||
msgid "While it runs, turn vCPUs on and off below."
|
||||
msgstr "运行期间,可在下方开启或关闭 vCPU。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:44
|
||||
msgid "Current vCPUs"
|
||||
msgstr "当前 vCPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:52
|
||||
msgid "Maximum vCPUs"
|
||||
msgstr "最大 vCPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:61
|
||||
msgid "Resize CPU"
|
||||
msgstr "调整 CPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:70
|
||||
msgid "Live vCPUs"
|
||||
msgstr "在线 vCPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:72
|
||||
msgid "Turn a vCPU on or off now; the next start keeps it so. vCPU 0 stays on."
|
||||
msgstr "立即开启或关闭某个 vCPU;下次启动时保持该状态。vCPU 0 始终开启。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:73
|
||||
#: instances/templates/instances/resize_tab.html:49
|
||||
msgid "A paused VM cannot let one go: resume it to turn vCPUs off."
|
||||
msgstr "已暂停的虚拟机无法释放 vCPU:请先恢复它再关闭 vCPU。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:82
|
||||
#, python-format
|
||||
msgid "%(id)s · Fixed"
|
||||
msgstr "%(id)s · 固定"
|
||||
#: instances/templates/instances/resize_tab.html:54
|
||||
msgid "Current"
|
||||
msgstr "当前"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:84
|
||||
#, python-format
|
||||
msgid "%(id)s · On"
|
||||
msgstr "%(id)s · 开启"
|
||||
#: instances/templates/instances/resize_tab.html:60
|
||||
msgid "Maximum"
|
||||
msgstr "最大"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:84
|
||||
msgid "turn off"
|
||||
msgstr "关闭"
|
||||
#: instances/templates/instances/resize_tab.html:66
|
||||
msgid "Resize CPU"
|
||||
msgstr "调整 CPU"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:86
|
||||
#, python-format
|
||||
msgid "%(id)s · Off"
|
||||
msgstr "%(id)s · 关闭"
|
||||
#: instances/templates/instances/resize_tab.html:69
|
||||
#: instances/templates/instances/resize_tab.html:101
|
||||
msgid "The VM gets these at its next start."
|
||||
msgstr "虚拟机会在下次启动时获得这些设置。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:86
|
||||
msgid "turn on"
|
||||
msgstr "开启"
|
||||
#: instances/templates/instances/resize_tab.html:69
|
||||
msgid "Shut the VM down to change its vCPUs."
|
||||
msgstr "请将虚拟机关机后再更改其 vCPU。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:99
|
||||
#: instances/templates/instances/resize_tab.html:75
|
||||
msgid "vCPU hot plug"
|
||||
msgstr "vCPU 热插拔"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:101
|
||||
#: instances/templates/instances/resize_tab.html:77
|
||||
msgid "Lets vCPUs up to the maximum be turned on and off while the VM runs."
|
||||
msgstr "允许在虚拟机运行时开启或关闭不超过最大数量的 vCPU。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:102
|
||||
#: instances/templates/instances/resize_tab.html:77
|
||||
#: instances/templates/instances/settings_tab.html:913
|
||||
msgid "Shut the VM down to change this."
|
||||
msgstr "请先关闭虚拟机再修改此项。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:109
|
||||
#: instances/templates/instances/settings_tab.html:1020
|
||||
msgid "Enabled"
|
||||
msgstr "已启用"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:110
|
||||
#: instances/templates/instances/settings_tab.html:1021
|
||||
msgid "Disabled"
|
||||
msgstr "已禁用"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:123
|
||||
#: instances/templates/instances/resize_tab.html:160
|
||||
#: instances/templates/instances/resize_tab.html:201
|
||||
msgid "You don't have permission for resizing instance"
|
||||
msgstr "您没有调整虚拟机配置的权限"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:132
|
||||
msgid "Memory allocation"
|
||||
msgstr "内存分配"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:133
|
||||
#: instances/templates/instances/resize_tab.html:84
|
||||
#, python-format
|
||||
msgid "Now %(cur)s MiB of maximum %(max)s MiB."
|
||||
msgstr "当前 %(cur)s MiB,最大 %(max)s MiB。"
|
||||
msgid "%(cur)s MiB of %(max)s MiB"
|
||||
msgstr "%(cur)s MiB / %(max)s MiB"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:134
|
||||
#: instances/templates/instances/resize_tab.html:85
|
||||
#, python-format
|
||||
msgid "%(total)s memory"
|
||||
msgstr "%(total)s 内存"
|
||||
msgid "Host: %(total)s"
|
||||
msgstr "主机:%(total)s"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:139
|
||||
#: instances/templates/instances/resize_tab.html:89
|
||||
msgid "Current (MiB)"
|
||||
msgstr "当前(MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:93
|
||||
msgid "Maximum (MiB)"
|
||||
msgstr "最大(MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:98
|
||||
msgid "Resize memory"
|
||||
msgstr "调整内存"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:101
|
||||
msgid ""
|
||||
"The current memory changes now, up to the maximum; shut the VM down to change"
|
||||
" the maximum."
|
||||
msgstr "当前内存可立即调整,但不能超过最大值;修改最大值需先关闭虚拟机。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:143
|
||||
msgid "Current memory (MiB)"
|
||||
msgstr "当前内存(MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:147
|
||||
msgid "Maximum memory (MiB)"
|
||||
msgstr "最大内存(MiB)"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:153
|
||||
msgid "Resize memory"
|
||||
msgstr "调整内存"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:169
|
||||
#: instances/templates/instances/resize_tab.html:191
|
||||
#: instances/templates/instances/resize_tab.html:193
|
||||
msgid "Grow disks"
|
||||
msgstr "扩容磁盘"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:170
|
||||
#: instances/templates/instances/resize_tab.html:104
|
||||
msgid ""
|
||||
"A new size in GiB, larger than the disk's; empty keeps a disk as it is. Disks"
|
||||
" grow while the VM runs; the guest then grows its partition and file system."
|
||||
msgstr "新大小(GiB),须大于磁盘当前大小;留空则保持不变。磁盘可在虚拟机运行时扩容,之后由客户机扩展其分区和文件系统。"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:178
|
||||
#: instances/templates/instances/resize_tab.html:110
|
||||
#: instances/templates/instances/settings_tab.html:211
|
||||
msgid "Error getting disk info"
|
||||
msgstr "获取磁盘信息出错"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:180
|
||||
#: instances/templates/instances/resize_tab.html:112
|
||||
#, python-format
|
||||
msgid "Now %(size)s"
|
||||
msgstr "当前 %(size)s"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:115
|
||||
msgid "New size"
|
||||
msgstr "新大小"
|
||||
|
||||
#: instances/templates/instances/resize_tab.html:124
|
||||
#: instances/templates/instances/resize_tab.html:126
|
||||
msgid "Grow disks"
|
||||
msgstr "扩容磁盘"
|
||||
|
||||
#: instances/templates/instances/settings_tab.html:20
|
||||
msgid "Boot"
|
||||
msgstr "启动"
|
||||
|
|
@ -5255,6 +5225,14 @@ msgstr "虚拟机未运行"
|
|||
msgid "No channel"
|
||||
msgstr "无通道"
|
||||
|
||||
#: instances/templates/instances/settings_tab.html:1020
|
||||
msgid "Enabled"
|
||||
msgstr "已启用"
|
||||
|
||||
#: instances/templates/instances/settings_tab.html:1021
|
||||
msgid "Disabled"
|
||||
msgstr "已禁用"
|
||||
|
||||
#: instances/templates/instances/snapshots_tab.html:11
|
||||
msgid "Snapshots"
|
||||
msgstr "快照"
|
||||
|
|
@ -8538,116 +8516,116 @@ msgid ""
|
|||
"with '.'"
|
||||
msgstr "快照名称为 1-64 个字母、数字、'.'、'_' 或 '-',且不能以 '.' 开头"
|
||||
|
||||
#: vrtManager/instance.py:1076
|
||||
#: vrtManager/instance.py:1077
|
||||
msgid ""
|
||||
"A device other than a disk or NIC is in the boot order: change it in the XML "
|
||||
"editor"
|
||||
msgstr "启动顺序中有磁盘或网卡以外的设备:请在 XML 编辑器中修改"
|
||||
|
||||
#: vrtManager/instance.py:1088
|
||||
#: vrtManager/instance.py:1089
|
||||
msgid "Invalid Device Type for boot order"
|
||||
msgstr "启动顺序的设备类型无效"
|
||||
|
||||
#: vrtManager/instance.py:1091
|
||||
#: vrtManager/instance.py:1092
|
||||
#, python-format
|
||||
msgid "Boot device %(dev)s is not in the definition"
|
||||
msgstr "启动设备 %(dev)s 不在定义中"
|
||||
|
||||
#: vrtManager/instance.py:1111
|
||||
#: vrtManager/instance.py:1112
|
||||
#, python-format
|
||||
msgid "CD-ROM %(dev)s is not in the running definition"
|
||||
msgstr "CD-ROM %(dev)s 不在运行中的定义中"
|
||||
|
||||
#: vrtManager/instance.py:1112
|
||||
#: vrtManager/instance.py:1113
|
||||
#, python-format
|
||||
msgid "CD-ROM %(dev)s is not in the persistent definition"
|
||||
msgstr "CD-ROM %(dev)s 不在持久定义中"
|
||||
|
||||
#: vrtManager/instance.py:1124
|
||||
#: vrtManager/instance.py:1125
|
||||
#, python-format
|
||||
msgid "Media of %(dev)s changed in the running VM only: %(err)s"
|
||||
msgstr "%(dev)s 的介质仅在运行中的虚拟机中更改:%(err)s"
|
||||
|
||||
#: vrtManager/instance.py:1135
|
||||
#: vrtManager/instance.py:1136
|
||||
#, python-format
|
||||
msgid "ISO image %(image)s was not found"
|
||||
msgstr "未找到 ISO 镜像 %(image)s"
|
||||
|
||||
#: vrtManager/instance.py:1137
|
||||
#: vrtManager/instance.py:1138
|
||||
#, python-format
|
||||
msgid "ISO image %(image)s is in more than one storage pool"
|
||||
msgstr "ISO 镜像 %(image)s 位于多个存储池中"
|
||||
|
||||
#: vrtManager/instance.py:1244
|
||||
#: vrtManager/instance.py:1245
|
||||
#, python-format
|
||||
msgid "Disk %(target_dev)s is not in the VM's definition"
|
||||
msgstr "磁盘 %(target_dev)s 不在虚拟机的定义中"
|
||||
|
||||
#: vrtManager/instance.py:1372
|
||||
#: vrtManager/instance.py:1373
|
||||
msgid "Please shutdown the instance then try to enable vCPU hotplug"
|
||||
msgstr "请先关闭虚拟机,再启用 vCPU 热插拔"
|
||||
|
||||
#: vrtManager/instance.py:1835
|
||||
#: vrtManager/instance.py:1836
|
||||
msgid ""
|
||||
"The VM has external snapshots; internal snapshots cannot be mixed with them"
|
||||
msgstr "虚拟机有外部快照;内部快照不能与其混用"
|
||||
|
||||
#: vrtManager/instance.py:1867
|
||||
#: vrtManager/instance.py:1868
|
||||
msgid "A snapshot with memory is not quiesced; it keeps the whole guest state"
|
||||
msgstr "含内存的快照不会静默文件系统;它保存整个客户机状态"
|
||||
|
||||
#: vrtManager/instance.py:1869
|
||||
#: vrtManager/instance.py:1870
|
||||
msgid "Only a running VM's file systems can be frozen"
|
||||
msgstr "只有运行中的虚拟机的文件系统可以冻结"
|
||||
|
||||
#: vrtManager/instance.py:1871
|
||||
#: vrtManager/instance.py:1872
|
||||
msgid "The QEMU guest agent is not connected; it freezes the file systems"
|
||||
msgstr "QEMU 客户机代理未连接;文件系统由它冻结"
|
||||
|
||||
#: vrtManager/instance.py:1874
|
||||
#: vrtManager/instance.py:1875
|
||||
msgid ""
|
||||
"The VM has internal snapshots; external snapshots cannot be mixed with them"
|
||||
msgstr "虚拟机有内部快照;外部快照不能与其混用"
|
||||
|
||||
#: vrtManager/instance.py:1879
|
||||
#: vrtManager/instance.py:1880
|
||||
msgid "Newer snapshots exist after the last revert; delete them first"
|
||||
msgstr "上次还原后存在更新的快照;请先删除它们"
|
||||
|
||||
#: vrtManager/instance.py:1882
|
||||
#: vrtManager/instance.py:1883
|
||||
msgid "No snapshot is current; revert to a snapshot first"
|
||||
msgstr "没有当前快照;请先还原到某个快照"
|
||||
|
||||
#: vrtManager/instance.py:1888
|
||||
#: vrtManager/instance.py:1889
|
||||
#, python-format
|
||||
msgid "Eject the media from %(dev)s first"
|
||||
msgstr "请先弹出 %(dev)s 中的介质"
|
||||
|
||||
#: vrtManager/instance.py:1890
|
||||
#: vrtManager/instance.py:1891
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s is not a file; external snapshots need file disks"
|
||||
msgstr "磁盘 %(dev)s 不是文件;外部快照需要文件磁盘"
|
||||
|
||||
#: vrtManager/instance.py:1898
|
||||
#: vrtManager/instance.py:1899
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The storage pools could not be refreshed, so their free space is unknown: "
|
||||
"%(err)s"
|
||||
msgstr "无法刷新存储池,其可用空间未知:%(err)s"
|
||||
|
||||
#: vrtManager/instance.py:1919
|
||||
#: vrtManager/instance.py:1920
|
||||
msgid "Memory is saved only from a running VM"
|
||||
msgstr "只能保存运行中的虚拟机的内存"
|
||||
|
||||
#: vrtManager/instance.py:1921
|
||||
#: vrtManager/instance.py:1922
|
||||
msgid "The VM has no disk to keep its memory next to"
|
||||
msgstr "虚拟机没有可存放其内存的磁盘"
|
||||
|
||||
#: vrtManager/instance.py:1925
|
||||
#: vrtManager/instance.py:1926
|
||||
#, python-format
|
||||
msgid "%(disk)s is not in a storage pool; memory is saved only into one"
|
||||
msgstr "%(disk)s 不在存储池中;内存只能保存到存储池中"
|
||||
|
||||
#: vrtManager/instance.py:1956
|
||||
#: vrtManager/instance.py:1957
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Storage pool %(pool)s has %(free).1f GiB free; the snapshot needs %(size).1f "
|
||||
|
|
@ -8657,156 +8635,156 @@ msgstr ""
|
|||
"存储池 %(pool)s 可用 %(free).1f GiB;快照需要 %(size).1f GiB(其中虚拟机磁盘的 %(percent)g%%,至少 "
|
||||
"%(minimum)g GiB,若保存内存则另加内存)"
|
||||
|
||||
#: vrtManager/instance.py:1974
|
||||
#: vrtManager/instance.py:1975
|
||||
msgid ""
|
||||
"This snapshot was taken by an older version on a UEFI VM and cannot be "
|
||||
"reverted; delete it instead"
|
||||
msgstr "此快照由旧版本在 UEFI 虚拟机上创建,无法还原;请将其删除"
|
||||
|
||||
#: vrtManager/instance.py:2004
|
||||
#: vrtManager/instance.py:2005
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The revert failed twice; try again in a moment (%(error)s). The VM is "
|
||||
"running."
|
||||
msgstr "还原两次失败;请稍后重试(%(error)s)。虚拟机正在运行。"
|
||||
|
||||
#: vrtManager/instance.py:2006
|
||||
#: vrtManager/instance.py:2007
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The revert failed twice; try again in a moment (%(error)s). The VM is shut "
|
||||
"off."
|
||||
msgstr "还原两次失败;请稍后重试(%(error)s)。虚拟机已关机。"
|
||||
|
||||
#: vrtManager/instance.py:2169
|
||||
#: vrtManager/instance.py:2170
|
||||
msgid "A disk moves when its VM is defined and running, paused or shut off"
|
||||
msgstr "仅当虚拟机已定义且处于运行、暂停或关机状态时才能移动磁盘"
|
||||
|
||||
#: vrtManager/instance.py:2171
|
||||
#: vrtManager/instance.py:2172
|
||||
msgid ""
|
||||
"A disk of a VM with snapshots, a saved state or a running block job does not "
|
||||
"move"
|
||||
msgstr "有快照、保存的状态或正在运行块任务的虚拟机的磁盘不能移动"
|
||||
|
||||
#: vrtManager/instance.py:2179
|
||||
#: vrtManager/instance.py:2180
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(dev)s is not a disk file of the VM, the same in its running and next "
|
||||
"start's definition"
|
||||
msgstr "%(dev)s 不是该虚拟机在运行中的定义和下次启动定义中相同的磁盘文件"
|
||||
|
||||
#: vrtManager/instance.py:2184
|
||||
#: vrtManager/instance.py:2185
|
||||
#, python-format
|
||||
msgid "%(dev)s does not move: only writable raw and qcow2 disks do"
|
||||
msgstr "%(dev)s 不能移动:只能移动可写的 raw 和 qcow2 磁盘"
|
||||
|
||||
#: vrtManager/instance.py:2191
|
||||
#: vrtManager/instance.py:2192
|
||||
#, python-format
|
||||
msgid "%(dev)s does not move: no storage pool has %(path)s"
|
||||
msgstr "%(dev)s 不能移动:没有存储池包含 %(path)s"
|
||||
|
||||
#: vrtManager/instance.py:2193
|
||||
#: vrtManager/instance.py:2194
|
||||
#, python-format
|
||||
msgid "%(dev)s does not move: it has a backing file"
|
||||
msgstr "%(dev)s 不能移动:它有后备文件"
|
||||
|
||||
#: vrtManager/instance.py:2196
|
||||
#: vrtManager/instance.py:2197
|
||||
#, python-format
|
||||
msgid "%(pool_name)s is not an active pool of disk files of this host"
|
||||
msgstr "%(pool_name)s 不是此主机上活动的磁盘文件存储池"
|
||||
|
||||
#: vrtManager/instance.py:2199
|
||||
#: vrtManager/instance.py:2200
|
||||
#, python-format
|
||||
msgid "%(dev)s is in pool %(pool_name)s already"
|
||||
msgstr "%(dev)s 已在存储池 %(pool_name)s 中"
|
||||
|
||||
#: vrtManager/instance.py:2203
|
||||
#: vrtManager/instance.py:2204
|
||||
#, python-format
|
||||
msgid "Pool %(pool_name)s already has a file %(name)s"
|
||||
msgstr "存储池 %(pool_name)s 中已有文件 %(name)s"
|
||||
|
||||
#: vrtManager/instance.py:2227
|
||||
#: vrtManager/instance.py:2228
|
||||
#, python-format
|
||||
msgid "The copy of %(dev)s ended before it was complete"
|
||||
msgstr "%(dev)s 的复制在完成前结束"
|
||||
|
||||
#: vrtManager/instance.py:2272
|
||||
#: vrtManager/instance.py:2273
|
||||
#, python-format
|
||||
msgid "%(error)s; remove %(dest)s if it is there: %(cleanup_error)s"
|
||||
msgstr "%(error)s;如果 %(dest)s 存在请将其删除:%(cleanup_error)s"
|
||||
|
||||
#: vrtManager/instance.py:2274
|
||||
#: vrtManager/instance.py:2275
|
||||
#, python-format
|
||||
msgid "%(error)s; the VM may use %(dest)s now: check its disk %(dev)s"
|
||||
msgstr "%(error)s;虚拟机现在可能在使用 %(dest)s:请检查其磁盘 %(dev)s"
|
||||
|
||||
#: vrtManager/instance.py:2281
|
||||
#: vrtManager/instance.py:2282
|
||||
#, python-format
|
||||
msgid "The VM has no internal snapshot named %(name)s"
|
||||
msgstr "虚拟机没有名为 %(name)s 的内部快照"
|
||||
|
||||
#: vrtManager/instance.py:2290
|
||||
#: vrtManager/instance.py:2291
|
||||
msgid "The VM has a saved state; start it or remove the saved state first"
|
||||
msgstr "虚拟机有保存的状态;请先启动它或删除保存的状态"
|
||||
|
||||
#: vrtManager/instance.py:2292
|
||||
#: vrtManager/instance.py:2293
|
||||
msgid "A snapshot job is still running on this VM; try again when it ends"
|
||||
msgstr "此虚拟机上仍有快照任务在运行;请在其结束后重试"
|
||||
|
||||
#: vrtManager/instance.py:2302
|
||||
#: vrtManager/instance.py:2303
|
||||
msgid "Shut the VM down to revert to an internal snapshot"
|
||||
msgstr "请关闭虚拟机后再还原到内部快照"
|
||||
|
||||
#: vrtManager/instance.py:2391
|
||||
#: vrtManager/instance.py:2392
|
||||
msgid "Cannot clone a VM whose NVRAM is not a file"
|
||||
msgstr "NVRAM 不是文件的虚拟机无法克隆"
|
||||
|
||||
#: vrtManager/instance.py:2459
|
||||
#: vrtManager/instance.py:2460
|
||||
#, python-format
|
||||
msgid "Clone failed (%(err)s); remove these copies by hand: %(path)s"
|
||||
msgstr "克隆失败(%(err)s);请手动删除这些副本:%(path)s"
|
||||
|
||||
#: vrtManager/instance.py:2469
|
||||
#: vrtManager/instance.py:2470
|
||||
msgid "Shut the VM down before cloning it"
|
||||
msgstr "请先关闭虚拟机再克隆"
|
||||
|
||||
#: vrtManager/instance.py:2523
|
||||
#: vrtManager/instance.py:2524
|
||||
#, python-format
|
||||
msgid "Clone failed (%(err)s); remove these copies by hand: %(leftovers)s"
|
||||
msgstr "克隆失败(%(err)s);请手动删除这些副本:%(leftovers)s"
|
||||
|
||||
#: vrtManager/instance.py:2534
|
||||
#: vrtManager/instance.py:2535
|
||||
msgid "Live clone needs libvirt 11.10 or later; shut the VM down to clone it"
|
||||
msgstr "在线克隆需要 libvirt 11.10 或更高版本;请关闭虚拟机后再克隆"
|
||||
|
||||
#: vrtManager/instance.py:2537
|
||||
#: vrtManager/instance.py:2538
|
||||
msgid "A VM with a TPM is cloned only shut down"
|
||||
msgstr "带 TPM 的虚拟机只能在关机时克隆"
|
||||
|
||||
#: vrtManager/instance.py:2540
|
||||
#: vrtManager/instance.py:2541
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s is not a local file; shut the VM down to clone it"
|
||||
msgstr "磁盘 %(dev)s 不是本地文件;请关闭虚拟机后再克隆"
|
||||
|
||||
#: vrtManager/instance.py:2542
|
||||
#: vrtManager/instance.py:2543
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s is shareable; shut the VM down to clone it"
|
||||
msgstr "磁盘 %(dev)s 是可共享的;请关闭虚拟机后再克隆"
|
||||
|
||||
#: vrtManager/instance.py:2547
|
||||
#: vrtManager/instance.py:2548
|
||||
#, python-format
|
||||
msgid "Disk %(dev)s changes at the next start; shut the VM down to clone it"
|
||||
msgstr "磁盘 %(dev)s 在下次启动时会改变;请关闭虚拟机后再克隆"
|
||||
|
||||
#: vrtManager/instance.py:2549
|
||||
#: vrtManager/instance.py:2550
|
||||
msgid "Another job is running on the VM; clone it when that ends"
|
||||
msgstr "虚拟机上有另一个任务正在运行;请在其结束后再克隆"
|
||||
|
||||
#: vrtManager/instance.py:2562
|
||||
#: vrtManager/instance.py:2563
|
||||
#, python-format
|
||||
msgid "Volume %(name)s already exists in storage pool %(pool)s"
|
||||
msgstr "卷 %(name)s 已存在于存储池 %(pool)s 中"
|
||||
|
||||
#: vrtManager/instance.py:2581
|
||||
#: vrtManager/instance.py:2582
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Storage pool %(pool)s has %(free).1f GiB free; the clone needs %(size).1f GiB"
|
||||
|
|
@ -8815,92 +8793,92 @@ msgstr ""
|
|||
"存储池 %(pool)s 可用 %(free).1f GiB;克隆需要 %(size).1f GiB(复制的磁盘,再加其 %(percent)g%%,至少"
|
||||
" %(minimum)g GiB)"
|
||||
|
||||
#: vrtManager/instance.py:2720
|
||||
#: vrtManager/instance.py:2721
|
||||
msgid "A network interface that is a host device is removed in the XML editor"
|
||||
msgstr "作为主机设备的网络接口需在 XML 编辑器中删除"
|
||||
|
||||
#: vrtManager/instance.py:2736
|
||||
#: vrtManager/instance.py:2737
|
||||
#, python-format
|
||||
msgid "No network interface with MAC %(old_mac)s"
|
||||
msgstr "没有 MAC 为 %(old_mac)s 的网络接口"
|
||||
|
||||
#: vrtManager/instance.py:2739
|
||||
#: vrtManager/instance.py:2740
|
||||
msgid "A network interface that is a host device is changed in the XML editor"
|
||||
msgstr "作为主机设备的网络接口需在 XML 编辑器中修改"
|
||||
|
||||
#: vrtManager/instance.py:2830
|
||||
#: vrtManager/instance.py:2831
|
||||
msgid ""
|
||||
"A VM changes its PCI devices while it runs, or is shut off without a saved "
|
||||
"state"
|
||||
msgstr "虚拟机只能在运行时或无保存的状态的关机时更改其 PCI 设备"
|
||||
|
||||
#: vrtManager/instance.py:2842
|
||||
#: vrtManager/instance.py:2843
|
||||
#, python-format
|
||||
msgid "%(err)s; whether the VM has PCI device %(address)s now is not known"
|
||||
msgstr "%(err)s;虚拟机现在是否有 PCI 设备 %(address)s 未知"
|
||||
|
||||
#: vrtManager/instance.py:2844
|
||||
#: vrtManager/instance.py:2845
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the VM is not running, its next start has it"
|
||||
msgstr "%(err)s;PCI 设备 %(address)s:虚拟机未运行,下次启动时有它"
|
||||
|
||||
#: vrtManager/instance.py:2846
|
||||
#: vrtManager/instance.py:2847
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the VM is not running, its next start does "
|
||||
"not have it"
|
||||
msgstr "%(err)s;PCI 设备 %(address)s:虚拟机未运行,下次启动时没有它"
|
||||
|
||||
#: vrtManager/instance.py:2847
|
||||
#: vrtManager/instance.py:2848
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM has it, its next start has it"
|
||||
msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机有它,下次启动时有它"
|
||||
|
||||
#: vrtManager/instance.py:2849
|
||||
#: vrtManager/instance.py:2850
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM has it, its next start does "
|
||||
"not have it"
|
||||
msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机有它,下次启动时没有它"
|
||||
|
||||
#: vrtManager/instance.py:2851
|
||||
#: vrtManager/instance.py:2852
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM does not have it, its next "
|
||||
"start has it"
|
||||
msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机没有它,下次启动时有它"
|
||||
|
||||
#: vrtManager/instance.py:2853
|
||||
#: vrtManager/instance.py:2854
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(err)s; PCI device %(address)s: the running VM does not have it, its next "
|
||||
"start does not have it"
|
||||
msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机没有它,下次启动时没有它"
|
||||
|
||||
#: vrtManager/instance.py:2887
|
||||
#: vrtManager/instance.py:2888
|
||||
#, python-format
|
||||
msgid "The VM has no PCI device %(address)s"
|
||||
msgstr "虚拟机没有 PCI 设备 %(address)s"
|
||||
|
||||
#: vrtManager/instance.py:2905
|
||||
#: vrtManager/instance.py:2906
|
||||
msgid "The VM has no USB controller"
|
||||
msgstr "虚拟机没有 USB 控制器"
|
||||
|
||||
#: vrtManager/instance.py:2924
|
||||
#: vrtManager/instance.py:2925
|
||||
msgid "The VM has no such USB device"
|
||||
msgstr "虚拟机没有此 USB 设备"
|
||||
|
||||
#: vrtManager/instance.py:2965
|
||||
#: vrtManager/instance.py:2966
|
||||
msgid "The VM has its own RNG device: change it in the XML editor"
|
||||
msgstr "虚拟机有自己的 RNG 设备:请在 XML 编辑器中修改"
|
||||
|
||||
#: vrtManager/instance.py:2992
|
||||
#: vrtManager/instance.py:2993
|
||||
msgid "The VM has its own TPM: change it in the XML editor"
|
||||
msgstr "虚拟机有自己的 TPM:请在 XML 编辑器中修改"
|
||||
|
||||
#: vrtManager/instance.py:3011
|
||||
#: vrtManager/instance.py:3012
|
||||
#, python-format
|
||||
msgid "Unknown crash action %(action)s"
|
||||
msgstr "未知的崩溃操作 %(action)s"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,34 @@ th[aria-sort="ascending"]:not([data-sort-method="none"])::after {
|
|||
/* the access tab's two login buttons line up */
|
||||
.access-act { min-width: 9rem; }
|
||||
|
||||
/* the resize tab: one cell per vCPU up to the maximum, filled when on; memory now within its maximum */
|
||||
.vcpu-cell {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
padding: 0 .4rem;
|
||||
border-radius: var(--bs-border-radius);
|
||||
border: 2px solid var(--bs-primary);
|
||||
background: var(--bs-body-bg);
|
||||
color: var(--bs-primary);
|
||||
font-size: .875rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.vcpu-cell.on { background: var(--bs-primary); color: #fff; }
|
||||
button.vcpu-cell:not(:disabled):hover { box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .25); }
|
||||
button.vcpu-cell:disabled { opacity: .65; }
|
||||
.memory-bar {
|
||||
width: min(18rem, 100%);
|
||||
height: .9rem;
|
||||
border: 2px solid var(--bs-primary);
|
||||
border-radius: var(--bs-border-radius);
|
||||
overflow: hidden;
|
||||
}
|
||||
.memory-bar-now { height: 100%; background: var(--bs-primary); }
|
||||
.resize-act { min-width: 9rem; }
|
||||
|
||||
/* the boot order: the devices the VM tries in turn, numbered and joined by a line */
|
||||
.boot-chain { counter-reset: boot; }
|
||||
.boot-node { position: relative; padding: .5rem 0; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue